用SSD训练自己的数据集(VOC2007格式)
来源:互联网 发布:js时间转换成时间戳 编辑:程序博客网 时间:2024/06/06 04:18
用SSD训练自己的数据集(VOC2007格式)
一. 配置caffe环境
ubunt16.04下caffe环境安装
二. 下载,编译及测试ssd源码
(一)下载源码
github链接
或者执行 git clone https://github.com/weiliu89/caffe.git
(二)编译源码
编译过程中可能会出现缺失一些python模块,按提示安装
(1)修改Markfile配置
参考ubunt16.04下caffe环境安装
中修改Makefile.config
(2)编译python接口
make -j8 多核编译,时间较长make pycaffe
(3)下载训练好的模型
下载链接原始链接可能需要翻墙,可自行找其他链接下载,文件名为models_VGGNet_VOC0712_SSD_300x300.tar.gz,解压至CAFFE_ROOT/目录下
(4) 下载VOC2007数据
cd $CAFFE_ROOT/datawget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tarwget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tarwget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tartar -xvf VOCtrainval_11-May-2012.tartar -xvf VOCtrainval_06-Nov-2007.tartar -xvf VOCtest_06-Nov-2007.tar
(5) 产生LMDB格式数据集文件
在data/VOC0712/中生成trainval.txt, test.txt, and test_name_size.txt in
可以通过修改create_list.sh和create_data.sh来针对自己的数据集产生LMDB文件
cd $CAFFE_ROOT./data/VOC0712/create_list.sh./data/VOC0712/create_data.sh
产生的trainval和test数据位于CAFFE_ROOT/data/VOCdevkit/VOC0712/lmdb/VOC0712_trainval_lmdb和CAFFE_ROOT/data/VOCdevkit/VOC0712/lmdb/VOC0712_test_lmdb
(三)测试源码
score_ssd_pascal.py里面的test_image_num应该是4952的,源程序有报相关错误可以改一下
cd $CAFFE_ROOTpython examples/ssd/score_ssd_pascal.py
应该会得到0.77*左右的MAP score,说明模型可以正常运行
三. 使用SSD训练自己的数据集
(一)下载预训练参数及模型
下载链接
(二)制作数据集
制作自己的图片数据集(VOC2007格式)
将制作好的VOC2007文件夹放置在data/VOCdevkit文件夹下,没有则新建VOCdevkit文件夹
(三)修改配置文件
(1)修改$CAFFE_ROOT/data/$dataset_name/下create_list.sh和create_data.sh两个文件
create_list.sh:
root_dir=$HOME/data/VOCdevkit/sub_dir=ImageSets/Mainbash_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"for dataset in trainval testdodst_file=$bash_dir/$dataset.txtif [ -f $dst_file ]then rm -f $dst_filefifor name in VOC2007 VOC2012 # 数据集文件夹名称$dataset_name
create_data.sh,其中数据集文件夹名称$dataset_name,这个文件夹是指存放create_list.sh和create_data.sh两个文件及labelmap文件的地方的文件夹名,建议和VCOdevkit下面的数据集名称一致
data_root_dir="$HOME/data/VOCdevkit" # 为了避免错误可以用绝对路径dataset_name="VOC0712"mapfile="$root_dir/data/$dataset_name/labelmap_voc.prototxt"
(2)修改$CAFFE_ROOT/data/$dataset_name/下labelmap_voc.prototxt
name: "cat" # xml文件中的类别名label: 1display_name: "Cat" # 检测时显示的类别名
(3)修改训练文件$CAFFE_ROOT/data/example/ssd/ssd_pascal.py
- 改了数据集文件夹名称的话讲程序路径里面的VOC0712都替换为你的数据集名称$dataset_name,否则不需要修改,为了不要覆盖原来的模型建议修改数据集名称
- 类别数:num_classes = open(label_map_file).read().count(‘label’)
- 测试图片数量:num_test_image = len(open(name_size_file).readlines())
(4)$CAFFE_ROOT/example/ssd/ssd_pascal.py参数设置
- solver_param 中’max_iter’: 120000, 表示最大迭代次数
- solver_param 中’test_interval’: 10000, 每次评估模型效果的间隔迭代次数,用于观察是否收敛及过拟合
- 其他参数可酌情修改
(四)开始训练
cd $CAFFE_ROOTpython example/ssd/ssd_pascal.py
成功训练后在ssd_pascal.py文件中的job_dir路径下生成日志文件,snapshot_dir路径下存有断点模型,训练中断后会从最大迭代次数继续训练,
(五)测试训练结果
(1)修改example/ssd/score_ssd_pascal.py文件
修改方式与ssd_pascal.py相同,其中在det_eval_param添加’show_per_class_result’: True参数可现实每个类别的AP(average precision)
(2)进行测试
cd $CAFFE_ROOTpython example/ssd/score_ssd_pascal.py
四. 曾出现过的bug
(1) 原文件中num_classes和num_test_image经常变动的话容易忘记修改而报错,可通过读取labelmap和testfile自动得到相应数值
(2) 修改test_batch_size似乎不影响测试速度
- 用SSD训练自己的数据集(VOC2007格式)
- SSD(Single Shot MultiBox Detector):ubuntu16安装及训练自己的数据集(VOC2007格式)过程记录
- Faster-RCNN/SSD/训练将数据集做成VOC2007格式
- 用faster-rcnn训练自己的数据集(VOC2007格式,python版)
- 用faster-rcnn训练自己的数据集(VOC2007格式,python版)
- Faster RCNN 训练自己的数据集(Matlab,python版本)及制作VOC2007格式数据集
- 用SSD训练自己的数据集
- 把自己的数据制作成voc2007数据格式用于SSD训练
- 制作自己的图片数据集(VOC2007格式)
- 将自己的数据集改为PASCAL VOC2007格式用于
- SSD框架训练自己的数据集
- SSD训练自己的数据集
- SSD框架训练自己的数据集
- SSD框架训练自己的数据集
- SSD训练自己的数据集
- SSD框架训练自己的数据集
- ssd训练自己的数据集
- 用SSD训练自己的数据集时报错
- centos7 安装tomcat
- 在Eclipse中使用git把项目导入到osc@git中
- keras 手把手入门#1-MNIST手写数字识别 深度学习实战闪电入门
- ThreadLocal
- 设计模式-桥接模式
- 用SSD训练自己的数据集(VOC2007格式)
- 深入浅出Android Gradle构建系统(二:项目结构)
- 微信H5支付接口开发步骤
- Redis install-connect server demo (1 section)
- iOS UITextView的PlaceHolder 占位文字的实现
- 开通博客
- list_entry和list_for_each_entry
- 自定义RecyclerView的上拉加载功能,单纯的上拉加载,适应性强
- IDEA Activiti Designer插件---actiBPM汉字乱码问题