見出し画像

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割程度で,予測がうまくいかなかった順にヒートマップ付きで示したのが,冒頭に示した図になる.私が見てもさっぱりわからないので、少なくとも私よりは識別能力があるようだ。



この記事が気に入ったらサポートをしてみませんか?