Mobilenet 也算是提出有一段时间了,网上也不乏各种实现版本,其中,谷歌已经开源了Tensorflow的全部代码,无奈自己几乎不熟悉Tensorflow,还是比较钟爱Caffe平台,因而一直在关心这方面。 点击上方“AI算法修炼营”,选择“星标”公众号精选作品,第一时间送达这是一篇缺陷检测领域的简单应用,原理和简单,主要可以学习离线数据集的构建和针对不同数据集对长宽比的自适应修改。 1.1 说明SSD提供了VOC数据到LMDB数据的转换脚本 ,… 执行之后,得到examples文件夹,里面的3个prototxt就是从模板生成的正式网络定义,根据作者设置,其中的deploy文件是已经合并过bn层的,需要后面配套使用。 下载地址:Google Drive|百度云,放在项目文件夹下,这里的预训练模型是作者从Tensorflow那边转化过来的,然后经过了VOC数据集的初步调试。 修改并运行train.sh脚本,中途可以不断调节参数。
- 几个月前接触到了这个project,当时chuanqi大神在Caffe平台上初步实现了Mobilenet-SSD,本人自然是很惊喜的,接下来就时不时和大神一起探讨,在其指导下,我在VOC数据集也能训练出大约72%的精度。
- 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
- 打个比方,假设对于那个分辨率最大的特征图,都能用4×4的感受野检测出一只猫,如下图所示,黑色是头,红色是身体,棕色是腿,黄色是尾巴。
- 本文介绍了chuanqi305的MobileNet-SSD网络是如何组成的以及实用的MergeBN技术,在下一篇博文中我们将尝试用该网络进行训练并部署在RK3399的Tengine平台上,并且进一步对该网络进行改进以满足我们实际场景的需要。
- 无论是机器学习或是深度学习一般都可分为两个部分:特征提取与分类任务。
- 然后运行该脚本,就可以得到最终的检测模型,那这个模型由于合并了bn层,参数格式已经变化,就不能再用于训练了。
- 我们需要提前建立好适用于SSD训练的数据集(VOC格式),比如博主所用的是KITTI数据集,制作方法可在往期博文中找到,最终需要生成训练验证集和测试集的lmdb文件,然后建立软连接,类似于一个快捷方式,可以简化命令和节省空间。
理论上Mobilenet的运行速度应该是VGGNet的数倍,但实际运行下来并非如此,前一章中,即使是合并bn层后的MobileNet-SSD也只比VGG-SSD快那么一点点,主要的原因是Caffe中暂时没有实现depthwise convolution,目前都是用的group。 这里group相当于一个for循环,需要依次计算,如果能使用深度卷积,那就可以一次性计算完,节省不少时间。 1.概述 本文档阐述SSD检测算法原理,及以MobileNet为Backbone的网络搭建方式。 无论是机器学习或是深度学习一般都可分为两个部分:特征提取与分类任务。
mobilenetssd: 模型分析
训练结束后,运行test.sh脚本,测试网络的精度值。 我们需要提前建立好适用于SSD训练的数据集(VOC格式),比如博主所用的是KITTI数据集,制作方法可在往期博文中找到,最终需要生成训练验证集和测试集的lmdb文件,然后建立软连接,类似于一个快捷方式,可以简化命令和节省空间。 几个月前接触到了这个project,当时chuanqi大神在Caffe平台上初步实现了Mobilenet-SSD,本人自然是很惊喜的,接下来就时不时和大神一起探讨,在其指导下,我在VOC数据集也能训练出大约72%的精度。 现在这个项目趋于稳定,根据github上的描述,最终精度是72.7%,也很不错了。
于是按照下图方式输出每一层的x.size() 通过type(x)得知x为tensor类型(一个多维张量或者说多维矩阵),因此可以输出其维数来查看每层的feature map大小及输出输入通道数。 之前实习用过太多次mobilenet_ssd,但是一直只是用,没有去了解它的原理。 今日参考了一位大神的博客,写得很详细,也很容易懂,这里做一个自己的整理,供自己理解,也欢迎大家讨论。 Mobilenet的速度是很快的,如果配上Depthwise layer,在TitanX应该能达到150fps,如果能将检测精度提升到70%以上,将会是一个很好的检测网络。 mobilenetssd 接下来的时间,我将会尽可能进行进行分析验证,目的是寻找并试验出好的解决方案,并且期待能成功训练其他数据集。。 每个Block经过两个卷积层后得到一个由channel个元素组成的向量,每个元素是针对每个通道的权重,将权重和原特征图对应相乘,得到新的特征图数据。
mobilenetssd: 目标检测:Mobilenet-SSD实现步骤
该文档详细的描述了MobileNet-SSD的网络模型,可以实现目标检测功能,适用于移动设备设计的通用计算机视觉神经网络,如车辆车牌检测、行人检测等功能。 它具有速度快,模型小,效率高等优点。 本文介绍了chuanqi305的MobileNet-SSD网络是如何组成的以及实用的MergeBN技术,在下一篇博文中我们将尝试用该网络进行训练并部署在RK3399的Tengine平台上,并且进一步对该网络进行改进以满足我们实际场景的需要。 mobilenetssd 这个项目既然叫MobileNet-SSD,那首先要求能正常运行基础版本的SSD,这方面的博客教程这是不少,本人也有几篇博文涉及,可以参考。 错误:索引值14超出范围,检查后发现这个索引值是按照我定义的模块来算的,比如con_bn_relu算一层而不是三层,所以self.model总共14层,索引值为0~13. 想看看自己写的网络结构究竟什么样,所以用了print(model) 说是输入为22,但卷积核为33,输入比卷积核小,出现错误。
在传统的机器学习方法中,特征提取需要依据图像以及特有的检测目的抓取特有特征,如偏重物体轮廓的HOG特征,注重明暗对比的Haar特征等,特征被描述之后送入机器学习算法分类,如SVM、Adaboost等,进而判断物… 然后运行该脚本,就可以得到最终的检测模型,那这个模型由于合并了bn层,参数格式已经变化,就不能再用于训练了。 mobilenetssd 对于得到的最终模型,可用demo.py脚本查看实际检测效果,也可以部署在其他地方。
mobilenetssd: 模型训练
几经辗转,查阅资料之后发现,原来BN层是可以合并进前一层的卷积层或全连接层的,而且这还有利于减少预测用时。 打个比方,假设对于那个分辨率最大的特征图,都能用4×4的感受野检测出一只猫,如下图所示,黑色是头,红色是身体,棕色是腿,黄色是尾巴。 经过大量实验,终于找到能让mobilenet加速的方法,项目地址:DepthwiseConvolution, 十分感谢该项目作者。 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。