看作者github更新了YOLO2代码,加入了groups机制,加了LSTM功能。要实现基于MobileNet的YOLO2,根据之前基于darknet的YOLO2版本可以简单修改。几个修改的地方:
1、部分源文件中net定义变为指针。比如parser.c文件。一一修改。
2、在data.c中线程代码段,有些产生随机数的代码需要修改,否则训练会一直跑同一张图像。比如
rand()%m,用没有groups版本的替换即可。
3、一些函数参数数量改变,需要添加。
4、darknet.h前面加上定义:
#if (defined(WIN32) || defined(WIN64)) && !defined(__cplusplus)
#define inline __inline
#endif
其他零零散散修改,剩下就是写MobileNet的网络结构文件,可以参考宋木,训练正常,但是感觉MobileNet_voc训练速度比darknet_voc慢了,而且没有预训练模型,模型大小190M左右,比darknet版本(260M)的降低30%左右。我的配置不高,训练起来收敛不了,loss在15左右一直降不下去,而且测试时发现没有任何检测结果。一个可能是模型问题,一个可能是检测代码的参数问题。
--------------------------------------------------------------------------------------
20180222
设置训练参数,发现需要在较大学习率(0.001)下迭代较长时间(5000代改一次学习率),loss才会慢慢下降。