zoukankan      html  css  js  c++  java
  • Caffe使用step by step:r-cnn目标检测代码

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

      由于想把深度学习算法应用在在视频目标检测方向,得到一个较好的结果。由于视频数据的复杂性,因此使用深度学习算法在视频中的目标检测难度比较大,但是仍然可以借鉴现阶段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 (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in Mat, file /home/uujjwal/libraries/opencv-3.0.0/modules/core/src/matrix.cpp, line 495
    terminate called after throwing an instance of 'cv::Exception'
    what():  /home/uujjwal/libraries/opencv-3.0.0/modules/core/src/matrix.cpp:495: error: (-215) 0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows in function Mat
    *** Aborted at 1447952145 (unix time) try "date -d @1447952145" if you are using GNU date ***

    解决方案:地址

    
    
  • 相关阅读:
    学生排队 201703-2
    让动画停在最后一帧 forwards animation-fill-mode
    新版本的charles代理本地接口
    移动端调试插件Tencent / vConsole
    HDU
    Codeforces Round #668 (Div. 2)(A B C D)
    The 13th Chinese Northeast Collegiate Programming Contest
    2020, XIII Samara Regional Intercollegiate Programming Contest (B D)
    tarjan算法 双连通分量
    Codeforces Round #666 (Div. 2) (A B C D)
  • 原文地址:https://www.cnblogs.com/empty16/p/4897004.html
Copyright © 2011-2022 走看看