萬里長征第一步,就是要制作自己的數(shù)據(jù)集,過程還是比較繁瑣的,特別是標(biāo)注的過程,這篇博客先介紹如果制作voc2007自己的數(shù)據(jù)集用于faster-rcnn訓(xùn)練,下一篇博客介紹如何用faster-rcnn訓(xùn)練自己的數(shù)據(jù)。
1、準(zhǔn)備圖像?
圖像要用.jpg或者jpeg格式的,如果是png或者其它格式,自己轉(zhuǎn)換一下就好,圖像名稱要用000001.jpg,只有和VOC2007數(shù)據(jù)集圖像名稱一致,才能最大限度的減少后面訓(xùn)練的麻煩,大家可以從網(wǎng)上下載一些批量重命名工具,我是用MATLAB代碼實(shí)現(xiàn)轉(zhuǎn)換的,我把MATLAB代碼放在這里,如果大家需要請自行修改路徑使用
%實(shí)現(xiàn)把圖像重命名為VOC2007數(shù)據(jù)集一樣的圖像名
%D1是原始圖像存放的文件夾,imwrite中的路徑是保存的文件夾
%作者:UPC Yongbiao Gao Heroin 蒲衣翁
%csdn博客地址:http://blog.csdn.net/gybheroin
clc
clear
D1=dir(
'G:\Deep Feature extra\按年份數(shù)據(jù)\2011\2011test\*.jpg');
for i=1:length(D1)iI=imread([
'G:\Deep Feature extra\按年份數(shù)據(jù)\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、圖像目標(biāo)框標(biāo)注?
圖像標(biāo)注的工具網(wǎng)上應(yīng)該有一些,但是博主喜歡自己動手豐衣足食,所以就用c#+emgucv自己寫了一個標(biāo)注軟件,我把vs工程放在csdn資源上,想用我寫的軟件的同學(xué)請自行下載,代碼中圖像路徑需要自己修改一下就行了:http://download.csdn.net/detail/gybheroin/9847647?
圖像標(biāo)注軟件界面如下:(一個小時寫出來的東西,簡陋一些,但是功能是沒問題)
使用方法:在文本框中輸入類別標(biāo)簽,鼠標(biāo)在圖像中拖動實(shí)現(xiàn)矩形框,保存按鈕保存了標(biāo)注的標(biāo)簽,如果框選錯誤,就點(diǎn)擊取消按鈕,重新標(biāo)注。?
標(biāo)注文件格式如下,分別是圖像名稱,類別名稱,目標(biāo)框左上角和右下角坐標(biāo):
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
把圖像放在一個文件夾中,把標(biāo)注好的文件放在一個文件夾中,能自動生成xml文件,生成的xml文件格式如下:?
4、生成txt索引文件?
需要四個索引文件,分別是trainval.txt,train.txt,val.txt,test.txt,分別存放訓(xùn)練驗(yàn)證集,訓(xùn)練集,驗(yàn)證集,測試集,VOC2007中,訓(xùn)練驗(yàn)證集占50%,測試集占50%,訓(xùn)練集占訓(xùn)練驗(yàn)證集50%,驗(yàn)證集占訓(xùn)練驗(yàn)證集50。但是我標(biāo)注的數(shù)據(jù)集比較小一點(diǎn),所以我把相應(yīng)的比例做了修改,大家可以參考我寫的MATLAB代碼:
%實(shí)現(xiàn)生成VOC的訓(xùn)練驗(yàn)證測試四個文本文件,我這個是按照順序?qū)崿F(xiàn)的,沒有打亂順序,如果需要請自行修改
%trainval占
0.
7,test占
0.
3.train占trainval的
0.
5,val占trainval的
0.
5
%這個地方是我自己設(shè)置的,標(biāo)準(zhǔn)的voc2007應(yīng)該都是
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,把四個文件放進(jìn)去。新建一個文件夾minedataset,把ImageSets,Annotation(存放了所有的xml文件)和JPEGImages(存放了所有訓(xùn)練驗(yàn)證測試圖像)放進(jìn)去,這樣數(shù)據(jù)準(zhǔn)備算是完成。
原文
總結(jié)
以上是生活随笔為你收集整理的深度学习Caffe实战笔记(19)Windows平台 Faster-RCNN 制作自己的数据集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。