如何在caffe下实现DSOD

一.配置SSD

在这里插入图片描述

二.配置DSOD

1.下载DSOD源码

cd Downloads
git clone https://github.com/szq0214/DSOD.git

2.创建相关子目录,并移动文件

  • 创建目录example/dsod/,并将文件 DSOD300_pascal.py, DSOD300_pascal++.py, DSOD300_coco.py, score_DSOD300_pascal.pyDSOD300_detection_demo.py 移动到该目录下.
  • 创建目录example/grp_dsod/,并将 文件GRP_DSOD320_pascal.pyscore_GRP_DSOD320_pascal.py 移动到该目录下.
  • 将文件python/caffe/model_libs.py 备份,并将git得到的model_libs.py移动到目录python/caffe

3.修改相关参数

  • DSOD300_pascal.py
# The database file for training data. Created by data/VOC0712/create_data.sh
train_data = "/home/amax/caffe/data/VOCdevkit/VOC0712/lmdb/VOC0712_trainval_lmdb"

# The database file for testing data. Created by data/VOC0712/create_data.sh
test_data = "/home/amax/caffe/data/VOCdevkit/VOC0712/lmdb/VOC0712_test_lmdb"

# Defining which GPUs to use.
gpus = "0"  #"0,1,2,3,4,5,6,7"

# Divide the mini-batch to different GPUs.
batch_size =4  #32
accum_batch_size = 16  #128
  • DSOD300_pascal++.py

  • DSOD300_coco.py

  • score_DSOD300_pascal.py

  • DSOD300_detection_demo.py

三.训练和测试

  • Train a DSOD model on VOC 07+12:

    python examples/dsod/DSOD300_pascal.py
    
  • Train a DSOD model on VOC 07++12:

    python examples/dsod/DSOD300_pascal++.py
    
  • Train a DSOD model on COCO trainval:

    python examples/dsod/DSOD300_coco.py
    
  • Evaluate the model (DSOD):

    python examples/dsod/score_DSOD300_pascal.py
    
  • Run a demo (DSOD):

    python examples/dsod/DSOD300_detection_demo.py
    
  • Train a GRP_DSOD model on VOC 07+12:

    python examples/grp_dsod/GRP_DSOD320_pascal.py
    
  • Evaluate the model (GRP_DSOD):

    python examples/dsod/score_GRP_DSOD320_pascal.py
    

四.错误集锦

1.NameError: name ‘DSOD300_V3_Body’ is not defined”

Traceback (most recent call last):
File “examples/dsod/DSOD300_pascal.py”, line 380, in 
DSOD300_V3_Body(net, from_layer=‘data’)
NameError: name ‘DSOD300_V3_Body’ is not defined
  • 解决方案
    • 将Git到的model_libs.py存放到python/caffe/ 文件夹下

2.Check failed: mdb_status == 0 (2 vs. 0) No such file or directory

I0314 15:43:29.332816 26917 layer_factory.hpp:77] Creating layer data
I0314 15:43:29.333189 26917 net.cpp:100] Creating Layer data
I0314 15:43:29.333199 26917 net.cpp:408] data -> data
I0314 15:43:29.333227 26917 net.cpp:408] data -> label
F0314 15:43:29.336953 26936 db_lmdb.hpp:15] Check failed: mdb_status == 0 (2 vs. 0) No such file or directory
*** Check failure stack trace: ***
    @     0x7fe8101c95cd  google::LogMessage::Fail()
    @     0x7fe8101cb433  google::LogMessage::SendToLog()
    @     0x7fe8101c915b  google::LogMessage::Flush()
    @     0x7fe8101cbe1e  google::LogMessageFatal::~LogMessageFatal()
    @     0x7fe81092fad0  caffe::db::LMDB::Open()
    @     0x7fe8109410f6  caffe::DataReader<>::Body::InternalThreadEntry()
    @     0x7fe810960f35  caffe::InternalThread::entry()
    @     0x7fe80325c5d5  (unknown)
    @     0x7fe7eeb196ba  start_thread
    @     0x7fe80ea4641d  clone
    @              (nil)  (unknown)
Aborted (core dumped)
  • 解决方案
    • 检查DSOD300_pascal.pytrain_datatest_data等路径

3.Check failed: error == cudaSuccess (2 vs. 0) out of memory

F0314 16:14:58.156533  3446 syncedmem.cpp:56] Check failed: error == cudaSuccess (2 vs. 0)  out of memory
*** Check failure stack trace: ***
    @     0x7f517f76a5cd  google::LogMessage::Fail()
    @     0x7f517f76c433  google::LogMessage::SendToLog()
    @     0x7f517f76a15b  google::LogMessage::Flush()
    @     0x7f517f76ce1e  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f517fee6d30  caffe::SyncedMemory::to_gpu()
    @     0x7f517fee5cf9  caffe::SyncedMemory::mutable_gpu_data()
    @     0x7f517fe21532  caffe::Blob<>::mutable_gpu_data()
    @     0x7f51800c425d  caffe::BatchNormLayer<>::Forward_gpu()
    @     0x7f517fe491a2  caffe::Net<>::ForwardFromTo()
    @     0x7f517fe492c7  caffe::Net<>::Forward()
    @     0x7f517ff0bb60  caffe::Solver<>::Step()
    @     0x7f517ff0c5ee  caffe::Solver<>::Solve()
    @           0x40bd14  train()
    @           0x4077e8  main
    @     0x7f517df00830  __libc_start_main
    @           0x4080b9  _start
    @              (nil)  (unknown)
Aborted (core dumped)
  • 解决方案
    • 调整DSOD300_pascal.pybatch_sizeaccum_batch_size大小即可

4.重启大法好

五. 其他

1.Python format 格式化函数

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'
>>>"{0} {1}".format("hello", "world")  # 设置指定位置
‘hello world'
>>>"{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'

2.Pycharm中添加caffe环境变量

import sys
sys.path.append('/home/amax/GWL/DSOD/caffe_DSOD/python')

六.参考链接

【1】https://github.com/szq0214/DSOD

【2】http://www.runoob.com/python/att-string-format.html

posted @ 2019-03-14 19:30  清风与归_G  阅读(540)  评论(0编辑  收藏  举报