萬里長征第一步,就是要制作自己的數據集,過程還是比較繁瑣的,特別是標注的過程,這篇博客先介紹如果制作voc2007自己的數據集用于faster-rcnn訓練,下一篇博客介紹如何用faster-rcnn訓練自己的數據。
1、準備圖像?
圖像要用.jpg或者jpeg格式的,如果是png或者其它格式,自己轉換一下就好,圖像名稱要用000001.jpg,只有和VOC2007數據集圖像名稱一致,才能最大限度的減少后面訓練的麻煩,大家可以從網上下載一些批量重命名工具,我是用MATLAB代碼實現轉換的,我把MATLAB代碼放在這里,如果大家需要請自行修改路徑使用
%實現把圖像重命名為VOC2007數據集一樣的圖像名
%D1是原始圖像存放的文件夾,imwrite中的路徑是保存的文件夾
%作者:UPC Yongbiao Gao Heroin 蒲衣翁
%csdn博客地址:http://blog.csdn.net/gybheroin
clc
clear
D1=dir(
'G:\Deep Feature extra\按年份數據\2011\2011test\*.jpg');
for i=1:length(D1)iI=imread([
'G:\Deep Feature extra\按年份數據\2011\2011test\',D1(i).name]);re=imresize(I,[600,400]);%注意,這里我把圖像歸一化大小了,可選
if(i<10)imwrite(re,[
'G:\fasterrcnn\data\',[
'00000',num2str(i),
'.jpg']]);end
if(10<=i&&i<100)imwrite(re,[
'G:\fasterrcnn\data\',[
'0000',num2str(i),
'.jpg']]);end
if(100<=i&&i<1000)imwrite(re,[
'G:\fasterrcnn\data\',[
'000',num2str(i),
'.jpg']]);end
if(1000<=i&&i<10000)iimwrite(re,[
'G:\fasterrcnn\data\',[
'00',num2str(i),
'.jpg']]);end
if(10000<=i&&i<100000)iimwrite(re,[
'G:\fasterrcnn\data\',[
'0',num2str(i),
'.jpg']]);end
end
2、圖像目標框標注?
圖像標注的工具網上應該有一些,但是博主喜歡自己動手豐衣足食,所以就用c#+emgucv自己寫了一個標注軟件,我把vs工程放在csdn資源上,想用我寫的軟件的同學請自行下載,代碼中圖像路徑需要自己修改一下就行了:http://download.csdn.net/detail/gybheroin/9847647?
圖像標注軟件界面如下:(一個小時寫出來的東西,簡陋一些,但是功能是沒問題)
使用方法:在文本框中輸入類別標簽,鼠標在圖像中拖動實現矩形框,保存按鈕保存了標注的標簽,如果框選錯誤,就點擊取消按鈕,重新標注。?
標注文件格式如下,分別是圖像名稱,類別名稱,目標框左上角和右下角坐標:
000001
.jpg person 118 48 273 572
000002
.jpg person 106 52 291 557
000003
.jpg person 119 49 289 554
000004
.jpg person 114 45 270 566
000005
.jpg person 96 35 328 564
000006
.jpg person 104 50 316 586
3、做成xml?
做xml的代碼我是使用了別人的資源,如果不嫌棄麻煩,可以自己寫一個的,我參考的資源地址:http://download.csdn.net/detail/sinat_30071459/9531172
把圖像放在一個文件夾中,把標注好的文件放在一個文件夾中,能自動生成xml文件,生成的xml文件格式如下:?
4、生成txt索引文件?
需要四個索引文件,分別是trainval.txt,train.txt,val.txt,test.txt,分別存放訓練驗證集,訓練集,驗證集,測試集,VOC2007中,訓練驗證集占50%,測試集占50%,訓練集占訓練驗證集50%,驗證集占訓練驗證集50。但是我標注的數據集比較小一點,所以我把相應的比例做了修改,大家可以參考我寫的MATLAB代碼:
%實現生成VOC的訓練驗證測試四個文本文件,我這個是按照順序實現的,沒有打亂順序,如果需要請自行修改
%trainval占
0.
7,test占
0.
3.train占trainval的
0.
5,val占trainval的
0.
5
%這個地方是我自己設置的,標準的voc2007應該都是
50%
%作者:UPC Yongbiao Gao Heroin 蒲衣翁
%csdn博客地址:
http:/
/blog.csdn.net/gybheroinclc
clear
train_val_percent=
0.
7;
test_percent=
0.
3;D=dir(
'imgg/*.jpg');
ftrainval=fopen(
'trainval.txt',
'w');
ftest=fopen(
'test.txt',
'w');
ftrain=fopen(
'train.txt',
'w');
fval=fopen(
'val.txt',
'w');
for i=
1:length(D)*train_val_percentfprintf(ftrainval,
'%s\n',D(i).name(
1:end-4));
end
for i=length(D)*train_val_percent+
1:length(D)fprintf(ftest,
'%s\n',D(i).name(
1:end-4));
end
for i=
1:length(D)*train_val_percent*
0.
6fprintf(ftrain,
'%s\n',D(i).name(
1:end-4));
end
for i=length(D)*train_val_percent*
0.
6+
1:length(D)*train_val_percentfprintf(fval,
'%s\n',D(i).name(
1:end-4));
end
然后新建一個文件夾ImageSets,再新建一個文件夾Main,把四個文件放進去。新建一個文件夾minedataset,把ImageSets,Annotation(存放了所有的xml文件)和JPEGImages(存放了所有訓練驗證測試圖像)放進去,這樣數據準備算是完成。
原文
總結
以上是生活随笔為你收集整理的深度学习Caffe实战笔记(19)Windows平台 Faster-RCNN 制作自己的数据集的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。