tongyuhome / MobileNetV3-SSD

MobileNetV3 based SSD-lite implementation in Pytorch
98 stars 31 forks source link

MobileNetV3-SSD

第一部分

第一部分MobileNetV3的内容非常简单,大致思路:创建网络,载入预训练模型,fine-tune网络,数据预处理,训练。

第二部分

训练结果

用于训练的数据有30类,数据量大概在95k左右,trainval_proportion和train_proportion都是0.9。

第一部分的训练MobileNetV3-SMALL模型,每个EPOCH的训练时间在10min左右(GTX1070),设置了20EPOCH之内没有收敛则停止训练,所以大概在140个EPOCH之后停止。训练之后在测试中能够达到99.60的准确率。

第二部分训练MobileNetV3-SMALL based SSD模型。这次的训练在进行了40个EPOCH停止,一方面是因为时间消耗太长,1070的算力不足,如果验证模型有效之后可以投入资源放置到服务器进行训练,所以用5类数据先进性训练会比较合理,另一方面为了得到更好的检测效果,希望尝试使用MobileNetV3-LARGE来代替现在使用的MobileNetV3-SMALL来进行训练。训练完成后我对这个MobileNetV3-SMALL based SSD - 40 EPOCH 模型进行了检测,结果如下:

eval-small-30sku

mAP结果如下:

eval-small-30sku

修改了模型之后,开始训练MobileNetV3-LARGE网络,这次训练了200EPOCH,原因是想让这个更深的网络能够充分学习,从结果来看其实在60个EPOCH之后网络几乎已经停止收敛,准确率能够达到99.64,从分类角度来说这和之前的SMALL网络结果达到的效果是近似的。

接下来开始训练MobileNetV3-SMALL based SSD 模型,这次现在1070上用5个类别的数据进行训练,训练数据量为14.7k,测试数据量为1.6k,完成的一个EPOCH大约耗时22分钟。

补充:
  1. 由于之后使用的数据集和训练过程不一致,所以在此没有展示出MobileNetV3-SMALL based SSD和MobileNetV3-LARGE based SSD性能效果的直观对比,主观的来看后者的性能(检测效果)更好,相应的要耗费更多训练时长。
  2. 由于训练的数据是非公开数据,没有相应的测试数据也无法测试模型,所以没有上传训练好的模型。训练代码已经上传,可以根据需要训练数据,希望能有所帮助。