122.人工智能——基于PP-YOLOe的X光安检图像检测

122.人工智能——基于PP-YOLOe的X光安检图像检测

首页休闲益智X光安检更新时间:2024-04-23

X光安检是目前在城市轨交、铁路、机场、物流业广泛使用的物检手段。使用人工智能技术,辅助一线安检员进行X光安检判图,可以有效降低因为安检员经验、能力或工作状态造成的错漏检问题。在实际场景中,因待检测物品的多样性、成像角度、重叠遮挡等问题,X光安检图像检测算法研究存在一定挑战。

数据集来源:科大讯飞的X光安检图像检测挑战赛。

数据用于学习和研究,标注文件中的类别为8类,包括:

刀(knife)、剪刀(scissors)、打火机(lighter)、优盘(USBFlashDisk)、压力容器(pressure)、带喷嘴塑料瓶(plasticBottleWithaNozzle)、公章(seal)、电池(battery)。

8个类别

部分数据

环境配置:PaddleDetection安装

# 克隆PaddleDetection仓库 git clone https://GitHub.com/PaddlePaddle/PaddleDetection.git # 安装其他依赖 cd PaddleDetection pip install -r requirements.txt # 编译安装paddledet python setup.py install

安装后确认测试通过: python ppdet/modeling/tests/test_architectures.py 测试通过后会提示如下信息: ....... ---------------------------------------------------------------------- Ran 7 tests in 12.816s OKPP-YOLOE模型

是基于PP-YOLOv2的卓越的单阶段Anchor-free模型,超越了多种流行的YOLO模型。PP-YOLOE有一系列的模型,即s/m/l/x,可以通过width multiplier和depth multiplier配置。PP-YOLOE避免了使用诸如Deformable Convolution或者Matrix NMS之类的特殊算子,以使其能轻松地部署在多种多样的硬件上。详细介绍请看官网文档。

准备数据集(VOC格式)

#划分和生成train.txt,val.txt import os import random data_path = 'data/train' datalst=[] for subpath in os.listdir(data_path): img_path = os.path.join(data_path, subpath) if os.path.isfile(img_path): continue xml_path = os.path.join(subpath, 'XML') for img_name in os.listdir(img_path): if not os.path.isfile(os.path.join(img_path, img_name)): continue img_file = os.path.join(subpath, img_name) xml_file = os.path.join(xml_path, img_name.replace('.jpg', '.xml')) f.write(img_file ' ' xml_file '\n') txt=img_file ' ' xml_file datalst.append(txt) #乱序 random.shuffle(datalst) with open(os.path.join(data_path, 'train.txt'), 'w') as f: for d in datalst[:int(len(datalst)*0.8)]: f.write(d "\n") with open(os.path.join(data_path, 'val.txt'), 'w') as f: for d in datalst[int(len(datalst)*0.8):]: f.write(d "\n")模型参数配置

1、修改ppyoloe_crm_s_300_coco.yml:数据集格式为voc.yml,学习率:0.01 2、修改optimizer_300e.yml: epoch:50 3、修改ppyoloe_reader.yml:去掉数据增强RandomExpand,去掉512以下target_size 4、修改voc.yml:num_classes:8,训练集和验证集的文件路径模型训练

python tools/train.py -c configs/ppyoloe/ppyoloe_crn_s_300e_coco.yml

#部分训练过程: …… [08/06 10:17:32] ppdet.engine INFO: Epoch: [45] [ 0/250] learning_rate: 0.000955 loss: 2.220671 loss_cls: 1.143309 loss_iou: 0.235187 loss_dfl: 0.966013 loss_l1: 0.426869 eta: 0:12:02 batch_cost: 0.5925 data_cost: 0.1385 ips: 27.0056 images/s [08/06 10:18:49] ppdet.engine INFO: Epoch: [45] [100/250] learning_rate: 0.000882 loss: 2.219530 loss_cls: 1.131274 loss_iou: 0.233677 loss_dfl: 0.984781 loss_l1: 0.443764 eta: 0:11:04 batch_cost: 0.5928 data_cost: 0.1405 ips: 26.9917 images/s [08/06 10:20:08] ppdet.engine INFO: Epoch: [45] [200/250] learning_rate: 0.000812 loss: 2.242256 loss_cls: 1.146362 loss_iou: 0.237596 loss_dfl: 0.988855 loss_l1: 0.445064 eta: 0:10:07 batch_cost: 0.5997 data_cost: 0.1165 ips: 26.6794 images/s [08/06 10:20:44] ppdet.utils.checkpoint INFO: Save checkpoint: output/ppyoloe_crn_s_300e_coco ……

训练模型

模型预测

python tools/infer.py -c configs/ppyoloe/ppyoloe_crn_s_300e_coco.yml -o weights=output/ppyoloe_crn_s_300e_coco/model_latest.pdparams --infer_img=001324.jpg

单张预测结果

导出推理模型

python tools/export_model.py -c configs/ppyoloe/ppyoloe_crn_s_300e_coco.yml --output_dir=output_inference -o weights=outpu

推理模型

如何使用推理模型进行推理预测,可以参看:。

本文主要通过一个实例来简单的介绍,如何使用飞桨的PaddleDetection来实现目标检测项目。

部分参考:GitHub - PaddlePaddle/PaddleDetection

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved