笔记的方法-读书简记 刷新:重新发现商业与未来-读书简记 蛤蟆先生去看心理医生-读书简记 十分钟冥想-读书简记 乔布斯、禅与投资-读书简记 掌控习惯-读书简记 金钱心理学-读书简记 被讨厌的勇气-读书简记 身心合一的奇迹力量-读书简记 零极限-读书简记 投资最重要的事-读书简记 语言学的邀请-读书简记 更富有、更睿智、更快乐-读书简记 管理的常识-读书简记 卡片笔记写作法-读书简记 纳瓦尔宝典-读书简记 卓有成效的管理者-读书简记 贪婪的多巴胺-读书简记 清醒的活-读书简记 像哲学家一样生活:斯多葛哲学的生活艺术-读书简记 你是你吃出来的-读书简记 你可以跑的更快-读书简记 丹尼尔斯经典跑步训练法-读书简记 非暴力沟通-读书简记 异类-读书简记 稀缺-读书简记 为什么要睡觉-读书简记 事实-读书简记 世界上最快乐的人-读书简记 病毒学概览-读书简记 免疫学概览-读书简记 内观-读书简记 沟通的艺术-读书简记 你的生命有什么可能-读书简记 演化的故事-读书简记 经济学原理:宏观经济学分册-读书简记 经济学原理:微观经济学分册-读书简记 社会心理学-读书简记 追寻记忆的痕迹-读书简记 情绪-读书简记 远见:如何规划职业生涯3阶段-读书简记 存在主义心理治疗-读书简记 P·E·T父母效能训练-读书简记 彼得·林奇的成功投资-读书简记 2015-2020美国居民膳食指南-读书简记 中国居民膳食指南(2016)-读书简记 批判性思维-读书简记 代码大全-读书简记 游戏力-读书简记 成功,动机与目标-读书简记 基因组:人种自传23章-读书简记 YOU身体使用手册-读书简记 登天之梯-读书简记 为什么学生不喜欢上学-读书简记 请停止无效努力-读书简记 麦肯基疗法-读书简记 跟简七学理财-课程简记 指数基金投资指南(2017中信版)-读书简记 指数基金投资指南(2015雪球版)-读书简记 让大脑自由:释放天赋的12条定律-读书简记 养育的选择-读书简记 GPU高性能编程CUDA实战-读书简记 百万富翁快车道-读书简记 原则-读书简记 穷查理宝典-读书简记 C++并发编程实战-读书简记 哲学家们都干了些什么-读书简记 Effective C++-读书简记 通往财富自由之路-读书简记 Linux命令行与Shell脚本编程大全-读书简记 刻意练习-读书简记 写给大家看的设计书-读书简记 习惯的力量-读书简记 好好学习-读书简记 硅谷最受欢迎的情商课-读书简记 富爸爸,穷爸爸-读书简记 如何说孩子才会听,怎么听孩子才会说-读书简记 阻力最小之路-读书简记 ProGit-读书简记 思考:快与慢-读书简记 C语言深度剖析-读书简记 编程珠玑-读书简记 Head First 设计模式-读书简记 反脆弱-读书简记 我的阅读书单 小强升职记-读书简记 观呼吸-读书简记 黑客与画家-读书简记 晨间日记的奇迹-读书简记 如何高效学习-读书简记 即兴的智慧-读书简记 精力管理-读书简记 C++编程思想-读书简记 拖延心理学-读书简记 自控力-读书简记 伟大是熬出来的-读书简记 生命不能承受之轻-读书简记 高效能人士的七个习惯-读书简记 没有任何借口-读书简记 一分钟的你自己-读书简记 人生不设限-读书简记 暗时间-读书简记
笔记的方法-读书简记 刷新:重新发现商业与未来-读书简记 蛤蟆先生去看心理医生-读书简记 十分钟冥想-读书简记 乔布斯、禅与投资-读书简记 掌控习惯-读书简记 金钱心理学-读书简记 被讨厌的勇气-读书简记 身心合一的奇迹力量-读书简记 零极限-读书简记 投资最重要的事-读书简记 语言学的邀请-读书简记 更富有、更睿智、更快乐-读书简记 管理的常识-读书简记 卡片笔记写作法-读书简记 纳瓦尔宝典-读书简记 卓有成效的管理者-读书简记 贪婪的多巴胺-读书简记 清醒的活-读书简记 像哲学家一样生活:斯多葛哲学的生活艺术-读书简记 你是你吃出来的-读书简记 你可以跑的更快-读书简记 丹尼尔斯经典跑步训练法-读书简记 非暴力沟通-读书简记 异类-读书简记 稀缺-读书简记 为什么要睡觉-读书简记 事实-读书简记 世界上最快乐的人-读书简记 病毒学概览-读书简记 免疫学概览-读书简记 内观-读书简记 沟通的艺术-读书简记 你的生命有什么可能-读书简记 演化的故事-读书简记 经济学原理:宏观经济学分册-读书简记 经济学原理:微观经济学分册-读书简记 社会心理学-读书简记 追寻记忆的痕迹-读书简记 情绪-读书简记 远见:如何规划职业生涯3阶段-读书简记 存在主义心理治疗-读书简记 P·E·T父母效能训练-读书简记 彼得·林奇的成功投资-读书简记 2015-2020美国居民膳食指南-读书简记 中国居民膳食指南(2016)-读书简记 批判性思维-读书简记 代码大全-读书简记 游戏力-读书简记 成功,动机与目标-读书简记 基因组:人种自传23章-读书简记 YOU身体使用手册-读书简记 登天之梯-读书简记 为什么学生不喜欢上学-读书简记 请停止无效努力-读书简记 麦肯基疗法-读书简记 跟简七学理财-课程简记 指数基金投资指南(2017中信版)-读书简记 指数基金投资指南(2015雪球版)-读书简记 让大脑自由:释放天赋的12条定律-读书简记 养育的选择-读书简记 GPU高性能编程CUDA实战-读书简记 百万富翁快车道-读书简记 原则-读书简记 穷查理宝典-读书简记 C++并发编程实战-读书简记 哲学家们都干了些什么-读书简记 Effective C++-读书简记 通往财富自由之路-读书简记 Linux命令行与Shell脚本编程大全-读书简记 刻意练习-读书简记 写给大家看的设计书-读书简记 习惯的力量-读书简记 好好学习-读书简记 硅谷最受欢迎的情商课-读书简记 富爸爸,穷爸爸-读书简记 如何说孩子才会听,怎么听孩子才会说-读书简记 阻力最小之路-读书简记 ProGit-读书简记 思考:快与慢-读书简记 C语言深度剖析-读书简记 编程珠玑-读书简记 Head First 设计模式-读书简记 反脆弱-读书简记 小强升职记-读书简记 观呼吸-读书简记 黑客与画家-读书简记 晨间日记的奇迹-读书简记 如何高效学习-读书简记 即兴的智慧-读书简记 精力管理-读书简记 C++编程思想-读书简记 拖延心理学-读书简记 自控力-读书简记 伟大是熬出来的-读书简记 生命不能承受之轻-读书简记 高效能人士的七个习惯-读书简记 没有任何借口-读书简记 一分钟的你自己-读书简记 人生不设限-读书简记 暗时间-读书简记

配置SSD进行目标检测

2017年08月01日

写在前面


最近学习了SSD目标检测算法,并对SSD进行配置和测试。有时间会对SSD算法进行具体介绍和分析,下面是配置和实验SSD时的记录和趟过的一些坑。

一 安装配置


1 下载源码。

git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd

2 安装依赖,参考Caffe官网指导

3 编译。

# 根据你的Caffe installation更改Makefile.config,需要特别注意CUDA_ARCH的配置,后面会讲到。
cp Makefile.config.example Makefile.config
make -j8
# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.
make py
make test -j8
# (Optional)
make runtest -j8

4 如果上述步骤一切顺利,恭喜,佩服你人品。由于操作系统版本、依赖库版本、显卡版本等差异,中间往往会遇到各种问题。其中我遇到的问题放在了问题汇总小结。

二 训练测试


1 下载Fully Convolutional Reduced VGGNet,解压到$CAFFE_ROOT/models/VGGNet/下。

2 下载VOC2007和VOC2012数据集。

# Download the data.
cd $HOME/data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
# Extract the data.
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar

3 创建LMDB文件。

cd $CAFFE_ROOT
# Create the trainval.txt, test.txt, and test_name_size.txt in data/VOC0712/
./data/VOC0712/create_list.sh
# You can modify the parameters in create_data.sh if needed.
# It will create lmdb files for trainval and test with encoded original image:
#   - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_trainval_lmdb
#   - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_test_lmdb
# and make soft links at examples/VOC0712/
./data/VOC0712/create_data.sh

4 训练

# It will create model definition files and save snapshot models in:
#   - $CAFFE_ROOT/models/VGGNet/VOC0712/SSD_300x300/
# and job file, log file, and the python script in:
#   - $CAFFE_ROOT/jobs/VGGNet/VOC0712/SSD_300x300/
# and save temporary evaluation results in:
#   - $HOME/data/VOCdevkit/results/VOC2007/SSD_300x300/
# It should reach 77.* mAP at 120k iterations.
python examples/ssd/ssd_pascal.py

5 评估

# If you would like to test a model you trained, you can do:
python examples/ssd/score_ssd_pascal.py 

# If you would like to attach a webcam to a model you trained, you can do:
python examples/ssd/ssd_pascal_webcam.py

6 如使用其他库训练,参照data/OTHERDATASET,推荐使用examples/ssd.ipynb来检查新训练库是否正确的配置。

三 进行检测


1 可以使用上述自己训练好的模型或者论文作者在这里给出的训练好的模型。examples/ssd_detect.ipynb或者examples/ssd/ssd_detect.cpp给出了如何使用SSD模型进行检测的细节。

./build/examples/ssd/ssd_detect.bin  models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt  models/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel IMG.LIST  #检测例子,其他IMG.LIST给出了待检测图像或视频的列表。

2 examples/ssd/plot_detections.py给出了如何利用ssd_detect的输入绘制检测结果的细节。

四 问题汇总


1 编译过程遇到Check failed: error == cudaSuccess (10 vs. 0) invalid device function问题。原因多在于CUDA_ARCH的配置。Linux下使用lspci | grep VGA查看显卡型号,从这里,找到对应自己显卡的计算能力然后对CUDA_ARCH进行配置,注释掉高于自己显卡计算能力的部分。

2 编译过程遇到json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array escape问题。看有人说升级GCC到5.3以上,不要盲目试,看自己系统如果是Ubuntu 14或者之下,升级后还有很多依赖库不兼容,会很麻烦。正确的姿势是不动系统的编译环境,修改json_parser_read.hpp文件。

sudo vi /usr/include/boost/property_tree/detail/json_parser_read.hpp

将257行开始的escape代码段注释掉即可。

3 安装boost依赖失败(sudo apt-get install libboost-all-dev),出现The following packages have unmet dependencies: libboost-all-dev : Depends: libboost-iostreams-dev but it is not going to be installed等错误。解决方法是用aptitude安装。

sudo aptitude install libboost-all-dev 

4 运行example/ssd/ssd_pascal.py出现syncedmem.cpp:78 Check failed: error == cudaSuccess (8 vs. 0) out of memory问题。修改ssd_pascal.py中的gpus="0,1,2,3"为你GPU的数目。由于只有一块GPU,修改为gpus="0"。继续运行可能还会出现out of memory的错误,如果你的显卡内存比较小的话。修改ssd_pascal.py文件中的batch_size为更小的数目(原始值是32).

5 出现protobuf兼容等问题,下载protobuf,用系统编译器进行编译安装,然后用protoc命令重新生成caffe/.build_release/src/caffe/proto/中的caffe.pb.cc等文件。

6 和Anaconda一起使用。建议先make完成以后再安装Anaconda(安装过的话make之前先注释掉Anaconda的PATH)。然后使用conda install protobuf安装protobuf依赖。

参考


[1] SSD开源项目

[2] syncedmem.cpp:78 Check failed: error == cudaSuccess (2 vs. 0) out of memory

[3] Caffe安装指导


版权声明:本文为博主原创文章,转载请注明出处 本文总阅读量    次