【转载】caffe安装 ssd配置并在VGG模型上训练自己的数据 原

https://my.oschina.net/u/1046919/blog/777470


最近一直在看深度学习的东西,用到了ssd,上网一搜,找到一篇不错的博客,http://www.cnblogs.com/objectDetect/p/5780006.html官网, 这篇是连安装cuda到caffe环境的一系列http://blog.csdn.net/wopawn/article/details/52302164。经过磕磕绊绊,也决定写一篇相关的博客。

ssd的demo是介绍了在voc数据集上训练和验证,所以想要简单的使用ssd训练自己的数据,就是做成类似voc 的数据再调用ssd 中的ssd_pascal.py进行训练。 这里需要说明的是ssd项目中自带的ssd_pascal.py文件会在VGG的模型上再训练,以我的理解就是在VGG的模型上做fine-tuning。

现在从头开始教程:

1 安装ssd

1.1 首先需要安装有git

sudo apt-getinstallgit

1.2 git ssd 项目

gitclonehttps://github.com/weiliu89/caffe.gitcdcaffegit checkout ssd(出现“分支”则说明copy-check成功)

记得一定要用git的方法,不要直接下载caffe-master.zip这种压缩包,里面没有git的配置,没用的。

1.3 开始编译ssd

先安装一些依赖

sudo apt-getinstalllibprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-getinstall--no-install-recommends libboost-all-dev

ubuntu14.04需要依赖

sudo apt-getinstalllibgflags-dev libgoogle-glog-dev liblmdb-dev

ubuntu16.04需要cuda 8

BLAS:可以通过

sudo apt-getinstall libatlas-base-dev

可以安装OpenBLAS 或者 MKL,MKL可以使CPU更好的工作。

要python的话可能要安装

sudo apt-getinstallpython-pip python-numpy  python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython

开始编译,编译有两种办法:

** 1.3.1 直接make**

cd"<你的caffe项目>"cpMakefile.config.exampleMakefile.config

如果你想直接用CPU而不用GPU,进入Makefile.config 将 #CPU_ONLY:=1这句去掉注释,像下面这个

# CPU-only switch (uncomment to build without GPU support).CPU_ONLY := 1

如果要改BLAS:

# BLAS choice:#atlasforATLAS (default)#mklforMKL#openforOpenBlasBLAS := atlas

然后执行

makeall-j8sudomake installmakeruntest (这个不一定要)makepycaffe

** 1.3.2 用cmake方法安装**

cd"<你的caffe项目>"mkdir buildcdbuildccmake ..make -j8sudo make installmake runtestmake pycaffe

如果要改BLAS和单用CPU,在ccmake .. 中选择。

装好在之后注意配置python caffe 环境

vim/etc/profile

在最后一行添加

exportPYTHONPATH=/home/........../caffe/python:$PYTHONPATH

然后更新下环境

source/etc/profile

1.4 验证pycaffe环境

pythonimportcaffe

如果没有问题那就是成功了

如果有错误那么就打开主目录下的.bashrc写入那句话,再试试看。

2 训练自己模型

训练VOC数据的方法上面那篇博客有讲,这里不再多说。讲讲训练自己数据。

现在来看一下voc的标签00001.xml

现在主要更改的是size中的width,height,object中的name和xmin,xmax,ymin,ymax这几个东西。

所以每幅图片都要在样子更改,上面的博客推荐了一个bbox-tool,但是对于我来说不太好用,然后就写了一个基于opencv的程序,稍后放出。

在ssd中voc的同级目录新建一个文件夹,讲所有图片和标签都放进去,做好链接 

trainval.txt 存放训练用的图片路径,格式类似

data1/image1.jpg data1/image.xml

test.txt 存放测试用的图片路径,格式和trainval.txt相同

test_name_size.txt 存放测试用的图片,格式类似测试 “ 图片名 高 长“

imagetest1300300

labelmap_indoor.prototxt 标签的名字,注意label 0 这类一定会存在,就是图片bounding box以外的数据标签

数据做好之后运行create_data.sh进行整理数据,create_data.sh里面可能有些路径错误,可以自行改到自己的数据目录。

运行create_data.sh之后会在当前目录和ssd的examples下新建一个数据目录,名字是当前目录的名字。

3 训练

打开ssd_pascal.py需要修改的有一下几点:

train_data和test_data , 指向examples中你的数据,例如

train_data="examples/indoor/indoor_trainval_lmdb"# The database file for testing data. Created by data/VOC0712/create_data.shtest_data="examples/indoor/indoor_test_lmdb"

num_test_image该变量修改成自己数据集中测试数据图片的数量

num_classes 该变量修改成自己数据集中 标签类别数量数 + 1

gpus = "0,1,2,3" 电脑有几个gpu就写多少个,如果有一个就写gpus="0",两个就写gpus="0,1",以此类推。

最后到caffe的根目录运行, ps:你的ssd_pascal.py的目录是example/yourSSD/ssd_pascal.py

pythonexample/yourSSD/ssd_pascal.py

4 测试

有好几种测试的方法,

4.1 python

在caffe的根目录运行ssd_pascal_webcam.py这个文件,这是使用摄像头实时测试的软件,读取的caffemodel是在caffe/models/VGGNet/VOC0712/SSD_300x300_webcam下最新的model,所以记得在这个文件夹中放入模型。 还要更改下ssd_pascal_webcam.py中label_map_file到你的labelmap_voc.prototxt

pythonexamples/ssd/ssd_pascal_webcam.py

4.2 c++

编译完SSD后,C++版本的的可执行文件存放目录: .build_release/examples/ssd/ssd_detect.bin

测试命令 ./.build_release/examples/ssd/ssd_detect.bin models/VGGNet/indoor/deploy.prototxt models/VGGNet/indoor/VGG_VOC0712_SSD_300x300_iter_60000.caffemodel pictures.txt

ssd自带ssd_detect.cpp,可以拿来使用。

** 4.2.1 用qt** .pro件定义中需要引入你的caffe配置,例如

LIBS += /home/xxx/caffe/build/lib/libcaffe.so INCLUDEPATH += /home/xxx/caffe/includeINCLUDEPATH += /home/xxx/caffe/build/include

可能还会有一些编译问题:

error while loading shared libraries: libglog.so.0: cannot open shared object file: No such file or directory 解决

LIBS +=/usr/lib/x86_64-linux-gnu/libglog.so

libcaffe.so.1.0.0-rc3: cannot open shared object file: No such file or directory 解决:在/etc/ld.so.conf.d/下新建caffe.conf文件,在caffe.conf中加入到libcaffe.so.1.0.0-rc3的位置,基本上是在build的lib里。

** 4.2.2 使用cmake**

如果是使用cmake,注意安装ssd的时候一定要make install

然后CMakeLists.txt

find_package(OpenCV REQUIRED)find_package(Caffe REQUIRED)#option (CPU_ONLY"Use CPU or use GPU"ON)#option (USE_OPENCV"Use CPU or use GPU"ON)include_directories( ${Caffe_INCLUDE_DIRS} )add_definitions(${Caffe_DEFINITIONS})# ex. -DCPU_ONLYadd_executable(ssd_detect ssd_detect.cpp )

使用cpu或者gpu可以在选项里面定义。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容