0

0

【已部署】利用PaddleX静物物品智能识别并使用Vue前端部署

P粉084495128

P粉084495128

发布时间:2025-07-31 16:11:12

|

414人浏览过

|

来源于php中文网

原创

该项目为涉案人员物品保管制度下的子项目,利用目标检测识别登记常见嫌疑人物品以加快事件处理。其使用3900+张不同条件拍摄的qian包等5类物品数据,按VOC格式标注,经处理后用PaddleX训练YOLOv3模型,导出后部署至服务器,前端Vue、后端Flask,可进行物品检测预测。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

【已部署】利用paddlex静物物品智能识别并使用vue前端部署 - php中文网

项目介绍

在我国的涉案人员物品保管制度 中明确规定:对涉案人员物品进行登记保存、扣押时,需经单位负责人批准,依法填写涉案人员物品登记保存、扣押决定书和涉案人员物品清单后,方可执行。那么,利用目标检测对于常见的嫌疑人物品进行识别登记,是不是可以加快事件处理速度呢,因此该项目发展成为这一整个项目的子项目,并将此子项目部署开源出来。

项目已部署至服务器,可以进行访问:http://ai.sqdxwz.com/

部分时候过载严重,如果无法返回结果请刷新重试或者换个时间使用~

项目实现

数据集介绍【已部署】利用PaddleX静物物品智能识别并使用Vue前端部署 - php中文网         

  • 数据量:3900+
  • 数据种类:qian包,水杯,钥匙,手机,包包

所有数据均为使用不同型号,不同像素,不同角度,不同环境进行拍摄的数据图。数据拍摄包括单个物品,多个物品混合拍摄

立即学习前端免费学习笔记(深入)”;

Insou AI
Insou AI

Insou AI 是一款强大的人工智能助手,旨在帮助你轻松创建引人入胜的内容和令人印象深刻的演示。

下载

训练准备

In [ ]
!pip install paddlex==2.0rc -q
   

本项目使用的静物检测据集已经按VOC格式进行标注,数据集按照如下方式进行组织:

Dataset/ # 目标检测数据集根目录
|--Annotations/ # 标注文件所在目录
|  |--PartA_00000.xml
|  |--PartB_00000.xml
|  |--...
|  |--... 
|--JPEGImages/ # 原图文件所在目录
|  |--PartA_00000.jpg
|  |--PartB_00000.jpg
|  |--...
|  |--...
|
   
In [ ]
# 解压数据集文件夹中!unzip -d ./ data/data96807/DatasetId_190936_1624526988.zip
   
In [ ]
# 清理一下jpeg和xml不匹配问题import os,shutil

jpeg = 'MyDataset/JPEGImages'jpeg_list = os.listdir(jpeg)

anno = 'MyDataset/Annotations'anno_list = os.listdir(anno)for pic in jpeg_list:
    name = pic.split('.')[0]
    anno_name = name + '.xml'
    #print(anno_name)
    if anno_name not in anno_list:
        os.remove(os.path.join(jpeg,pic))
   
In [ ]
# 划分数据集!paddlex --split_dataset --format VOC --dataset_dir MyDataset --val_value 0.2 --test_value 0.1
   
2021-10-25 21:02:25 [INFO]	Dataset split starts...
2021-10-25 21:02:25 [INFO]	Dataset split done.
2021-10-25 21:02:25 [INFO]	Train samples: 714
2021-10-25 21:02:25 [INFO]	Eval samples: 204
2021-10-25 21:02:25 [INFO]	Test samples: 102
2021-10-25 21:02:25 [INFO]	Split files saved in MyDataset
   

使用paddlex命令即可将数据集随机划分成70%训练集,20%验证集和10%测试集:

划分好的数据集会额外生成labels.txt, train_list.txt, val_list.txt, test_list.txt四个文件,之后可直接进行训练。

模型训练

In [ ]
import paddlex as pdxfrom paddlex import transforms
   
In [ ]
train_transforms = transforms.Compose([
    transforms.RandomCrop(crop_size=224),
    transforms.RandomHorizontalFlip(),
    transforms.Normalize()
])
eval_transforms = transforms.Compose([
    transforms.ResizeByShort(short_size=256),
    transforms.CenterCrop(crop_size=224),
    transforms.Normalize()
])
   
In [ ]
# 定义训练和验证所用的数据集# API说明:https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/paddlex/cv/datasets/voc.py#L29train_dataset = pdx.datasets.VOCDetection(
    data_dir='MyDataset',
    file_list='MyDataset/train_list.txt',
    label_list='MyDataset/labels.txt',
    transforms=train_transforms,
    shuffle=True)

eval_dataset = pdx.datasets.VOCDetection(
    data_dir='MyDataset',
    file_list='MyDataset/val_list.txt',
    label_list='MyDataset/labels.txt',
    transforms=eval_transforms,
    shuffle=False)
       
2021-10-25 21:07:21 [INFO]	Starting to read file list from dataset...
2021-10-25 21:07:22 [INFO]	714 samples in file MyDataset/train_list.txt
creating index...
index created!
2021-10-25 21:07:22 [INFO]	Starting to read file list from dataset...
2021-10-25 21:07:22 [INFO]	204 samples in file MyDataset/val_list.txt
creating index...
index created!
       
In [ ]
# 初始化模型,并进行训练# 可使用VisualDL查看训练指标,参考https://github.com/PaddlePaddle/PaddleX/tree/release/2.0-rc/tutorials/train#visualdl可视化训练指标num_classes = len(train_dataset.labels)
model = pdx.models.YOLOv3(num_classes=num_classes, backbone='MobileNetV3_ssld')
   
In [15]
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/paddlex/cv/models/detector.py#L155# 各参数介绍与调整说明:https://paddlex.readthedocs.io/zh_CN/develop/appendix/parameters.htmlmodel.train(
    num_epochs=300,
    train_dataset=train_dataset,
    train_batch_size=8,
    eval_dataset=eval_dataset,
    learning_rate=0.001 / 8,
    warmup_steps=1000,
    warmup_start_lr=0.0,
    save_interval_epochs=20,
    lr_decay_epochs=[216, 243, 275],
    save_dir='output/yolov3_mobilenet')
   

模型导出

模型训练后保存在output文件夹,如果要使用PaddleInference进行部署需要导出成静态图的模型,运行如下命令,会自动在output文件夹下创建一个inference_model的文件夹,用来存放导出后的模型。

In [ ]
!paddlex --export_inference --model_dir=output/yolov3_mobilenet/best_model --save_dir=output/inference_model
   

模型预测

In [ ]
import globimport numpy as npimport threadingimport timeimport randomimport osimport base64import cv2import jsonimport paddlex as pdx# 可以修改为自己图片路径image_name = 'MyDataset/JPEGImages/PartB_00234.jpg' model = pdx.load_model('output/yolov3_mobilenet/best_model')

img = cv2.imread(image_name)
result = model.predict(img)

keep_results = []
areas = []
f = open('result.txt','a')
count = 0for dt in np.array(result):
    cname, bbox, score = dt['category'], dt['bbox'], dt['score']    if score < 0.5:        continue
    keep_results.append(dt)
    count+=1
    f.write(str(dt)+'\n')
    f.write('\n')
    areas.append(bbox[2] * bbox[3])
areas = np.asarray(areas)
sorted_idxs = np.argsort(-areas).tolist()
keep_results = [keep_results[k]                for k in sorted_idxs] if len(keep_results) > 0 else []print(keep_results)print(count)
f.write("the total number is :"+str(int(count)))
f.close()
   
In [ ]
pdx.visualize_detection(image_name, result, threshold=0.5, save_dir='./output/yolov3_mobilenet')
   

服务器部署

  • 前端采用Vue,后端使用Flask:https://github.com/Sharpiless/Yolov5-Flask-VUE
  • 修改Sharpiless后端的app.py的后端处理代码即可
  1. 搭配好服务器的Paddle环境;
  2. 百度个【Python项目部署到服务器上】的相关教程,完成所有部署;

部署预测结果

【已部署】利用PaddleX静物物品智能识别并使用Vue前端部署 - php中文网        

【已部署】利用PaddleX静物物品智能识别并使用Vue前端部署 - php中文网        

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

775

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

684

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

768

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

739

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1445

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

571

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

751

2023.08.11

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

58

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 7.1万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 1.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号