日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)

發布時間:2024/8/23 119 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

承接上一篇SSD介紹:SSD+caffe︱Single Shot MultiBox Detector 目標檢測(一)
如果自己要訓練SSD模型呢,關鍵的就是LMDB格式生成,從官方教程weiliu89/caffe來看,寥寥幾行code,但是前面的數據整理真實要了老命。
教程其實就是一種fine-tuning,在VGG基礎上進行訓練SSD框架。


一般SSD的數據來源,看到好多人都在用這款框架進行數據標注:BBox-Label-Tool 也有人在這基礎上進行簡單修改,詳見博客:SSD框架訓練自己的數據集 ,或者用OpenCV重寫:深度學習ssd配置并在VGG模型上訓練自己的數據
還有一些自己開發的小工具:圖像標注VS2013項目

.


0 官方教程訓練過程:

(1)下載VGGNet.caffemodel, fully convolutional reduced (atrous) VGGNet
(2)下載VOC2007 and VOC2012兩個數據集,放在/caffe/data目錄下
(3)創建LMDB文件:

./data/VOC0712/create_list.sh ./data/VOC0712/create_data.sh
  • 1
  • 2
  • 1
  • 2

(4)訓練

python examples/ssd/ssd_pascal.py
  • 1
  • 1

以上是官方教程常規訓練步驟,并不難。但是自己訓練時候的數據處理,比較麻煩。

.


1 數據集準備與形成

1.1 所需準備文件介紹

其中訓練所需的文件夾包括三大類:

dataset (數據集目錄)

  • Annotations

    *.xml (標注的物體信息文件)

  • Images

    *.jpg (圖片集)

  • ImageSets
    保存格式為文件名,不帶擴展名
    訓練集: train.txt
    訓練驗證集: trainval.txt
    測試集: test.txt
    驗證集: val.txt

1.2 訓練文件介紹

(1) create_list.sh:用于生成三類文件列表
- test_name_size:測試集圖像大小
- test:測試集圖像-標簽一一對應
- trainval:訓練集圖像-標簽一一對應

這是將數據集做成方便之后生成lmdb的路徑信息文件,注意將其中的root_dir和第二個for循環中的變量改為自己的路徑就好。
圖像-標簽一一對應:

Images/000112.png Labels/000112.xml Images/001365.png Labels/001365.xml
  • 1
  • 2
  • 1
  • 2

同時注意名稱的一致。

000800 1241 376 006206 1242 375
  • 1
  • 2
  • 1
  • 2

test_name_size里面,000800就是圖片名稱,1241*376就是圖片尺寸,高 長

(2)create_data.sh:
生成LMDB文件,以上的create_list準備好之后即可

(3)labelmap_voc.prototxt:
目標檢測的標簽文件
該文件主要記錄需要訓練識別的n種對象的信息,第一類是background,是不變的,對于Pascal VOC數據集來說,需要識別20種對象,所以后面還有20個label。與傳統的機器學習不太一樣的是,以前需要輸入正負樣本,在caffe種,不管是faster rcnn還是ssd,都是只用對訓練圖像將識別對象的坐標信息標注即可,除了標注信息以外的部分都會當做background去處理。
.


2 數據集生成方案

訓練的數據集三種方案:

  • 第一:保持原來的文件目錄結構及文件名不變, 只替換里面的數據,通用。
  • 第二:重新新建一個與之前類似的目錄結構,改成自己命名的文件夾,第二種方法,有一定的風險性,需要修改程序里涉及數據路徑的代碼。
  • 第三:txt格式數據變成LMDB,參考github:https://github.com/jinfagang/kitti-ssd
  • 第三種是直接用txt格式保存,就可以生成LMDB的辦法,我覺得這個比較好,但是筆者最終沒有實驗成功…譬如:
class_index xmin ymin xmax ymax
  • 1
  • 1

第一種方案里面的一些小技巧:
(1)還有將txt變成xml格式的小工具:見博客將數據集做成VOC2007格式用于Faster-RCNN訓練
(2)將BBox-Label-Tool下的txt格式保存的bounding box信息轉換成VOC數據格式下以xml方式表示:,見博客:SSD框架訓練自己的數據集
(3)將csv變成xml文件類型
luuuyi/umdfaces2VOC2007

2.1 訓練流程

本節參考:SSD框架訓練自己的數據集
- 第一步:create_list.sh:生成test_name_size.txt、test.txt、trainval.txt
- 第二步:修改labelmap_voc.prototxt,標簽文件,同時需要注意標簽文件必須多一個background的標簽,作為編號0
- 第三步:create_data.sh:生成LMDB
- 第四步:修改ssd_pascal.py:

主要修改點:(1)train_data和test_data修改成指向自己的數據集LMDBtrain_data = "examples/indoor/indoor_trainval_lmdb"test_data = "examples/indoor/indoor_test_lmdb"2) num_test_image該變量修改成自己數據集中測試數據的數量 (3)num_classes 該變量修改成自己數據集中 標簽類別數量數 + 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 第五步訓練:
    python examples/ssd/ssd_pascal.py

2.2 訓練腳本內容存儲

會在相應的路徑下生成jobs文件夾,其中包含了這一次訓練的腳本文件,并且會記錄caffe執行只一次訓練的日志信息。
參考:Ubuntu上用caffe的SSD方法訓練Pascal VOC數據集

jobs文件夾下有:
.log文件:運行記錄,時間,迭代次數等信息;
.caffemodel文件,權重文件
deploy.prototxt、train_val.prototxt等
.


參考:
深度學習ssd配置并在VGG模型上訓練自己的數據
SSD 安裝、訓練
Ubuntu上用caffe的SSD方法訓練umdfaces數據集
重點參考:
使用faster rcnn訓練umdfaces數據集
將數據集做成VOC2007格式用于Faster-RCNN訓練
Caffe-SSD 訓練自己的數據集教程

SSD框架訓練自己的數據集

.


報錯一:

cudasucess(10vs0)
  • 1
  • 1

解決:修改pythonssd_pascal.py文件gpus=’0,1,2,3’,如果有一塊GPU,則刪除123,有兩塊則刪除23

.

延伸一:大致的運算效率

K80-單GPU-一天可以迭代1w+次
6天將近7w次
每1w次迭代之后會計算一個mAP
(數據來源:Ubuntu上用caffe的SSD方法訓練umdfaces數據集)

TX.P,筆者自己訓練,大概的運算效率是5千/小時(運行官方教程時)

總結

以上是生活随笔為你收集整理的SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。