zoukankan      html  css  js  c++  java
  • caffe-ssd安装问题解决

    1.Check failed: a <= b <0 vs -1.19209e-007>

    网上办法是注释掉 CHECK_LE(a, b),但是这样会出大问题。解决办法见2。

    如果注释掉 CHECK_LE(a, b) 会出现Data layer prefetch queue empty

    不注释CHECK_LE(a, b) 会出现错误 a可能大于b

    2.训练过程中出现blocking_queue.cpp:50] Data layer prefetch queue empty

    法一:找到文件 /data/VOC0712/create_data.sh ,将width=0改为width=300,将height=0改为height=300,生成数据,验证无效。https://blog.csdn.net/weixin_41057320/article/details/81080419

    法二:这种问题出现通常是注释掉 CHECK_LE(a, b) 出现Data layer prefetch queue empty。导致程序出现死循环。

    解决办法修改src/caffe/util/sampler.cpp,如下面修改代码所示//renew注释下,加入两个判断,使得bbox长宽不要越界。

    void SampleBBox(const Sampler& sampler, NormalizedBBox* sampled_bbox) {
      // Get random scale.
      CHECK_GE(sampler.max_scale(), sampler.min_scale());
      CHECK_GT(sampler.min_scale(), 0.);
      CHECK_LE(sampler.max_scale(), 1.);
      float scale;
      caffe_rng_uniform(1, sampler.min_scale(), sampler.max_scale(), &scale);
     
      // Get random aspect ratio.
      CHECK_GE(sampler.max_aspect_ratio(), sampler.min_aspect_ratio());
      CHECK_GT(sampler.min_aspect_ratio(), 0.);
      CHECK_LT(sampler.max_aspect_ratio(), FLT_MAX);
      float aspect_ratio;
      caffe_rng_uniform(1, sampler.min_aspect_ratio(), sampler.max_aspect_ratio(),
          &aspect_ratio);
     
      aspect_ratio = std::max<float>(aspect_ratio, std::pow(scale, 2.));
      aspect_ratio = std::min<float>(aspect_ratio, 1 / std::pow(scale, 2.));
     
      // Figure out bbox dimension.
      float bbox_width = scale * sqrt(aspect_ratio);
      float bbox_height = scale / sqrt(aspect_ratio);
     
      //renew
      if(bbox_width>=1.0)
      {
        bbox_width=1.0;
      }
      if(bbox_height>=1.0)
      {
        bbox_height=1.0;
      }
     
      // Figure out top left coordinates.
      float w_off, h_off;
      caffe_rng_uniform(1, 0.f, 1 - bbox_width, &w_off);
      caffe_rng_uniform(1, 0.f, 1 - bbox_height, &h_off);
     
      sampled_bbox->set_xmin(w_off);
      sampled_bbox->set_ymin(h_off);
      sampled_bbox->set_xmax(w_off + bbox_width);
      sampled_bbox->set_ymax(h_off + bbox_height);
    }
    

    原文:https://blog.csdn.net/LuohenYJ/article/details/88416180
    修改了c/c++文件,需要重新编译

    make clean
    make all -j16
    make test -j16
    

    3.释放GPU内存

    sudo fuser -v /dev/nvidia* #查找占用GPU资源的PID
    kill -9 pid #pid替换成相应的数字序号
    

    然后再执行nvidia-smi就可以看到内存已经被释放了

    4.Check failed: status == CUDNN_STATUS_SUCCESS(4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR

    解决办法:因为你没有permission使用cudnn引擎,命令前加 sudo即可,我是这样解决的。具体参考:https://github.com/shicai/MobileNet-Caffe/issues/3

    5.关于python和sudo python的小问题解决办法

    法一:
    之前在搞ssd的时候没出问题,后来重装了一下系统,把它拷回来,发现出了点问题,在训练或者测试的时候,需要输入:python examples/ssd/ssd_pascal.py 或者python examples/ssd/score_ssd_coco.py,但是这时会出现这个错误:

    Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0)  
    CUDNN_STATUS_INTERNAL_ERROR 
    

    这个错误搞过caffe的都知道,没有权限问题,于是我就加上sudu,改成:

    sudo python examples/ssd/ssd_pascal.py 或者
    sudo python examples/ssd/score_ssd_coco.py,然而这时候又出现新的问题:
    no module named caffe
    

    这个感觉不应该啊,明明之前把pycaffe的路径放到bashrc里面啦。

    后来sudo python ,打开输入import caffe 发现果然没有,no module named caffe,而pythonimport caffe就很正常。

    找到这个问题的方法是:

    python,import sys,sys.path,看输出的路径。
    
    sudo python,import sys,sys.path,看输出的路径。
    

    发现这两个并不一样。python里的有caffe的路径,而sudo python没有。

    解决办法:

    新建一个lujing.pth,打开,把你的caffe—python路径拷进去,比如我的:/home/zwj/Documents/ssd/caffe/python,把这个文件拷到/usr/lib/python2.7/dist-packages,重新打开终端运行sudo python examples/ssd/score_ssd_coco.py不再出问题啦。

    sudo mv lujing.pth  /usr/lib/python2.7/dist-packages
    

    法二:

    python, 路径是 /home/lsz/anaconda2/bin/python2.7

    直接使用: sudo python testBatchModel.py input.txt out/ , 出现没有caffe包的错误。

    是因为, sudo python 调用的是 /user/local/bin/python , 两者调用的不是同一个python解释器。

    如果使用: sudo /home/lsz/anaconda2/bin/python2.7 testBatchModel.py input.txt out/, 则不会报错。

    原文:https://blog.csdn.net/qq_23944915/article/details/91492986

    6.caffe-ssd运行过程中遇到的loss = nan错误:

    I0216 10:16:31.513517 16036 sgd_solver.cpp:138] Iteration 50, lr = 0.001
    I0216 10:16:50.461427 16036 solver.cpp:243] Iteration 60, loss = nan
    I0216 10:16:50.461556 16036 solver.cpp:259]     Train net output #0: mbox_loss = nan (* 1 = nan loss)
    I0216 10:16:51.435171 16036 sgd_solver.cpp:138] Iteration 60, lr = 0.001
    I0216 10:17:10.880903 16036 solver.cpp:243] Iteration 70, loss = nan
    I0216 10:17:10.880944 16036 solver.cpp:259]     Train net output #0: mbox_loss = nan (* 1 = nan loss)
    I0216 10:17:10.881077 16036 sgd_solver.cpp:138] Iteration 70, lr = 0.001
    

    损失值溢出,从网上找来的意见是修改base_lr,乘以0.1,改为0.0001

    只是修改solver.prototxt中的参数,重新执行后base_lr没有改变,但是mbox_loss没有再出现=nan的情况

    ctrl+c中断程序后,再重新执行,需要删除/home/idc/deep/gjj/caffe/models/VGGNet/VOC0712/SSD_300x300路径下的临时文件,不然会从中断点继续执行。
    原文:https://blog.csdn.net/panxiying1993/article/details/79089214

    7.python2.7安装opencv

    pip install opencv-python
    
  • 相关阅读:
    Java 9 揭秘(9. 打破模块封装)
    Java 9 揭秘(8. JDK 9重大改变)
    好书分享 ——《深度工作》
    Java 9 揭秘(7. 创建自定义运行时映像)
    Java 9 揭秘(6. 封装模块)
    如何更好地管理你的精力,时间和专注力实现最佳表现
    这是您一直期待的所有iOS 11功能的屏幕截图
    我为什么不敢也不想写自己的经验和想法?
    无聊? 现在你知道为什么了!
    Java 9 揭秘(5. 实现服务)
  • 原文地址:https://www.cnblogs.com/dindin1995/p/13059178.html
Copyright © 2011-2022 走看看