本身在实际项目开发应用中YOLO都是目标检测任务的绝对主力,从v3一直跟着到了v7,做了很多的项目,处理了很多的数据,当然了也积累了一些自己的成果和心得,这里主要是以不常用到的yolov6m系列的模型来开发构建接打电话行为检测识别模型,首先看下效果图:
如果不会使用yolov6项目的话可以参考我之前的教程:
《基于美团技术团队最新开源的yolov6模型实现裸土检测》
教程这里就不再赘述了。
这里使用的是精度更高的yolov6m系列的模型,如下:
# YOLOv6m6 model
model = dict(
type='YOLOv6m6',
pretrained='weights/yolov6m6.pt',
depth_multiple=0.60,
width_multiple=0.75,
backbone=dict(
type='CSPBepBackbone_P6',
num_repeats=[1, 6, 12, 18, 6, 6],
out_channels=[64, 128, 256, 512, 768, 1024],
csp_e=float(2)/3,
fuse_P2=True,
),
neck=dict(
type='CSPRepBiFPANNeck_P6',
num_repeats=[12, 12, 12, 12, 12, 12],
out_channels=[512, 256, 128, 256, 512, 1024],
csp_e=float(2)/3,
),
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=True,
reg_max=16, #if use_dfl is False, please set reg_max to 0
distill_weight={
'class': 1.0,
'dfl': 1.0,
},
)
)
solver = dict(
optim='SGD',
lr_scheduler='Cosine',
lr0=0.0032,
lrf=0.12,
momentum=0.843,
weight_decay=0.00036,
warmup_epochs=2.0,
warmup_momentum=0.5,
warmup_bias_lr=0.05
)
data_aug = dict(
hsv_h=0.0138,
hsv_s=0.664,
hsv_v=0.464,
degrees=0.373,
translate=0.245,
scale=0.898,
shear=0.602,
flipud=0.00856,
fliplr=0.5,
mosaic=1.0,
mixup=0.243,
)
接下来看下数据集:
数据集种隐私敏感信息都做了脱敏处理了。
YOLO格式的标注数据如下:
实例标注内容如下:
1 0.5875 0.419444 0.165625 0.394444
VOC格式标注数据如下所示:
实例标注内容如下:
3
3dd213ba-4491-4425-90f8-6a7012f9b9f5.jpg
3dd213ba-4491-4425-90f8-6a7012f9b9f5.jpg
960
540
3
0
默认执行100次epoch迭代计算,结果详情如下:
LABEL可视化:
混淆矩阵:
训练可视化:
F1值曲线和PR曲线:
batch检测实例:
基于界面实现可视化推理:
上传图像:
检测推理: