目錄
使用小浣熊數據集
前提基於https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5代碼,網上有兩版不同的tensorflow下的faster rcnn代碼
一、數據處理
voc數據集下修改這三個文件夾:
- Annotations---用於存放使用labelimage生成的xml 文件
- ImageSets\Main---用於存放trian.txt 、test.txt 、trainval.txt、 val.txt
- JPEGImages—你所有的jpg格式的圖片
這裏爲了測試,使用了小浣熊數據集https://github.com/datitran/raccoon_dataset,數據集裏有200張浣熊的照片;數據集已經標記好了,Annotations文件夾裏是製作好的標籤,JPEGImages文件夾裏是源圖像。
使用的話只需要在ImageSets\Main 下生成的txt,參照博客https://blog.csdn.net/qq_36301716/article/details/79018170
import os
import random
trainval_percent = 0.9 # trainval數據集佔所有數據的比例
train_percent = 8/9.0 # train數據集佔trainval數據的比例
xmlfilepath = 'F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/Annotations'
txtsavepath = 'F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/ImageSets/Main'
total_xml = os.listdir(xmlfilepath)
num=len(total_xml)
list=range(num)
tv=int(num*trainval_percent)
tr=int(tv*train_percent)
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)
ftrainval = open('F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/ImageSets/Main/trainval.txt', 'w')
ftest = open('F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/ImageSets/Main/test.txt', 'w')
ftrain = open('F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/ImageSets/Main/train.txt', 'w')
fval = open('F:/TensorFlow/Faster-RCNN/data/VOCDevkit2007/VOC2007/ImageSets/Main/val.txt', 'w')
for i in list:
name=total_xml[i][:-4]+'\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest .close()
這些也是製作自己數據集必備步驟,這裏我沒有用到,用到後來追加
- 批量化命名圖片名
- resize圖片大小(一般500-600)
- labelIImg標註了自己的圖片
二、修改代碼及模型位置
train階段
1、標籤修改:代碼位於lib\datasets\pascal_voc.py,pascal_voc.py腳本第34行,不要更改_background_,將34行中的標籤替換成自己的標籤,這裏只用到了一個標籤:raccoon(之前寫錯了,暈,一直報錯keyerror)。
2、訓練參數修改:代碼位於lib\config\config.py文件中,可以更改訓練的總步數(max_iters)、權值衰減(weight_decay)、學習率(learning_rate)、批次大小(batch_size)等參數。
3、模型位置參數修改 :運行train.py,模型訓練完後,模型保存在..\default\voc_2007_trainval\default中,把四個文件拷貝出來放到output\vgg16\voc_2007_trainval\default文件夾中,如下圖所示。
測試階段
修改demo.py中的標籤及測試圖片修改
批量化處理(見上一篇博客)
測試的結果如下圖所示: