Yolov5同时进行目标检测和分割分割

基于yolov5(v6.0分支)的多任务检测和分割模型。

之前很早就萌生idea在yolov5基础上添加一个分割头用于语义分割,近期正好也有论文YLOLOP是这么做的.

这里基于yolov5最新分支修改,主要改动如下:

1 . 解耦头:实验在小数据集上有一定效果(map 1%+ ),大数据集上提升不明显;

2. 类别权重:在长尾分布的数据集上提升较为明显.

3.添加分割头用于语义分割。

整体框架

Yolov5同时进行目标检测和分割分割_第1张图片

上图是在yolop模型上修改的,侵删。

整个模型分为三个部分:

1) backbone:这里使用yolov5骨干;

2)neck: panet;

3)head:检测头+分割头

检测头参考了YOLOX进行了解耦;针对不同数据和任务可能会有一定提升。

数据集

这里使用VOC数据集进行训练,具体的,检测训练集为VOC07+12的训练集,测试集为VOC07的测试集;分割使用VOC12的分割训练集,测试集为其测试集,主要是方便和SSD进行对比:

Yolov5同时进行目标检测和分割分割_第2张图片

 使用yolov5s进行实验,输入也为512;设置训练300epoch;但是这里节省时间训练快到200 epoch停止:

model VOC2007 test
SSD512 79.8
yolov5s+seghead(512) 79.2

Demo

Yolov5同时进行目标检测和分割分割_第3张图片

Yolov5同时进行目标检测和分割分割_第4张图片

Yolov5同时进行目标检测和分割分割_第5张图片

源码:https://github.com/midasklr/yolov5dshttps://github.com/midasklr/yolov5ds

参考:

1.[YOLOP: You Only Look Once for Panoptic Driving Perception](https://arxiv.org/abs/2108.11250)

2. GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLiteYOLOv5 in PyTorch > ONNX > CoreML > TFLite. Contribute to ultralytics/yolov5 development by creating an account on GitHub.https://github.com/ultralytics/yolov5

你可能感兴趣的