Windows下使用SSD检测
来源:互联网 发布:ros系统 与 linux 编辑:程序博客网 时间:2024/06/06 00:07
先来一波文章
SSD是一个单一的网络对象检测的统一框架。你可以使用代码来训练/评估一个用于目标检测任务的网络。http://arxiv.org/abs/1512.02325
再来一波代码https://github.com/conner99/caffe
环境
windows7 + vs2013 + Cuda7.5
caffe: caffe-ssd-microsoft
python: 2.7
1、编译caffe-SSD
参考http://blog.csdn.net/Chen_yingpeng/article/details/59056245
接下来就是训练和测试了
2、训练
训练之前需要准备数据
2.1准备数据
SSD训练使用的是LMDB格式的数据,而平时我们熟知的检测使用的基本为VOC格式的数据集,那么怎么办呢?
先制作个VOC数据集吧http://blog.csdn.net/gaohuazhao/article/details/60871886
将VOC转化为LMDB
官方使用caffe-ssd-microsoft\data\VOC0712文件夹下的create_list.sh 去生成转化LMDB格式所需的trainval.txt和test.txt
文件夹下大概有这么些东西
这两个文件的内容大致为
而我不造为什么执行了create_list.sh出来的trainval.txt和test.txt都是空的,自然就无法生成LMDB了,于是自己写了个Python小程序
create_train_test_file.py
#! /usr/bin/pythonimport os, sysimport globtrainval_filename = "F:/SSD/caffe-ssd-microsoft/data/VOC0712/cut_wheel/ImageSets/Main/trainval.txt"test_filename = "F:/SSD/caffe-ssd-microsoft/data/VOC0712/cut_wheel/ImageSets/Main/test.txt"dist_img_dir = "cut_wheel/JPEGImages"dist_anno_dir = "cut_wheel/Annotations"trainval_fd = open("F:/SSD/caffe-ssd-microsoft/data/VOC0712/trainval.txt", 'w')test_fd = open("F:/SSD/caffe-ssd-microsoft/data/VOC0712/test.txt", 'w')f1=open(trainval_filename,'r')lines1=f1.readlines()f1.close()f2=open(test_filename,'r')lines2=f2.readlines()f2.close()for line in lines1: content = line.strip('\n') trainval_fd.write(dist_img_dir + '/' + str(content) + '.jpg' + ' ' + dist_anno_dir + '/' + str(content) + '.xml\n')for line in lines2: content = line.strip('\n') test_fd.write(dist_img_dir + '/' + str(content) + '.jpg' + ' ' + dist_anno_dir + '/' + str(content) + '.xml\n')
终于终于生成了可以用的trainval.txt和test.txt
接下来的文件只需要稍微修改下路径,运行get_image_size.bat可以生成test_name_size.txt,
有几类就分几类,再加个背景
labelmap_voc.prototxt
item { name: "none_of_the_above" label: 0 display_name: "background"}item { name: "wheel" label: 1 display_name: "wheel"}
有了这些文件,就运行create_data.bat吧
于是你得到了想要的trainval_lmdb,和test_lmdb
那么VOC转化LMDB就已经结束了。
2.2 开始训练
官方提供了训练的Python文件
caffe-ssd-microsoft\examples\ssd\ssd_pascal.py
这个程序会自动生成训练所需的train.prototxt、test.prototxt、solver.prototxt
还有训练用的命令VGG_VOC0712_SSD_300x300_train.bat
只要路径都没问题,需要修改的也不多
num_classes = 2(类别数+1,我的只有背景+wheel)
使用自己的数据训练的话可以把base_lr设置第一点,大的话容易发散。
num_test_image = 119(我有119张测试图片)
其他的参数都可以酌情调整。
在SSD根目录下执行
python examples/ssd/ssd_pascal.py
运行结果
3、测试
使用Python工具jupyter notebook打开caffe-ssd-microsoft\examples\ssd_detect.ipynb
稍微修改就可以对单张图片进行测试
不过将ssd_detect.ipynb的代码拷贝成ssd_image.py也挺方便的
不过需要在程序的结束为止加一行代码
pylab.show()
运行ssd_image.py的结果
上述结果为单独检测轮子
使用的数据集是进行滑动窗口截取的特殊数据http://blog.csdn.net/run_it_faraway/article/details/76862506
在视频检测中检测不出像轮子这么细节的东西的
还有之前做了另一个实验(只检测飞机)
这两个实验单独做,在各自的数据集上效果还是很好的
相信把这两个网络接起来应该能达到检测飞机轮子的目的了
写得乱七八糟,做出来以后会写比较详细的过程
- Windows下使用SSD检测
- 目标检测,windows 下跑 SSD: Single Shot MultiBox Detector
- 使用SSD训练文本检测
- 如何使用ssd训练自己的数据(windows下)
- Windows下Caffe-SSD编译
- 使用Windows Caffe 建立Qt工程 运行SSD(Single Shot MultiBox Detector)目标检测算法
- linux下ssd电子盘速度检测
- 使用keras实现目标检测之SSD
- 使用SSD检测训练自己的数据
- windows下SSD训练自己的数据
- 【深度学习】【caffe实用工具5】笔记27 windows下SSD网络中的get_image_size工具的使用
- 【深度学习】【caffe实用工具6】笔记28 windows下SSD网络中的convert_annoset工具的使用
- Windows+SSD
- 目标检测算法SSD在Ubuntu+CPU下运行
- SSD目标检测
- SSD目标检测
- ssd目标检测整理
- SSD目标检测原理
- HDU 5543 Pick The Sticks(0-1背包)
- 【面试题】海量数据处理相关
- The Suspects(POJ
- 一个关于Span的学习资料, 很棒的文档
- Python多进程(2)——mmap模块与mmap对象
- Windows下使用SSD检测
- recycler 的adapter 的点击事件
- 将博客搬至CSDN
- django学习之路(一)
- 交叉编译,使用迭代器造成编译失败;
- 【BZOJ 1001:[BeiJing2006]狼抓兔子 最小割转对偶图堆优化dij
- gtest学习笔记
- 斐波那契数列算法优化问题
- 2017年全国大学生电子设计竞赛 猜题了