Caffe使用step by step:r-cnn目标检测代码
深度学习算法火起来之后,基于深度学习各种模型都如雨后春笋一般在各个领域广泛应用。
由于想把深度学习算法应用在在视频目标检测方向,得到一个较好的结果。由于视频数据的复杂性,因此使用深度学习算法在视频中的目标检测难度比较大,但是仍然可以借鉴现阶段state-of-art的目标检测算法r-cnn。通过自己运行r-cnn目标检测代码,可以明确目标检测的流程,同时构建目标检测的baseline。下面详细讲解构建r-cnn框架的过程和方法以及过程中遇到的问题解决方案。
在跑r-cnn代码之前需要明确一些问题:
- r-cnn代码是基于caffe构建的,因此在跑r-cnn代码之前,首先需要搭建好caffe平台;
- caffe的版本必须时0.999,在r-cnn官网已经明确,r-cnn不支持最新的caffe,0.999版本见r-cnn的github主页。
下面,我们一步步搭建r-cnn代码。跑r-cnn代码流程在r-cnn的gtihub主页已经非常清楚。按照官网说明一步步操作。
这里主要讲解一些r-cnn代码构建时的一些问题:
编译caffe-0.999时遇到的错误:
make: *** [build/src/caffe/util/math_functions.cuo] Error 2
解决方法:地址
修改文件 caffe/include/caffe/util/math_functions.hpp中
修改前:
using std::signbit;
DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = signbit(x[i]));
修改后:
// using std::signbit;
DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = std::signbit(x[i]));
caffe-0.999版本下make matcaffe出问题的解决方案:
在修改makefile.config中CUDA_ARCH,修改后为:
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_50,code=compute_50
matcaffe编译不能通过,解决方法
通过修改makefile中第266行和272行中的问题:
266行修改前:
$(MAT$(PROJECT)_SO): $(MAT$(PROJECT)_SRC) $(STATIC_NAME)
修改后:
$(MAT$(PROJECT)_SO): $(MAT$(PROJECT)_SRC) $(NAME)
在将rcnn代码应用到自己的数据集时,需要注意的是:
1.将已经设计好的网络定义文件prototxt和提取好的window_files拷贝到external/caffe/example/finetune_voc_exp/文件夹下;
2.使用caffe的cmd命令来对网络进行finetuning;
1).使用cd 命令进入external/caffe/example/finetune_vid_exp/文件夹下;
2).使用caffe/build/caffe工具来对网络进行finetuning,由于caffe的接口变化,rcnn官网上的命令已不能使用,具体命令为:
GLOG_logtostderr=1 ../../build/tools/caffe train -solver pascal_finetune_solver.prototxt -weights /home/startag/Desktop/code/rcnn-master/data/caffe_nets/ilsvrc_2012_train_iter_310k 2>&1 | tee log.txt
在获取到bbox之后,生成window_file之后,使用该window_file进行DL网络训练时出现错误信息:
OpenCV Error: Assertion failed ( <= roi.x && <= roi.width && roi.x + roi.width <= m.cols && <= roi.y && <= roi.height && roi.y + roi.height <= m.rows) in Mat, file /home/uujjwal/libraries/opencv-3.0./modules/core/src/matrix.cpp, line
terminate called after throwing an instance of 'cv::Exception'
what(): /home/uujjwal/libraries/opencv-3.0./modules/core/src/matrix.cpp:: error: (-) <= roi.x && <= roi.width && roi.x + roi.width <= m.cols && <= roi.y && <= roi.height && roi.y + roi.height <= m.rows in function Mat
*** Aborted at (unix time) try "date -d @1447952145" if you are using GNU date ***
解决方案:地址
Caffe使用step by step:r-cnn目标检测代码的更多相关文章
- CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet
在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理). ...
- 皮卡丘检测器-CNN目标检测入门教程
目标检测通俗的来说是为了找到图像或者视频里的所有目标物体.在下面这张图中,两狗一猫的位置,包括它们所属的类(狗/猫),需要被正确的检测到. 所以和图像分类不同的地方在于,目标检测需要找到尽量多的目标物 ...
- [转]CNN目标检测(一):Faster RCNN详解
https://blog.csdn.net/a8039974/article/details/77592389 Faster RCNN github : https://github.com/rbgi ...
- 标题 发布状态 评论数 阅读数 操作 操作 CNN目标检测系列算法发展脉络简析——学习笔记(三):Fast R-CNN
最近两周忙着上网课.投简历,博客没什么时间写,姑且把之前做的笔记放上来把... 下面是我之前看论文时记的笔记,之间copy上来了,内容是Fast R-CNN的,以后如果抽不出时间写博客,就放笔记上来( ...
- CNN之yolo目标检测算法笔记
本文并不是详细介绍yolo工作原理以及改进发展的文章,只用做作者本人回想与提纲. 1.yolo是什么 输入一张图片,输出图片中检测到的目标和位置(目标的边框) yolo名字含义:you only lo ...
- 目标检测YOLOv1-v3——学习笔记
Fast RCNN更准一些.其损失函数比YOLO简单. YOLO更快 YOLO(You Only Look Once) 简介: 测试过程: 训练过程: 坐标.含有.不含.类别预测 目标检测的效果准确率 ...
- 使用Faster R-CNN做目标检测 - 学习luminoth代码
像玩乐高一样拆解Faster R-CNN:详解目标检测的实现过程 https://mp.weixin.qq.com/s/M_i38L2brq69BYzmaPeJ9w 直接参考开源目标检测代码lumin ...
- Caffe使用step by step:faster-rcnn目标检测matlab代码
faster-rcnn是MSRA在物体检测最新的研究成果,该研究成果基于RCNN,fast rcnn以及SPPnet,对之前目标检测方法进行改进,faster-rcnn项目地址.首先,faster r ...
- enode框架step by step之框架要实现的目标的分析思路剖析1
enode框架step by step之框架要实现的目标的分析思路剖析1 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode ...
随机推荐
- [webpack]--webpack 如何解析代码模块路径
前言 webpack是如何解析代码模块路径 webpack 中有一个很关键的模块 enhanced-resolve 就是处理依赖模块路径的解析的,这个模块可以说是 Node.js 那一套模块路径解析的 ...
- 【linux报错】安装好虚拟机后,挂载光盘报错:mount:you must specify the filesystem type
问题现象: 问题原因: 当时光盘的“已连接”的勾没有勾上 解决后:
- msil 笔记
public class TestImpl : ITest { // Properties public string Address { get { return "abc"; ...
- PS入门到精通完全自学教程
ps视频教程,ps自学视频教程.ps免费视频教程下载,PS入门到精通完全自学教程视频内容较大,分为俩部分: PS入门到精通完全自学教程-第一部分(带swf播放器):百度网盘,https://pan.b ...
- android安卓生成密钥keystore(命令控制)
android安卓生成密钥keystore(命令控制) • 配置JDK 详细教程 https://blog.csdn.net/u012934325/article/details/73441617/ ...
- vue-cli 2.x和3.x安装的区别
1.全局安装vue的脚手架:vue-cli(指定版本后面加@2.x.x) npm install -g vue-cli npm install -g @vue/cli 2.使用初始化 vue 项目: ...
- 自动分配ip的方法- 【Linux】
1. 查看本机无线网络使用的网卡 2. 设置vbox的网络连接为桥接,并选择本机无线网络对应的网卡 3. 进入系统,输入ifconfig命令,记录下系统的HWaddr 4. 修改系统ip配置文 ...
- Flash导出安卓端apk
最近外甥女在学校做了一个演示视频,基于flash做的,希望小舅给她导出成可以运行在pc/android端的可执行程序.看了下过程还是蛮复杂的,还只能一天时间.重新照葫芦画瓢做一款是来不及了,由于以前基 ...
- Elasticsearch的停用词(stopwords)
1.问题 在使用搜索引擎(Elasticsearch或Solr)作为应用的后台搜索平台的时候,会遇到停用词(stopwords)的问题. 在信息检索中,停用词是为节省存储空间和提高搜索效率,处理文本时 ...
- Linux常用压缩解压命令
tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...