kohheinomura / keras_classification_tools

5 stars 1 forks source link
classification grad-cam keras-tensorflow

Kerasを利用した分類ツール

ResNet50, VGG16, InceptionV3を用いたKerasベースの分類、推論、Grad-Cam実装です。 必要なソースコードをgit cloneします。

$ git clone https://github.com/kohheinomura/keras_classification_tools.git

以下では、KaggleのDogs vs. Cats Redux: Kernels Editionのデータを用いて利用方法を示します。

事前設定

全体にまたがる設定を行うコンフィグ・ファイルを作成します。コンフィグ・ファイル名は任意の名前を指定可能です。以下では、config_dogcatとします。

$ cd keras_classification_tools
$ vi config_dogcat

以下はconfig_dogcatの設定内容です。

[Base]
CLASSES = dog,cat
RESULT_DIR = ./results_dogcat
IMG_FORMAT = jpg

学習・バリデーション用データの配置

学習用データとバリデーション用データを任意のディレクトリ配下に置きます。以下の例では、data/train_imagesに、学習データを、またバリデーション用データをdata/val_images以下に配置しています。それそれのディレクトリには、コンフィグ・ファイルで指定したクラス名と同じディレクトリを作成し、各ディレクトリにはクラスに応じた画像を配置します。

例:

data/train_images
|-dog
|  |-dog.1.jpg
|  |-dog.2.jpg
|
|-cat
   |-cat.100.jpg

data/val_images
|-dog
|  |-dog.1.jpg
|  |-dog.2.jpg
|
|-cat
   |-cat.100.jpg

学習

学習を実行します。学習には以下のpythonスクリプトを実行します。

実行例:

$ python train.py --config ./config_dogcat --model VGG16 --batch-size 16 --num-epoch 3 --out-file vgg16_dogcat --train-data-dir ./data/train_images --val-data-dir ./data/val_images

推論

学習済みモデルを利用して画像の分類を実行します。推論には以下のpythonスクリプトを実行します。

実行例:

$ python predict_batch.py --config config_dogcat --model VGG16 --restore-from vgg16_dogcat.h5 --target-dir ./data/val_images

Grad-CAMによるヒートマップ作成

学習済みモデルを利用してヒートマップ画像を生成します。ヒートマップの作成には以下のpythonスクリプトを実行します。スクリプト実行後、コンフィグ・ファイルで指定したRESULT_DIRに以下のファイル名でヒートマップ画像が生成されます。

<学習済みモデルの重みファイル名>-gradcam-<画像ファイル名>.jpg

実行例:

$ python gradcam_batch.py --config config_dogcat --model VGG16 --restore-from vgg16_dogcat.h5 --target-dir ./data/val_images