日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 目标检测 >内容正文

目标检测

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

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

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


一般SSD的數(shù)據(jù)來(lái)源,看到好多人都在用這款框架進(jìn)行數(shù)據(jù)標(biāo)注:BBox-Label-Tool 也有人在這基礎(chǔ)上進(jìn)行簡(jiǎn)單修改,詳見(jiàn)博客:SSD框架訓(xùn)練自己的數(shù)據(jù)集 ,或者用OpenCV重寫(xiě):深度學(xué)習(xí)ssd配置并在VGG模型上訓(xùn)練自己的數(shù)據(jù)
還有一些自己開(kāi)發(fā)的小工具:圖像標(biāo)注VS2013項(xiàng)目

.


0 官方教程訓(xùn)練過(guò)程:

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

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

(4)訓(xùn)練

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

以上是官方教程常規(guī)訓(xùn)練步驟,并不難。但是自己訓(xùn)練時(shí)候的數(shù)據(jù)處理,比較麻煩。

.


1 數(shù)據(jù)集準(zhǔn)備與形成

1.1 所需準(zhǔn)備文件介紹

其中訓(xùn)練所需的文件夾包括三大類(lèi):

dataset (數(shù)據(jù)集目錄)

  • Annotations

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

  • Images

    *.jpg (圖片集)

  • ImageSets
    保存格式為文件名,不帶擴(kuò)展名
    訓(xùn)練集: train.txt
    訓(xùn)練驗(yàn)證集: trainval.txt
    測(cè)試集: test.txt
    驗(yàn)證集: val.txt

1.2 訓(xùn)練文件介紹

(1) create_list.sh:用于生成三類(lèi)文件列表
- test_name_size:測(cè)試集圖像大小
- test:測(cè)試集圖像-標(biāo)簽一一對(duì)應(yīng)
- trainval:訓(xùn)練集圖像-標(biāo)簽一一對(duì)應(yīng)

這是將數(shù)據(jù)集做成方便之后生成lmdb的路徑信息文件,注意將其中的root_dir和第二個(gè)for循環(huán)中的變量改為自己的路徑就好。
圖像-標(biāo)簽一一對(duì)應(yīng):

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

同時(shí)注意名稱(chēng)的一致。

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

test_name_size里面,000800就是圖片名稱(chēng),1241*376就是圖片尺寸,高 長(zhǎng)

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

(3)labelmap_voc.prototxt:
目標(biāo)檢測(cè)的標(biāo)簽文件
該文件主要記錄需要訓(xùn)練識(shí)別的n種對(duì)象的信息,第一類(lèi)是background,是不變的,對(duì)于Pascal VOC數(shù)據(jù)集來(lái)說(shuō),需要識(shí)別20種對(duì)象,所以后面還有20個(gè)label。與傳統(tǒng)的機(jī)器學(xué)習(xí)不太一樣的是,以前需要輸入正負(fù)樣本,在caffe種,不管是faster rcnn還是ssd,都是只用對(duì)訓(xùn)練圖像將識(shí)別對(duì)象的坐標(biāo)信息標(biāo)注即可,除了標(biāo)注信息以外的部分都會(huì)當(dāng)做background去處理。
.


2 數(shù)據(jù)集生成方案

訓(xùn)練的數(shù)據(jù)集三種方案:

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

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

2.1 訓(xùn)練流程

本節(jié)參考:SSD框架訓(xùn)練自己的數(shù)據(jù)集
- 第一步:create_list.sh:生成test_name_size.txt、test.txt、trainval.txt
- 第二步:修改labelmap_voc.prototxt,標(biāo)簽文件,同時(shí)需要注意標(biāo)簽文件必須多一個(gè)background的標(biāo)簽,作為編號(hào)0
- 第三步:create_data.sh:生成LMDB
- 第四步:修改ssd_pascal.py:

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

2.2 訓(xùn)練腳本內(nèi)容存儲(chǔ)

會(huì)在相應(yīng)的路徑下生成jobs文件夾,其中包含了這一次訓(xùn)練的腳本文件,并且會(huì)記錄caffe執(zhí)行只一次訓(xùn)練的日志信息。
參考:Ubuntu上用caffe的SSD方法訓(xùn)練Pascal VOC數(shù)據(jù)集

jobs文件夾下有:
.log文件:運(yùn)行記錄,時(shí)間,迭代次數(shù)等信息;
.caffemodel文件,權(quán)重文件
deploy.prototxt、train_val.prototxt等
.


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

SSD框架訓(xùn)練自己的數(shù)據(jù)集

.


報(bào)錯(cuò)一:

cudasucess(10vs0)
  • 1
  • 1

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

.

延伸一:大致的運(yùn)算效率

K80-單GPU-一天可以迭代1w+次
6天將近7w次
每1w次迭代之后會(huì)計(jì)算一個(gè)mAP
(數(shù)據(jù)來(lái)源:Ubuntu上用caffe的SSD方法訓(xùn)練umdfaces數(shù)據(jù)集)

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。