工事中
物体検出の深層学習トレーニングを実行する前に、まずデータを作っとかにゃいけません。
データセットは以下の4種類
1)画像データ(jpg画像)
画像ファイルそのもの(例:*.jpg)
2)座標データ
画像の中にクラスに対応する対象がどこにあるかを記述したtxtファイル
上の画像ファイルと1対1、つまり画像ファイルの数だけこのtxtファイルがある
ファイル名も同じ
(例:*.txt)
3)画像リスト
画像ファイル名のリスト
test.txt,train.txt
4)クラスリスト
クラス(dog,cat,car,person,…………)を列挙したファイル
obj.names
データを作るツールとしてこの2つがよく紹介されています。
BBox-Label-Toolとconvert.py
LabelImage
BBoxを使ってみます。
ラベル付け(アノテーション)という作業です。
たいていはPythonで動くものが多いので環境を作っておきます。
Python準備
Windows 7 、10 (64bit)
Anacoda…変な名前ですが、これはContinuum Analytics 社 が提供している Python と conda というパッケージマネージャーを含む Python ディストリビューションです。
サイトでは3.xと2.xの2つのバージョンがありますが、3.xをインストールしておけば2.xも後でインストールできて、デュアルの環境が作れます。
64-bitバージョンをダウンロードしてインストールします。
Anacodaインストール
Anacoda自体のインストールは特に問題になるところはないです。デフォルトのままで実行。
インストールが終わったらStartメニュの「Anaconda Prompt」を起動します。
2.xのインストールも含めて、デュアルの環境を確認します。
以下、あなたのユーザー名のところはUSERで代用します。
以下のようなコマンドで現在の環境の確認できます。
C:¥users¥USER>python
一度、この環境を抜けましょう。
>>>exit()
python27という名前でバージョン2.7をインストールしてみます。
3.6の場合は36や3.6に置き換えて実行
C:¥users¥USER>conda create -n pythosn27 python=2.7 anaconda
インストールが終わったら、環境を確認してみましょう。
C:¥users¥USER>conda info -e
27の環境が表示されていればOKです。
ダウンロードして解凍したら、適当な場所に移動しておきます。
例:C:¥BBox-Label-Tool-master
運用するにあたって、修正しておいた方がいい部分があります。
C:¥BBox-Label-Tool-master¥main.pyではファイル名の拡張子はJPEGしか読みません。
なにかと不便になると思われるので変更しておきます。
main.pyで「JPEG」の部分は「jpg」に変更。
Imagesフォルダーの中の画像の拡張子も.jpgに変更。
BBoxをPythonで起動
BBoxは2.xのPythonで動作します。
Anaconda Promptから立ち上げてみましょう。
StartメニューからAnaconda Promptを起動。
Promptコンソールで以下のようなコマンドを実行します。
C:¥users¥USER>python
現在の環境はデフォルトは3.xになっていると思います。
2.7に切り替えます。
C:¥users¥USER>exit()
C:¥users¥USER>activate python27
これで2.7の環境になります。
ここから、BBoxを起動します。
C:¥users¥USER>python C:¥BBox-Label-Tool-master¥main.py
サンプルの画像でやってみます。
Image Dirで指定するのは画像のフォルダー名です。BBoxのサンプルはImages¥001というフォルダーの中にあるので、この001を指定します。
Loadボタンで画像を読み込みます、が、もし読み込まない場合は下の*注を参照。
あくびをしているわんちゃんがサンプルです。
規定値ですでにバウンディングボックスで囲まれているものを修正してみます。
ClearAllをクリックして再度マウスで囲みます。
書き直す場合は下のNextボタンをクリックするとLabels¥001の中の同名のtxtファイルが書き換わっています。
BBoxのデータをYOLO形式に変換
*注
例:C:¥BBox-Label-Tool-master¥main.pyを少々変更します。
Images、Labels、Examplesのフォルダー取得に失敗しているのかもしれません。
修正する関数は def loadDir(self, dbg = False):
この中で、現在のフォルダーパスを取得しておきます。
current_dir = os.path.dirname(os.path.abspath(__file__))
で、以下の3つを修正
#self.imageDir = os.path.join(r’./Images’, ‘%03d’ %(self.category))
self.imageDir = os.path.join(current_dir + ‘¥Images’, ‘%03d’ %(self.category))
#self.outDir = os.path.join(r’./Labels’, ‘%03d’ %(self.category))
self.outDir = os.path.join(‘C:¥BBox-Label-Tool-master¥Labels’, ‘%03d’ %(self.category))
#self.egDir = os.path.join(r’./Examples’, ‘%03d’ %(self.category))
self.egDir = os.path.join(‘C:¥BBox-Label-Tool-master¥Examples’, ‘%03d’ %(self.category))
トレーニング用データ
- cfg/obj.data
- cfg/obj.names
- cfg/yolo-obj.cfg
編集中です
Leave a Reply