zoukankan      html  css  js  c++  java
  • darknet集成遇到的问题以及解决方法

    将darknet集成进工程时,遇到了一些问题,下面记录一下解决方法:

    集成步骤:

    首先在yolo编译的时候,需要将三个开关打开:

    #define GPU
    #define CUDNN
    #define OPENCV

    将编译出来的libdarknet.so以及darknet.h分别放入相应的工程文件夹中;

    在CMakeLists.txt中将相应的lib路径以及include路径添加进去;

    添加相应的cpp和hpp以及main函数测试代码,并修改相应的CMakeLists.txt;

    编译

    遇到的问题以及解决方法如下:

    问题:load_network之类的函数没有定义,找不到

    原因:yolo是纯c框架,工程是C++的,因此要调用的函数需要加上extern  "C" {}

    解决方法:在darknet.h中用extern  "C" {}包括所有的函数定义

    问题:list ambigous;

    原因:在C++的标准库中有list这个容器,而在darknet.h中又定义了同名的结构体;

    解决方法:将工程中全局的using namespace std;去掉,改用std::

    问题:caffe::Caffe::set_mode(caffe::Caffe::GPU);在这里报错,具体忘记了是什么错误,总之就是与darknet.h中的#define GPU有关

    解决方法:

        #undef  GPU
        caffe::Caffe::set_mode(caffe::Caffe::GPU);
        #define GPU

    问题:0号显卡运行工程的时候正常,改用1号显卡时报错:CUDA Error: an illegal memory access was encountered ./src/cuda.c:36: check_error: Assertion `0' failed.

    原因:在网上搜索了相关的解决方法,一般都是将计算能力那个地方更改之后重新编译yolo,但是与我不是同样的情况,我是在调用setdeviceid的时候弄错了;

    解决方法:应该先调用cuda_set_device(gpu_id);然后再调用load_network(_cfgfile, _weightfile, 0);

    目前关于yolo的就是上述的这些问题;

    还有另外的一些软链接找不到的问题,后来发现是连接到系统路径去了,而不是连接到同一个文件夹下的库,不知道如何造成的,只能删掉重新链接。

  • 相关阅读:
    java实现简单文件操作工具类
    (leetCode)Reverse Integer—颠倒整数
    (FLEX)AS3,for循环里面加监听,只能取到最后一个元素的取巧方法解决方法
    .net backend return json string , used by frontend
    Server Error in '/' Application. 访问Webservice报错。解决办法之一。
    Win7 64位ORACLE取数字乱码的解决
    WIN7-64位安装PLSQL-Developer步骤
    在Win7 64位操作系统下安装Oracle 10g
    HashMap 数据结构分析
    JAVA NIO原理剖析
  • 原文地址:https://www.cnblogs.com/rainsoul/p/8711229.html
Copyright © 2011-2022 走看看