關(guān)于yolov3在ubuntu18下的配置订讼,我的上一篇文章有介紹,本篇文章介紹如何構(gòu)建用于yolov3訓(xùn)練的數(shù)據(jù)集诬辈。
數(shù)據(jù)集獲取
數(shù)據(jù)集的獲取可以依靠下載公開數(shù)據(jù)集或標(biāo)注自己的數(shù)據(jù)集颓哮。一般來說常摧,公開數(shù)據(jù)集很難滿足我們實(shí)際的生產(chǎn)需求磕洪,因此大多數(shù)情況下需要我們自己標(biāo)注數(shù)據(jù)集吭练。一般使用labelImg用于目標(biāo)檢測的標(biāo)注,標(biāo)注完成后會(huì)生成與所標(biāo)注圖片同名的xml文件析显。
labelImg在win上的配置
1鲫咽、下載源碼https://github.com/tzutalin/labelImg
2、安裝python3.5(據(jù)說用py3.6會(huì)報(bào)錯(cuò)谷异,經(jīng)測試在py3.7下可成功配置)
3分尸、安裝PyQt5:
pip install PyQt5
(如果下載很慢可以換pip源)
4、安裝PyQt5_tools:
pip install pyqt5-tools
5歹嘹、安裝lxml:
pip install lxml
6箩绍、進(jìn)入labelImg解壓后的文件,執(zhí)行命令
pyrcc5 -o resources.py resources.qrc
(用于將Qt文件格式轉(zhuǎn)換為python格式)
7尺上、運(yùn)行l(wèi)abelImg.py
如果出現(xiàn) No module named ‘libs.resources’ 的報(bào)錯(cuò)
將resources.py拖進(jìn)libs文件夾即可
labelImg的使用
1伶选、打開需要標(biāo)注的圖片所在目錄
2、data文件夾下的predefined_classes.txt文件存儲(chǔ)了標(biāo)簽尖昏,將這個(gè)文件內(nèi)的標(biāo)簽修改為自己需要的仰税。例如:
3、根據(jù)需要更改或不更改標(biāo)注文件的存儲(chǔ)位置
4抽诉、需要注意的是陨簇,盡管用于yolo訓(xùn)練的標(biāo)注文件最終需要的是txt格式,但在制作數(shù)據(jù)集階段我們?nèi)孕柚谱鞒蒝OC格式(標(biāo)注文件為xml文件)迹淌,因此在標(biāo)注前需檢查保存的格式是否為VOC格式河绽。
5、按快捷鍵w對圖片進(jìn)行標(biāo)注唉窃,選擇標(biāo)簽耙饰,所有目標(biāo)標(biāo)注完成后保存,即可得到對應(yīng)的xml文件纹份。
6苟跪、xml文件的示例如下圖
<annotation>
? ? <folder></folder>? ? ? ? //文件夾? ? ? ? ? ? ? ? ? ? ? ? ? ?
<filename></filename>? //文件名?
<path></path>? ? ? ? ? //文件路徑
? ? <source>? ? ? ? ? ? ? ? //圖像來源(不重要)?
? ? ? ? <database>Unknown </database>?
? ? </source>?
? ? <size>? ? ? ? ? ? ? ? ? ? //圖像尺寸(長寬、通道數(shù))? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? <width>1920</width>?
? ? ? ? <height>810</height>?
? ? ? ? <depth>3</depth>?
? ? </size>?
? ? <segmented>0</segmented>? ? ? ? ? ? //是否用于分割(在目標(biāo)識別中01無所謂)?
? ? <object>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //檢測到的物體?
? ? ? ? <name>car</name>? ? ? ? ? ? ? ? ? ? ? //物體類別?
? ? ? ? <pose>Unspecified</pose>? ? ? ? ? ? ? ? //拍攝角度?
? ? ? ? <truncated>0</truncated>? ? ? ? ? ? ? ? ? //是否被截?cái)啵?表示完整)?
? ? ? ? <difficult>0</difficult>? ? ? ? ? ? ? ? ? ? ? //目標(biāo)是否難以識別(0表示容易識別)?
? ? ? ? <bndbox>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //bounding-box(包含左下角和右上角xy坐標(biāo))?
? ? ? ? ? ? <xmin>465</xmin>?
? ? ? ? ? ? <ymin>410</ymin>?
? ? ? ? ? ? <xmax>784</xmax>?
? ? ? ? ? ? <ymax>651</ymax>?
? ? ? ? </bndbox>?
? ? </object>?
? ? <object>? ? ? ? ? ? ? //包含多個(gè)目標(biāo)?
? ? ? ? ??
? ? </object>?
</annotation>
可能會(huì)用到的快捷鍵
Ctrl+u 加載目錄中所有圖像
Ctrl+s 保存
Ctrl+r 更改標(biāo)注文件保存地址
Ctrl+d 復(fù)制當(dāng)前標(biāo)簽和矩形框
space 將當(dāng)前圖片標(biāo)記為已驗(yàn)證
w 創(chuàng)建一個(gè)矩形框
d 下一張圖片
a 上一張圖片
del 刪除選定的矩形框
數(shù)據(jù)準(zhǔn)備
需要將我們在上一步中準(zhǔn)備的數(shù)據(jù)集整理成VOC格式蔓涧,也就是將圖片全部存放在JPEGImages下件已,將標(biāo)注文件全部存放在Annotations下,ImageSets/Main文件夾先空著元暴。
VOC格式
--VOCdevkit
??--VOC2007??#2007可以為任意年份(也可以沒有篷扩,事實(shí)上文件夾也可以不叫這些名字)
??? --Annotations? #存儲(chǔ)xml文件
??? --ImageSets??
????? --Main?????#存儲(chǔ)訓(xùn)練集/驗(yàn)證集/測試集的txt
??? --JPEGImages?#存儲(chǔ)圖片
至此就完成了數(shù)據(jù)集的準(zhǔn)備,part2會(huì)介紹訓(xùn)練的流程茉盏、參數(shù)設(shè)置等鉴未。