1. 程式人生 > >為豬臉識別而進行自己資料集的構建、訓練

為豬臉識別而進行自己資料集的構建、訓練



在實際過程中走了彎路,特地進行說明記錄,以備今後參考。

思路是先構建VOC2007格式的豬臉資料集,在轉換成tf格式,然後利用tf的objectdetectionapi進行訓練。原因是把2種構建方式都熟悉一遍,並把所有流程過一遍。

1、構架VOC2007格式的豬臉資料集

前提:在某個目錄下建立如下關係的子目錄。

------ Annotations

------ ImageSets

------ Main

------ JPEGImages

第一步:準備自己需要的圖片,最好是jpg格式。如若不是則需要轉換成jpg格式。

因為很多圖片都是從網上找的,格式、大小都不一樣,為了後續訓練需要最好統一下大小,並把格式統一轉換成

jpg格式。

圖片的數量,一般來說最好一千張以上。為了後續訓練出好的效果,最好一萬張以上。

第二步:圖片的重新命名,因為VOC2007格式必須為JPG格式,並且圖片是統一的六位數字,從000001開始。那我們也需要將所有訓練圖片重新命名為此。

重新命名後所有圖片就可以拷貝到JPEGImages目錄下。

第三步:進行目標物體的標註。推薦用labelImg,因為它可直接生成符合VOC2007格式的xml檔案。

主要是體力活。

生成的所有xml檔案就可以拷貝到Annotations目錄下。

第四步:資料集的分割。

在實際訓練過程中,需要四個檔案,分別為test.txt是測試集,train.txt

是訓練集,val.txt是驗證集,trainval.txt是訓練和驗證集。每個檔案為對於圖片的名字。在VOC2007中,trainval大概是整個資料集的50%test也大概是整個資料集的50%train大概是trainval50%val大概是trainval50%

參照python原始碼:split-datasets.py

生成的四個txt檔案就可以拷貝到Main目錄下。

第五步:如果上述各步驟中沒有做拷貝的動作則在本步驟把相應的檔案拷貝到對應的目錄下。以符合VOC2007格式的要求。

------ Annotations xml檔案全部放到該資料夾裡

------ ImageSets

------ Main 其有四個txt檔案,test.txt是測試集,train.txt是訓練集,val.txt是驗證集,trainval.txt是訓練和驗證集。Txt裡的內容是即圖片名字(無後綴)。

------ JPEGImages 所有的訓練圖片放到該資料夾裡

第六步:把上述目錄及其檔案都拷貝到pigfaces/VOC2007/下。

第七步:轉換成tf的record格式的資料集檔案

      執行如下命令:cd 到xxx\object_detection目錄下。python create_pascal_tf_record.py --data_dir=xxxx\object_detection\pigfaces --year=VOC2007 --set=train --output_path=data\pig_train.record

第八步:進行訓練。

       執行如下命令:cd 到xxx\objectdetection\object_detection目錄下。python train.py --train_dir=data --pipeline_config_path=models\faster_rcnn_resnet101_voc07.config