Chollet著 Dogs vs. Cats PretrainedCNN (1) 特徴抽出
Chollet著 Dogs vs. Cats PretrainedCNN (2) Fine Tuning
Chollet著 Dogs vs. Cats ConvNets (1) ダウンサイズ
ディープラーニング TensorFlow, Kerasのベストプラクティス・教科書
小さな画像データセットで正解率を上げるためには,学習済CNNを利用するのが効果的です。VGG16をImageNetのデータセット(1400万画像,2万2千クラス)を高性能GPUを使って長時間学習させたものを,特徴抽出器として使います。データ拡張あり,なしで行います。
次に,さらに一部を解凍し,その部分をファインチューニング(部分再学習)します。
(2023-12-02 Python3.10.9(GPUマシン)で動作確認済み)
(2023-12-19 追記)
「特徴抽出」とは,既成の学習済みモデルの最上層(出力側)の分類器を外し,新しい対象に合った分類器を付け加え,その付け加えた分類器だけを再学習する方法です。
「ファインチューニング」とは,既成の学習済みモデルの最上層(出力側)の分類器を外し,新しい対象に合った分類器を付け加え,その付け加えた分類器と既成モデルの上層部の一部を再学習する方法です。その前に「特徴抽出」を実行する場合もあります。
日本語のサイトでは,特徴抽出のことを転移学習と称し,ファインチューニングとは別のものとしているのが多いです。が,正しくない気がします。
英語のサイトでは,ファインチューニングも特徴抽出も転移学習の1種としているのが多いです。Chollet著では,転移学習の言葉を使わず,特徴抽出とファインチューニングだけを紹介しています。次のサイトは英語のサイトの代表であり 'Transfer Learning' として 'Feature Extractor' と 'Fine Tuning' を紹介しています。
https://towardsdatascience.com/a-comprehensive-hands-on-guide-to-transfer-learning-with-real-world-applications-in-deep-learning-212bf3b2f27a
『A Comprehensive Hands-on Guide to Transfer Learning with Real-World Applications in Deep Learning』
Kaggleからdataをdown loadする方法は,下に3番目に添付した【Dogs vs. Cats ConvNets (1) ダウンサイズ】にあります。
directoryの構成
・ best_practice_DogsCats
> .ipynbファイル
・ best_practice_DogsCats_data
・ cats_and_dogs
・ test1
> downloadされたjpgファイル(12500)
・ train
> downloadされたjpgファイル(25000)
・ cats_and_dogs_small
・ test
> cats(500最初は空)
> dogs(500最初は空)
・ train
> cats(1000最初は空)
> dogs(1000最初は空)
・ validation
> cats(500最初は空)
> dogs(500最初は空)
下の枠に添付のhtmlファイルは「Jupyter Notebook」の.ipynbファイルをhtml化したものでそれぞれのファイルは左上隅からダウンロードできます。
◆◆ダウンロードできる ipynb ファイルの構成◆◆
・Chollet_DogsCats_PretrainedCNN_0.ipynb
・オリジナルのdownloadファイルで英語版。これはrunできるか不明
・以下はGoogle Chromeで翻訳したもので2つに分割しrunできるようにした
・Chollet_DogsCats_PretrainedCNN_1.ipynb
・学習済CNN ; VGG16を使って特徴抽出を行う,時間はGPUで10分ほど
・Chollet_DogsCats_PretrainedCNN_2.ipynb
・学習済CNN ; VGG16を使ってファインチューニングを行う,時間はGPUで20分ほど
・Chollet_DogsCats_ConvNets_1.ipynb
・オリジナルdataをダウンサイズする