深度学习算法火起来之后,基于深度学习各种模型都如雨后春笋一般在各个领域广泛应用。

  由于想把深度学习算法应用在在视频目标检测方向,得到一个较好的结果。由于视频数据的复杂性,因此使用深度学习算法在视频中的目标检测难度比较大,但是仍然可以借鉴现阶段state-of-art的目标检测算法r-cnn。通过自己运行r-cnn目标检测代码,可以明确目标检测的流程,同时构建目标检测的baseline。下面详细讲解构建r-cnn框架的过程和方法以及过程中遇到的问题解决方案。

  在跑r-cnn代码之前需要明确一些问题:

  1. r-cnn代码是基于caffe构建的,因此在跑r-cnn代码之前,首先需要搭建好caffe平台;
  2. 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目标检测代码的更多相关文章

  1. CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet

    在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理). ...

  2. 皮卡丘检测器-CNN目标检测入门教程

    目标检测通俗的来说是为了找到图像或者视频里的所有目标物体.在下面这张图中,两狗一猫的位置,包括它们所属的类(狗/猫),需要被正确的检测到. 所以和图像分类不同的地方在于,目标检测需要找到尽量多的目标物 ...

  3. [转]CNN目标检测(一):Faster RCNN详解

    https://blog.csdn.net/a8039974/article/details/77592389 Faster RCNN github : https://github.com/rbgi ...

  4. 标题 发布状态 评论数 阅读数 操作 操作 CNN目标检测系列算法发展脉络简析——学习笔记(三):Fast R-CNN

    最近两周忙着上网课.投简历,博客没什么时间写,姑且把之前做的笔记放上来把... 下面是我之前看论文时记的笔记,之间copy上来了,内容是Fast R-CNN的,以后如果抽不出时间写博客,就放笔记上来( ...

  5. CNN之yolo目标检测算法笔记

    本文并不是详细介绍yolo工作原理以及改进发展的文章,只用做作者本人回想与提纲. 1.yolo是什么 输入一张图片,输出图片中检测到的目标和位置(目标的边框) yolo名字含义:you only lo ...

  6. 目标检测YOLOv1-v3——学习笔记

    Fast RCNN更准一些.其损失函数比YOLO简单. YOLO更快 YOLO(You Only Look Once) 简介: 测试过程: 训练过程: 坐标.含有.不含.类别预测 目标检测的效果准确率 ...

  7. 使用Faster R-CNN做目标检测 - 学习luminoth代码

    像玩乐高一样拆解Faster R-CNN:详解目标检测的实现过程 https://mp.weixin.qq.com/s/M_i38L2brq69BYzmaPeJ9w 直接参考开源目标检测代码lumin ...

  8. Caffe使用step by step:faster-rcnn目标检测matlab代码

    faster-rcnn是MSRA在物体检测最新的研究成果,该研究成果基于RCNN,fast rcnn以及SPPnet,对之前目标检测方法进行改进,faster-rcnn项目地址.首先,faster r ...

  9. enode框架step by step之框架要实现的目标的分析思路剖析1

    enode框架step by step之框架要实现的目标的分析思路剖析1 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode ...

随机推荐

  1. 4513: [Sdoi2016]储能表

    4513: [Sdoi2016]储能表 链接 分析: 数位dp. 横坐标和纵坐标一起数位dp,分别记录当前横纵坐标中这一位是否受n或m的限制,在记录一维表示当前是否已经大于k了. 然后需要两个数组记录 ...

  2. 从轻测到上线,WeTest与《一起来捉妖》测试方案大公开

    从2016年Pokémon GO引发的AR游戏热潮开始,国内就一直在期待新的一款具备代表性的AR游戏的头部作品. 4月11日的腾讯首款AR探索手游<一起来捉妖>不仅为国内市场注入了新的活力 ...

  3. STM8S——Universal asynchronous receiver transmitter (UART)

    UART基本介绍: 通用异步收发器UART他的功能非常强大 我们只使用UART的全双工异步通信功能,使用中断接收数据. UART_RX:串行数据输入. UART_TX:串行数据输出. 硬件支持: 连接 ...

  4. JavaScript——引用类型之数组

    前言 之前本菜打算在写完基本类型后写引用类型Object的,因为Object是引用类型的基础,其他的引用类型也是以Object为根本.只是关于对象的基本认识与简单操作确实可写的不多,打算之后与原型.原 ...

  5. 年薪30W的软件测试“老司机”工作经验

    这几天,新入职的小MM提议“老司机”们把自己这些年的软件测试工作经验跟大家分享一下,让新同学学习学习,利用空闲时间我整理了一些,可能不全,勉强看看,这也算是对自己这些年的工作总结. 测试阶段划分 1. ...

  6. nGrinder性能测试平台的安装部署

    1.从GitHub下载war包: https://github.com/naver/ngrinder/releases 2.把ngrinder-controller-3.4.2.war重命名为ngri ...

  7. 解决Unity烘焙阴影锯齿精度不足的问题

    烘焙阴影锯齿问题  烘焙后阴影锯齿明显,如下图: 烘焙的光照贴图质量主要受LightmapParameters 的Blur Radius和抗锯齿级别影响, 默认最高级别如下: 如果最高级别不能达到好的 ...

  8. 【snaptype nexus】搭建maven私服仓库

    搭建本地开发私库,旨在解决本地开始受限于网络环境的问题:具体的搭建步骤主要包含以下几个步骤: 1.私服服务器使用的是ubuntu,首先下载安装包(版本号:2.12),下载地址:http://www.s ...

  9. CocoStuff—基于Deeplab训练数据的标定工具【四、用该工具标定个人数据】

    一.说明 本文为系列博客第四篇,主要讲述笔者在正式使用该工具使用自定义标签标注自己的图片的过程. 二.数据整理 相信大家已经在 *占坑

  10. Hyperledger Fabric Capabilities——超级账本功能汇总

    Hyperledger Fabric是一种模块化的区块链架构,是分布式记账技术(DLT)的一种独特的实现,它提供了可供企业运用的网络,具备安全.可伸缩.加密和可执行等特性.Hyperledger Fa ...