经过测试得出以下结论:
1、传统的目标检测算法主要有以下几种:
(1) 基于Boosting框架:Haar/LBP/积分HOG/ACF feature+Adaboost
(2) 基于SVM:HOG+SVM or DPM等
(3) 模版匹配(特殊情况下可以用到)
人工特征和LBP,HAAR特征级联分类器容易出现找不到目标的情况,但是优点是响应速度快,硬件投入低,训练模型快速
因为有时候找不到目标所以舍弃。
2、现在采用深度学习的方法,主要尝试了以下几种方法
(1)cnn fast-cnn faster-cnn 该类方法主要是基于region proposal(two stage) 有响应慢的特点 但是目标找到的返回率很高,
因为我们的样本是固定的背景,并且货品目标不存在差异,所以找到目标的概率可以满足需求。
(2)为了满足响应速度,采用了yolo算法和ssd算法,yolo算法的优势在于响应速度快,但是目标查找成功率较低,网传性能为
泰坦显卡X版本可以达到100张图片每秒。由此计算,一个GPU可以同时管理几百个货柜,因为一个人开关一个柜子大概需要几秒钟时间。
(3)为了提高精度采用和yolo同样基于基于回归(one stage)的SSD算法,SSD算法因为结合了YOLO和anchor进行检测所以可以
达到和上述基于region proposal(two stage)同样的精度。
其实还有个叫做DSSD,因为DSSD为了提高精度所以在SSD网络后面加入了新的连接层,速度较慢。详见下图结构(比较SSD和DSSD)
综上所述采用SSD算法,测试SSD算法结果如下:
本机win10系统,CPU 14核心28线程
训练时间为7天(该截图为昨晚迭代计时)如果用腾讯云GPU服务器可以缩短到几个小时,也就是几个小时就可以上新货。
测试代码如下(使用VOC07数据集训练结果):
开始时间:
结束时间:
处理一千张图片 总共耗时 466秒 通过计算 该机器的处理速度为 每秒2.15张,所以网传速度较为真实。
测试图片如下:
原文地址:http://blog.51cto.com/yixianwei/2086347