Caffe実戦ノートを深く学ぶ(19)WindowsプラットフォームFaster-CNN独自のデータセットを作成


万里の長征の第一歩は、自分のデータセットを作ることです.過程はやはり煩雑で、特に表記の過程です.このブログでは、voc 2007の自分のデータセットをfaster-rcnn訓練に使用すれば、次のブログでfaster-rcnnで自分のデータを訓練する方法を紹介します.
1、画像画像の準備に用いる.jpgまたはjpeg形式のものは、pngまたは他の形式であれば、自分で変換すればよい、画像名は000001.jpg、VOC 2007データセットの画像名と一致してこそ、後のトレーニングの面倒を最大限に減らすことができます.皆さんはネット上でいくつかのロット名変更ツールをダウンロードすることができます.私は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)
    i
    I=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)
        i
        imwrite(re,['G:\fasterrcnn\data\',['00',num2str(i),'.jpg']]);
    end
    if(10000<=i&&i<100000)
        i
        imwrite(re,['G:\fasterrcnn\data\',['0',num2str(i),'.jpg']]);
    end
end

2、画像の目标枠に画像を表示するツールはネット上にいくつかあるはずですが、ブロガーは自分で衣食を豊かにするのが好きなので、c#+emgucvで自分で表示ソフトを书きました.私はvsプロジェクトをcsdn资源の上に置いて、私が书いたソフトを使いたい人は自分でダウンロードしてください.コードの中の画像の経路は自分で修正しなければなりません.http://download.csdn.net/detail/gybheroin/9847647画像表示ソフトのインタフェースは以下の通りです.(1時間で書いたものは、粗末ですが、機能は大丈夫です)
使用方法:テキストボックスにカテゴリラベルを入力し、マウスで画像の中でドラッグして矩形ボックスを実現し、ボタンを保存して寸法のラベルを保存し、ボックス選択が間違っている場合は、キャンセルボタンをクリックして、再寸法します.寸法ファイルの形式は、画像名、カテゴリ名、ターゲットボックスの左上隅、右下隅の座標です.
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のコードを作る私は他の人の資源を使って、面倒を嫌がらないならば、自分で1つ書くことができて、私の参考の資源の住所:http://download.csdn.net/detail/sinat_30071459/9531172
画像を1つのフォルダに配置し、表示されたファイルを1つのフォルダに配置すると、自動的にxmlファイルを生成することができ、生成されたxmlファイルのフォーマットは以下の通りです.
4、txtインデックスファイルを生成するには、trainvalの4つのインデックスファイルが必要である.txt,train.txt,val.txt,test.txtは、それぞれ訓練検証セット、訓練セット、検証セット、試験セット、VOC 2007において、訓練検証セットが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/gybheroin

clc
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_percent
    fprintf(ftrainval,'%s
'
,D(i).name(1:end-4)); end for i=length(D)*train_val_percent+1:length(D) fprintf(ftest,'%s
'
,D(i).name(1:end-4)); end for i=1:length(D)*train_val_percent*0.6 fprintf(ftrain,'%s
'
,D(i).name(1:end-4)); end for i=length(D)*train_val_percent*0.6+1:length(D)*train_val_percent fprintf(fval,'%s
'
,D(i).name(1:end-4)); end

次にフォルダImageSetsを新規作成し、フォルダMainを新規作成し、4つのファイルを入れます.新しいフォルダminedatasetを作成し、ImageSets、Annotation(すべてのxmlファイルを保存)、JPEGImages(すべてのトレーニング検証テスト画像を保存)を入れ、データの準備が完了します.