caffe下SSD训练与测试

SSD: Single Shot MultiBox Detector
从 Github 上面下载源工程代码:caffe-SSD

配置Caffe-SSD

  • 进入caffe-ssd 主目录:cp /home/xxx/.../caffe-ssd/

    cp Makefile.config.example Makefile.config
    
  • 编译项目:(进入 caffe-ssd 主目录)

       make -j8
       make py
       make test -j8
       make runtest -j8
    

    CUDA 版本比较高的需要注释掉config里面最后一行内容:

Makefile.config
  • 数据文件准备

    • 预训练模型(VGG):VGG_ILSVRC_16_layers_fc_reduced.caffemodel
      (下载地址:密码: t9ub

      下载完毕后将VGG模型放到caffe主目录下 models\VGGNet 下面(如果没有的话,models 下面没有的话mkdir VGGNet)

    • VOC2007 和 VOC2012 数据集

      进入caffe主目录下的data目录:

    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
    

    如果安装失败,请转到:(VOC 2007 & 2012 Dataset 密码:j3in

    紧接着解压:

    tar -xvf VOCtrainval_11-May-2012.tar 
    tar -xvf VOCtrainval_06-Nov-2007.tar 
    tar -xvf VOCtest_06-Nov-2007.tar
    
    • 将数据转换为caffe处理的数据类型(LMDB):

      cd caffe主目录,执行:

    ./data/VOC0712/create_list.sh
    ./data/VOC0712/create_data.sh
    

    注意在执行 create_data.sh 如果提示no module caffe 的话,用如下指令:
    export PYTHONPATH=$PYTHONPATH:/home/xxx/.../caffe主目录/python自行修改中间路径

    • 训练示例
      在caffe主目录下面运行:
      python examples/ssd/ssd_pascal.py
    • 评估 & 检测
    python examples/ssd/score_ssd_pascal.py
    python examples/ssd/ssd_detect.py
    

    这里注意指定使用的快照模型的路径 & 在caffe主目录下面运行程序

    ssd_detect.py

训练

  • 训练准备
    创建自己的数据目录myData:
cd /data
mkdir myData

/data/VOC0712下面的create_list.sh,create_data.sh,labelmap_voc.protoxt这三个文件拷贝到'data/myData':

cp data/create* ./myData
cp data/label* ./myData

/data/VOCdevkit目录按照VOC数据框架下面创建myData,用来存放自己的数据集

cd data/VOCdevikit
mkdir myData
cd myData
mkdir Annotations
mkdir ImageSets
mkdir JPEGImages
cd ImageSets
mkdir Layout
mkdir Main
mkdir Segmentation 

一般地,我们只需要关注 :
Annotations:XML描述文件
ImageSets: Main目录下面放 train.txt, val.txt, trainval.txt, test.txt
JPEGImages:存放所有图片

  • 制作VOC数据集
    按照VOC Dataset要求整理好数据集后,将之转换为caffe的输入数据。首先,根据自己数据集特点,修改labelmap_voc.protxt,注意保留item中background类,其余的类别可以按照自己的需要照葫芦画瓢,给一个简单的示例:
    item.PNG

    然后,依次运行create_list.sh,create_data.sh.注意修改sh中的路径到你自定义的数据集路径。
    需要注意的参数有:
    create_data.sh: data_root_dir, data_name,mapfile
    create_list.sh: root_dir,
# create_list.sh 中应该注释掉
#    if [[ $dataset == "test" && $name == "VOC2012" ]]
#    then
#      continue
#    fi
  • 训练
    在python主目录下运行命令:
    python examples/ssd/ssd_pascal.py
#需要指定的路径与参数
...
train_data = xxx/xxx_test_lmdb
test_data = xxx/xxx_trainval_lmdb
...
model_name =
save_dir =
snapshot_dir =
job_dir = 
output_result_dir =
...
name_size_file =
pretrain_model =
label_map_file =
...
num_classes =
...
num_test_image =

Note: solver parameters中GPU的指定,个数不要超过可用个数,可以用nvidia-smi来查看可用GPU情况;另外,也可以调整solver_param参数,比如:iter_size, max_iter, etc.

检测

  • score_pascal.py
    Note: 注意修改参数与ssd_pascal.py中的路径相同

  • ssd_detect.py**
    Note: 检测单张图片,指定‘--gpu_id’, '--model_def', '--model_weights', '--image_file'.

  • 批量完成test images的可视化

    • 利用caffe主目录下build/examples/ssd/ssd_detect.bin对test结果进行文本输出,输出的格式为 ( path,label,confidence,xmin,ymin,xmax,ymax )

    caffe root 下执行:

    build/examples/ssd/ssd_detect.bin models/VGGNet/mydataset/SSD_300x300/deploy.prototxt   models/VGGNet/mydataset/SSD_300x300/mydataset_SSD_300x300_iter_100236.caffemodel    data/VOCdevkit/mydataset/test_img_path.txt --confidence_threshold 0.5 --out_file output.txt`
    
    • 利用plot_detections.py进行检测结果的可视化

    output.txt 是 ssd_detect.bin 生成的检测结果的txt文档

    python examples/ssd/plot_detections.py output.txt /home/wxb/caffe-ssd --labelmap-file data/mydataset/labelmap_voc.prototxt --save-dir results/bbox_results/SSD_300x300/Main/img/
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容