Google Imageのデータの分類
fast.aiの練習で,自分でGoogle Imageでデータをダウンロードしてきて,それを畳み込みニューラルネットで分類するとというのがある.講義では,手作業でChromeからJavaScriptでデータを落としていたが,自分でやるのは大変面倒くさい.
調べてみたら,ダウンローダが開発されているようだ.Google Colab上での手順は以下の通りで簡単なので,色々試すことができる.
まずインストールだが,最近PyTorchが最初からインストールされた状態になっているので,以下の1行で大丈夫だ.
!pip install fastai
次にモジュールを読み込む.widgetにダウンロード関係のものが入っている.
from fastai import *
from fastai.vision import *
from fastai.widgets import *
保存したいパス名と検索したい文字列を準備してから,download_google_imagesを呼び出す.ここでは,少女時代というグループの2人を見分けることを考える.
path = 'image_downloader'
labels = ['Stephanie Young Hwang', '윤아']
for label in labels:
download_google_images(path, label, size='>400*300', n_images=99)
ダウンロードしたデータがフォルダに保存されてるので,フォルダ名からデータ束を生成する.
path = Path(path)
data = ImageDataBunch.from_folder(path, train=".", valid_pct=0.2,
ds_tfms=get_transforms(), size=224).normalize(imagenet_stats)
データの1バッチをみてるには,
data.show_batch(rows=3, figsize=(7,8))
とする.こんな感じになっている.
あとは学習器を作り,訓練するだけだ.
learn = create_cnn(data, models.resnet34, metrics=error_rate)
learn.fit_one_cycle(10)
正解率は9割程度で,予測がうまくいかなかった順にヒートマップ付きで示したのが,冒頭に示した図になる.私が見てもさっぱりわからないので、少なくとも私よりは識別能力があるようだ。
この記事が気に入ったらサポートをしてみませんか?