ShuffleNetv2可以说是目前轻量级网络模型中的翘楚,将ShuffleNetv2于yolov5整合开发可以使得模型更加轻量化,在提升模型速度的同时保证有效的精度。
本文的主要工作就是将ShuffleNetv2整合进yolov5中来开发构建细胞检测模型,首先看下效果图:

这里是基于yolov5s进行改进融合的,改进后的yaml文件如下所示:
# parameters
nc: 1
depth_multiple: 0.33
width_multiple: 0.50
#Anchors
anchors:
- [10,13, 16,30, 33,23]
- [30,61, 62,45, 59,119]
- [116,90, 156,198, 373,326]
#Backbone
backbone:
# [from, number, module, args]
[[-1, 1, conv_bn_relu_maxpool, [32]],
[-1, 1, ShuffleBlock, [116, 2]],
[-1, 3, ShuffleBlock, [116, 1]],
[-1, 1, ShuffleBlock, [232, 2]],
[-1, 7, ShuffleBlock, [232, 1]],
[-1, 1, ShuffleBlock, [464, 2]],
[-1, 1, ShuffleBlock, [464, 1]],
]
#Head
head:
[[-1, 1, Conv, [96, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[ -1, 4 ], 1, Concat, [1]],
[-1, 1, DWConv, [96, 3, 1]],
[-1, 1, Conv, [96, 1, 1 ]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 2], 1, Concat, [1]],
[-1, 1, DWConv, [96, 3, 1]],
[-1, 1, DWConv, [96, 3, 2]],
[[-1, 11], 1, ADD, [1]],
[-1, 1, DWConv, [96, 3, 1]],
[-1, 1, DWConv, [ 96, 3, 2]],
[[-1, 7], 1, ADD, [1]],
[-1, 1, DWConv, [96, 3, 1]],
[[14, 17, 20], 1, Detect, [nc, anchors]],
]
这里的改进主要体现在两部分结合ShuffleNet的网络思想来的,首先是BackBone部分,如下:

直接使用了ShuffleBlock来替换原有的C3和Conv模块了。
之后是head部分,如下所示:

这部分主要是深度可分离卷积的使用了,进一步降低参数量的高效tricks。
接下来看下数据集:

VOC格式标注数据如下所示:

实例标注内容如下:
<annotation>
<folder>Hela</folder>
<filename>images/0edad713-0236-48ce-ba10-f6a5cc8a5194.jpg</filename>
<source>
<database>The Hela Database</database>
<annotation>Hela</annotation>
<image>Hela</image>
</source>
<owner>
<name>YSHC</name>
</owner>
<size>
<width>512</width>
<height>512</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>251</xmin>
<ymin>0</ymin>
<xmax>384</xmax>
<ymax>76</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>313</xmin>
<ymin>67</ymin>
<xmax>482</xmax>
<ymax>159</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>145</xmin>
<ymin>98</ymin>
<xmax>243</xmax>
<ymax>242</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>251</xmin>
<ymin>103</ymin>
<xmax>400</xmax>
<ymax>226</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>31</xmin>
<ymin>157</ymin>
<xmax>140</xmax>
<ymax>281</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>221</xmin>
<ymin>218</ymin>
<xmax>351</xmax>
<ymax>327</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>347</xmin>
<ymin>254</ymin>
<xmax>498</xmax>
<ymax>360</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>117</xmin>
<ymin>261</ymin>
<xmax>221</xmax>
<ymax>360</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>12</xmin>
<ymin>282</ymin>
<xmax>104</xmax>
<ymax>390</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>62</xmin>
<ymin>354</ymin>
<xmax>182</xmax>
<ymax>464</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>216</xmin>
<ymin>357</ymin>
<xmax>358</xmax>
<ymax>444</ymax>
</bndbox>
</object>
<object>
<name>cell</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>80</xmin>
<ymin>437</ymin>
<xmax>221</xmax>
<ymax>512</ymax>
</bndbox>
</object>
</annotation>
YOLO格式标注数据如下所示:

样例标注数据如下所示:
0 0.541016 0.077148 0.238281 0.154297
0 0.949219 0.131836 0.101562 0.189453
0 0.617188 0.227539 0.257812 0.162109
0 0.339844 0.390625 0.316406 0.21875
0 0.630859 0.397461 0.277344 0.193359
0 0.634766 0.599609 0.210938 0.269531
0 0.829102 0.571289 0.248047 0.208984
0 0.34668 0.592773 0.341797 0.228516
0 0.175781 0.71582 0.214844 0.349609
0 0.37793 0.802734 0.205078 0.1875
接下来就可以启动模型训练了,日志输出如下所示:


接下来看下结果详情。
LABEL数据可视化:

训练batch检测样例:

F1值曲线和PR曲线 :

最后基于专用的界面实现可视化推理应用。

上传图像:

检测推理计算:

