在很多实际作业生产场景中,出于对安全的考虑,施工作业等操作都是要求穿戴反光衣的,这个主要是为了保护人身安全,但是很多时候工程作业场景下因为实际种种的原因工人实际作业操作的时候很多人并没有按照要求穿戴反光衣这就给安全生产带来了危险隐患。
本文主要是考虑基于深度学习目标检测的方法来实现自动化的未穿戴反光衣检测识别从而助力安全作业生产,话不多说首先看下效果图:
本文采用的是美团技术团队开发的yolov6模型,感谢这个yolov6模型在实际社区的反响不大,大都是基于yolov5和yolov7开发的项目应用,这里我就当做宣传了吧。
如果不会使用yolov6项目的话可以参考我之前的教程:
《基于美团技术团队最新开源的yolov6模型实现裸土检测》
教程这里就不再赘述了。
这里使用的是轻量级的yolov6s系列的模型,如下:
model = dict(
type='YOLOv6s6',
pretrained=None,
depth_multiple=0.33,
width_multiple=0.50,
backbone=dict(
type='EfficientRep6',
num_repeats=[1, 6, 12, 18, 6, 6],
out_channels=[64, 128, 256, 512, 768, 1024],
fuse_P2=True, # if use RepBiFPANNeck6, please set fuse_P2 to True.
cspsppf=True,
),
neck=dict(
type='RepBiFPANNeck6',
num_repeats=[12, 12, 12, 12, 12, 12],
out_channels=[512, 256, 128, 256, 512, 1024],
),
head=dict(
type='EffiDeHead',
in_channels=[128, 256, 512, 1024],
num_layers=4,
anchors=1,
strides=[8, 16, 32, 64],
atss_warmup_epoch=4,
iou_type='giou',
use_dfl=False,
reg_max=0 #if use_dfl is False, please set reg_max to 0
)
)
solver = dict(
optim='SGD',
lr_scheduler='Cosine',
lr0=0.01,
lrf=0.01,
momentum=0.937,
weight_decay=0.0005,
warmup_epochs=3.0,
warmup_momentum=0.8,
warmup_bias_lr=0.1
)
data_aug = dict(
hsv_h=0.015,
hsv_s=0.7,
hsv_v=0.4,
degrees=0.0,
translate=0.1,
scale=0.5,
shear=0.0,
flipud=0.0,
fliplr=0.5,
mosaic=1.0,
mixup=0.0,
)
接下来看下数据集情况:
YOLO格式标注数据如下:
实例标注内容如下:
1 0.28944 0.386015 0.097964 0.197318
1 0.520992 0.399425 0.115776 0.185824
3 0.21056 0.559387 0.217557 0.337165
3 0.603053 0.564176 0.277354 0.39272
VOC格式标注数据如下所示:
实例标注内容如下:
<annotation>
<folder>JPEGImages</folder>
<filename>0dec49f5-2834-4f0d-a4f4-b924d2ab5c85.jpg</filename>
<path>0dec49f5-2834-4f0d-a4f4-b924d2ab5c85.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>640</width>
<height>465</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>hat</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>1</difficult>
<bndbox>
<xmin>292</xmin>
<ymin>41</ymin>
<xmax>332</xmax>
<ymax>76</ymax>
</bndbox>
</object>
<object>
<name>hat</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>389</xmin>
<ymin>276</ymin>
<xmax>418</xmax>
<ymax>310</ymax>
</bndbox>
</object>
<object>
<name>hat</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>129</xmin>
<ymin>281</ymin>
<xmax>168</xmax>
<ymax>323</ymax>
</bndbox>
</object>
<object>
<name>reflective_clothes</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>295</xmin>
<ymin>69</ymin>
<xmax>361</xmax>
<ymax>135</ymax>
</bndbox>
</object>
<object>
<name>reflective_clothes</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>114</xmin>
<ymin>321</ymin>
<xmax>163</xmax>
<ymax>424</ymax>
</bndbox>
</object>
<object>
<name>reflective_clothes</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>380</xmin>
<ymin>309</ymin>
<xmax>431</xmax>
<ymax>376</ymax>
</bndbox>
</object>
</annotation>
默认100次epoch迭代计算,结果详情如下所示:
LABEL可视化:
F1值曲线:
PR曲线:
训练可视化:
batch检测样例:
分类混淆矩阵如下:
基于界面的可视化推理如下: