ドライブ前回(2018/2/12)取り上げたVGGやResNetのような大規模な畳み込みニューラルネット(CNN)をスクラッチ(ランダム重み)から学習させられる人は少ない。大規模なデータとマシンパワーが必要になるためだ。Learningを始めたらすぐにでも身につけるべき超重要テクと言える*1転移学習は、(ImageNetなどの)大規模データで学習済みのモデルを別のタスクに応用(転移)する技術全般を指す。今回は、ImageNetで学習した1000クラスの分類モデルをアリとハチの2クラス分類タスクに応用してみよう。犬とか猫(2017/1/8)が出てくるところだよね*2。Learningをうまく使いこなせば少量のデータでも十分学習できるのだ!さっそく解凍してデータをじっくり眺めてみよう。PyTorchも同じような機能としてImageFolderが用意されている。bees)を認識する。ディレクトリから画像を読み込んでみよう。この関数は全画像データをまとめてメモリにロードするわけではないので対象ディレクトリに大規模な画像ファイルがあっても問題ない。0番目の画像とラベルデータ拡張Kerasにもさまざまなデータ拡張(2016/12/12)が用意されていたが、PyTorchもそれに劣らずたくさんある。全部は紹介しきれないので今回のプロジェクトで使うものだけ。左がオリジナルで右が変換した(拡張した)画像。deprecated。上のを全部入りしたデータ変換関数を作る。ImageNetの訓練データの平均と分散を表し、入力画像を平均0、分散1に標準化する。