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

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 PaddleDetectionpip install -r requirements.txt# 编译安装paddledetpython setup.py install
安装后确认测试通过:python ppdet/modeling/tests/test_architectures.py测试通过后会提示如下信息:.......----------------------------------------------------------------------Ran 7 tests in 12.816sOK

PP-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.txtimport osimport randomdata_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 + '
')        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+"
")with open(os.path.join(data_path, 'val.txt'), 'w') as f:    for d in datalst[int(len(datalst)*0.8):]:        f.write(d+"
")

模型参数配置

1、修改ppyoloe_crm_s_300_coco.yml:数据集格式为voc.yml,学习率:0.012、修改optimizer_300e.yml: epoch:503、修改ppyoloe_reader.yml:去掉数据增强RandomExpand,去掉512以下target_size4、修改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

推理模型


如何使用推理模型进行推理预测,可以参看:119.人工智能——基于Paddle的YoLo3目标实时检测

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

部分参考:GitHub - PaddlePaddle/PaddleDetection

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章