电梯内电瓶车检测全流程

   日期:2023-09-02     浏览:254    

1.项目说明

近年来,电瓶车进楼入户发生的火灾事故屡见不鲜,针对该现象推出了相应的电瓶车入室检测模型,旨在从源头减少这一情况的发生。 针对室内摩托车模型可能会发生的误报情况,采用了额外的图像检索方式实现更为精确的识别。 本案例使用了飞桨目标检测套件PaddleDetection中的picodet模型以及图像识别套件PaddleClas中的轻量级通用识别模型。
2.数据集准备

本案例中picodet的模型数据集为VOC格式(使用labelimg制成),包括21903张电梯中的图片,其中训练集17522张,测试集4381张,皆来自日常的电梯场景中,共有14715个摩托车的框,23058个人的框,3750个自行车的框,由于picodet使用的是coco格式,所以需要将VOC格式转换成coco格式。
生成VOC数据集:使用python的labelimg图像标注工具为原始图片生成对应的标注xml文件作为原始的VOC格式数据集,生成的xml文件格式如下图所示,其中每个object代表框出的每一个对象,object中的name表明对象的名字而bndbox中包含框的具体坐标(左上角以及右下角)。

labelimg生成的xml文件如下图所示:

生成VOC数据集:
完成图片标注后,下一步就是生成数据集,将每个图片与其xml对应起来按比例生成对应的训练集以及测试集.%cd /home/aistudio/data/data128282
!unzip -q picodet_motorcycle.zip生成的数据集文件组织结构为:

├── classify_voc.py
├── picodet_motorcycle
│   ├── Annotations
│   │   ├── 1595214506200933-1604535322-[]-motorcycle.xml
│   │   ├── 1595214506200933-1604542813-[]-motorcycle.xml
│   │   ├── 1595214506200933-1604559538-[]-motorcycle.xml
|   ...
│   ├── ImageSets
│   │   └── Main
│   │       ├── test.txt
│   │       ├── train.txt
│   │       ├── trainval.txt
│   │       └── val.txt
│   └── JPEGImages
│       ├── 1595214506200933-1604535322-[]-motorcycle.jpg
│       ├── 1595214506200933-1604542813-[]-motorcycle.jpg
│       ├── 1595214506200933-1604559538-[]-motorcycle.jpg
│       |   ...
├── picodet_motorcycle.zip
├── prepare_voc_data.py
├── test.txt
└── trainval.txt

训练集与测试集转换:
使用PaddleDetection自带的转换工具以及教程完成数据集的转换。%cd /home/aistudio/work/code
!python x2coco.py --dataset_type voc  --voc_anno_dir /home/aistudio/data/data128282/ --voc_anno_list /home/aistudio/data/data128282/trainval.txt --voc_label_list /home/aistudio/data/data128282/label_list.txt  --voc_out_name voc_train.json
!python x2coco.py --dataset_type voc --voc_anno_dir /home/aistudio/data/data128282/ --voc_anno_list /home/aistudio/data/data128282/test.txt --voc_label_list /home/aistudio/data/data128282/label_list.txt --voc_out_name voc_test.json
%mv voc_test.json /home/aistudio/data/data128282/
%mv voc_train.json /home/aistudio/data/data128282/3.目标检测模型训练

将数据集划分为训练集以及测试集后,使用picodet_lcnet_1_5x_416_coco.yml文件便可以开始训练(该文件在PaddleDetection-release-2.3/configs/picodet/more_config/ 下有样板只需要稍微修改一下)。

预训练模型选用PicoDet_LCNet 1.5x,训练完成后可以进行评估,训练与评估的命令如下。
picodet_lcnet_1_5x_416_coco.yml 文件的内容如下所示:
使用的预训练模型如图:

#安装依赖库
%cd /home/aistudio/work/code/train/
!pip install pycocotools
!pip install faiss-gpu
!pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple  #训练模型,完成后生成在output文件夹下
%cd /home/aistudio/work/code/train/
!python3 train.py -c picodet_lcnet_1_5x_416_coco.yml -o pretrain_weights=https://paddledet.bj.bcebos.com/models/picodet_lcnet_1_5x_416_coco.pdparams   --eval#评估模型
%cd /home/aistudio/work/code/train/
!python3 eval.py -c picodet_lcnet_1_5x_416_coco.yml#如果需要额外导出serving模型,即导出模型时–export_serving_model=true,那么还需要安装paddle_serving的相关包
!pip install paddle-serving-app0.6.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install paddle-serving-client
0.6.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install paddle-serving-server-gpu==0.6.3.post102 -i https://pypi.tuna.tsinghua.edu.cn/simple#导出模型
%cd /home/aistudio/work/code/train/
!python export_model.py  --export_serving_model=true -c picodet_lcnet_1_5x_416_coco.yml --output_dir=./output_inference/导出后会生成serving_server和serving_client文件夹,使用对应的py文件(文件中完成前置处理以及后置处理功能)以及配置文件完成主体检测模型的部署。

上述内容就是使用coco数据集训练一个picodet模型的完整流程

部署方式可以如图:

部署的config.yml文件内容如图所示

部署的web_service.py文件内容如图所示


%cd /home/aistudio/work/code/train/output_inference/picodet_lcnet_1_5x_416_coco/
%mv serving_server/ /home/aistudio/work/code/picodet_lcnet_1_5x_416_coco/
%mv serving_client/ /home/aistudio/work/code/picodet_lcnet_1_5x_416_coco/#模型部署
%cd /home/aistudio/work/code/picodet_lcnet_1_5x_416_coco/
!python3 web_service.py#请求测试
%cd /home/aistudio/work/code/picodet_lcnet_1_5x_416_coco/
!python3 pipeline_http_client.py由于本流程只是教程,因此模型训练只使用了极少部分的数据集以及训练轮次,因此请求不会有任何结果,在实际使用过程中需要大量的数据集和训练时间,其模型请求结果如下。


图像检索库生成与部署

在目标检测模型部署完毕后电瓶车入室检测的功能便可投入使用,但为了提高整体的准确度减少误报则还需要一个额外的检索方式。这里采用了PaddleClas下图像识别中的轻量级通用识别模型general_PPLCNet_x2_5_lite_v1.0_infer,首先根据已有图片集生成格式与下图格式相同的txt的文件,随后在PaddleClas的deploy文件夹下输入命令即可用数据集生成相应的索引库,其中IndexProcess.data_file是下图txt文件的名字,IndexProcess.index_dir是生成   索引库的名字,具体可以查看PaddleClas图像识别快速开始的建立新的索引库部分。(注意,确保build_general.yaml中rec_inference_model_dir路径的模型存在)#下载模型并转换为serving模型
%cd /home/aistudio/work/code/
!wget -P models/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/general_PPLCNet_x2_5_lite_v1.0_infer.tar
%cd models
!tar -xf general_PPLCNet_x2_5_lite_v1.0_infer.tar
!python3 -m paddle_serving_client.convert --dirname ./general_PPLCNet_x2_5_lite_v1.0_infer/ --model_filename inference.pdmodel  --params_filename inference.pdiparams --serving_server ./general_PPLCNet_x2_5_lite_v1.0_serving/   --serving_client ./general_PPLCNet_x2_5_lite_v1.0_client/
%cp  -r ./general_PPLCNet_x2_5_lite_v1.0_serving …/general_PPLCNet_x2_5_lite_v1.0/%cd /home/aistudio/data/data128448/
!unzip -q index_motorcycle.zip #解压数据集%cd /home/aistudio/work/code/
!python make_label.py #数据集分类
!python python/build_gallery.py -c build_gallery/build_general.yaml -o IndexProcess.data_file="./index_label.txt" -o IndexProcess.index_dir=“index_result” #生成检索库索引库生成完成后接下来便是的部署,这里我们用到的模型general_PPLCNet_x2_5_lite_v1.0_infer,使用paddleClas中的两个文件便可以部署.

但由于我们只使用了其中的图像检索功能,因此需要将recognization_web_service.py的部分代码进行修改,原始文件在飞桨的github上(https://github.com/PaddlePaddle/PaddleClas/blob/release/2.3/deploy/paddleserving/recognition/recognition_web_service.py),用于部署图像检索服务的文件在/home/aistudio/work/code/general_PPLCNet_x2_5_lite_v1.0/文件夹下。

修改后的recognization_web_service.py代码如下:

config_onlyrec.yml的内容如下:

%cd /home/aistudio/work/code/
%mv index_result/ general_PPLCNet_x2_5_lite_v1.0/%cd /home/aistudio/work/code/general_PPLCNet_x2_5_lite_v1.0/
!python recognition_web_service_onlyrec.py #启动服务%cd /home/aistudio/work/code/general_PPLCNet_x2_5_lite_v1.0/
!python pipeline_http_client.py #请求测试由于使用的原图片请求,因此返回的置信度为1.0,在实际使用场景中同样也有着较高的置信度,结果如图所示。


请点击此处查看本环境基本用法.  

Please click here for more detailed instructions.


 
 
更多>同类产业范例库

推荐产业范例库
点击排行

北京人工智能高质量数据集服务平台

创新数据服务,积极推进数据拓展应用

关于我们

联系我们

合作
咨询

15911018798
数据合作联系电话

微信
联系

微信联系