ubuntu下搭建基于caffe框架的SSD检测算法

  • Post author:
  • Post category:其他


经过两天的浴血奋战,填补了各种坑啊。。。。。。。。。。。。

通过搭建环境,数据准备,训练过程来详细记录这个填坑的过程,网上的帖子太多,有些“坑”没有躲过掉进去了,自己记录下来和分享给可能用到的同志。

一、环境搭建

环境ubuntu16.04+cuda9.0+cudnn7.0,安装的项目环境多,用的conda的方式新建自己运行环境,其他相关安装包见下图

主要参考安装博客:

https://blog.csdn.net/hhy_csdn/article/details/68936075



(敲黑板)

建议安装选用python2.7版本,python3版本在我第一次安装的时候没有选择自己的python版本,多次安装没有成功,有耐心的同学可以研究下why?

其他安装遇到问题搜一搜都会有很多解决办法,不在这里重复啰嗦。

二、训练自己的数据,用的yolomark工具标记的转换为VOC2007数据格式

这个过程也是用了不同的办法,有些能生成xml格式数据,但是训练的时候又解析不了,这个可以参看这篇博客:

https://blog.csdn.net/lancevivi/article/details/79928671

,亲自实验了,修改了一点点小地方,成功了哦。

三、训练,测试

前面两个步骤弄完了,这一步就简单的多,只要修改一下caffe/examples/ssd/ssd_pascal.py这个文件,最好cp一份,在新的新的上面随便修改就行。训练,测试都有很多参考文章。



训练过程中遇到的问题:






1、

I0923 16:36:38.477416 31289 blocking_queue.cpp:50]

Data layer prefetch queue empty

解决办法:SSD训练慢的原因是 在生成LMDB文件时没有将图片转化为300*300分辨率大小 所以在训练网络时需要转换图片分辨率 这样就造成了数据输入层预存队列为空 GPU一直在等待数据中 所以造成了训练异常缓慢。(图片resize是在CPU上运行的,CPU数据读入慢于GPU计算,导致GPU处于空闲,使得计算速度下降,迭代时间间隔扩大。)

找到文件  /data/VOC0712/create_data.sh ,将width=0改为width=300,将height=0改为height=300.

cur_dir=$(cd $( dirname ${BASH_SOURCE[0]} ) && pwd )

root_dir=$cur_dir/../..

cd $root_dir

redo=1

data_root_dir=”$HOME/data/VOCdevkit”

dataset_name=”VOC0712″

mapfile=”$root_dir/data/$dataset_name/labelmap_voc.prototxt”

anno_type=”detection”

db=”lmdb”

min_dim=0

max_dim=0



width=300 # 0

height=300 # 0

extra_cmd=”–encode-type=jpg –encoded”

if [ $redo ]

then

extra_cmd=”$extra_cmd –redo”

fi

for subset in test trainval

do

python $root_dir/scripts/create_annoset.py –anno-type=$anno_type –label-map-file=$mapfile –min-dim=$min_dim –max-dim=$max_dim –resize-width=$width –resize-height=$height –check-label $extra_cmd $data_root_dir $root_dir/data/$dataset_name/$subset.txt $data_root_dir/$dataset_name/$db/$dataset_name”_”$subset”_”$db examples/$dataset_name

done

注意:直接读入图片的是使用Image

DataLayer

,使用LMDB格式的数据是用

DataLayer



版权声明:本文为u012792343原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。