「転移学習を探求しましょう…」(Ten’i gakushū o tankyū shimashou…)

「美とファッションの魅力に迫る...」(Bi to fasshon no miryoku ni semaru...)

いくつかの簡単な質問を使ってアプローチしましょう。

  1. 転移学習とは何ですか?
  2. なぜ使用されるのか、そしてその利点は何ですか?
  3. この転移学習モデルの例は何ですか?

転移学習とは何ですか?

転移学習にはさまざまな定義がありますが、基本的には事前学習モデルの知識を活用して新しい問題を解決することを意味します。

事前学習モデルとは何ですか?

事前学習モデルとは、すでに大規模なデータセットで訓練されたモデルのことです。

なぜ使用され、その利点は何ですか?

転移学習には多くの利点があります。通常、ディープニューラルネットワークを使用してゼロから訓練するには非常に大量のデータセットと計算能力が必要です。これらの課題に対処するため、転移学習は非常に役に立ちます。

これによる利点は次の通りです…

  • 計算能力を少なく要するため、既存のリソースと少量のローカルな訓練データを使用して転移学習の技術を実行することができます。このアプローチにより、ストレージスペースと実行時間が節約されます。
  • 大規模なデータセットで既に訓練されているため、少量のデータで訓練することができます。このようなモデルを利用する場合、わずかなデータしか必要ありません。
  • 時間を節約し、学習速度も向上させます。

より深い理解を得るために…

Image by Author @tejasrimasina2002
Image by Author @tejasrimasina2002

これにより、私たちは応用の要件に応じて密な層を変更できることがわかりました。

この転移学習モデルの例は何ですか?

Xception、ResNet、VGG、MobileNet、Efficient Net、AlexNetなど、多くの事前学習モデルが存在しています。

こちらでチェックできます

転移学習モデルの例を掘り下げてそのアーキテクチャを探ってみましょう。

Image by Author @tejasrimasina2002

VGGモデルは、オックスフォード大学のVisual Geometry Group(VGG)のKaren SimonyanとAndrew Zissermanによって開発されたCNNアーキテクチャの一種です。彼らはImageNet Challengeで素晴らしい結果を達成しました。主なバリエーションはVGG16とVGG19の2つあります。実験では、訓練可能なレイヤーの数が異なる6つのモデルが使用され、その中でも最も人気のあるのはVGG16とVGG19です。

VGGは1,200,000枚の画像と1000のカテゴリにわたるImageNetデータセットで訓練されました。

VGG16のアーキテクチャを見てみると…

Source:researchgate.net

畳み込み層 : 畳み込み層は、入力データに対して畳み込み操作を行う一連の学習可能なフィルターで構成されています。これにより、畳み込み層がデータの階層的な表現を学習することが可能であり、フィルターを使用して入力の特徴を特定します。ニューラルネットワークの特徴抽出に役立つため、各フィルターが入力上にスライドし、数学的な操作を適用してローカルなパターン(エッジやテクスチャなど)を抽出します。

VGG16について

すべての畳み込み層は次のような特徴を持ちます:

  • フィルターサイズ = 3×3
  • ストライド = 1
  • パディング = same

最大プーリング:最大プーリングは、データの量を減らすために使用されますが、効果的な学習のために必要な情報は保持し、データの小さな変動を回避するため、データのセグメントから最大値を選択します。

最大プーリング層は次のような特徴を持ちます:

  • フィルターサイズ = 2×2
  • ストライド = 2

最初の畳み込み層では、画像サイズは224x224x64です。それから112×112に縮小されます。

Image by Author @tejasrimasina2002

アーキテクチャをより明確に理解するためには…

Image by Author @tejasrimasina2002

これはVgg16についての情報です。

VGG16の動作をより深く理解するために、このリソースを参照することをお勧めします。

VGGNet-16 アーキテクチャ:完全ガイド

Kaggleノートブックで機械学習コードを探索および実行する | 複数のデータソースからのデータを使用

www.kaggle.com

より良い理解を得るために、コードによる実装を行いましょう。

ここでは、コーンまたはトウモロコシのデータセットを使用して、4つのクラスの分類タスクを示します。

  • 萎縮病
  • コモンラスト
  • グレーリーフスポット
  • 健康

Source : Images from the Kaggle dataset

コーンまたはトウモロコシの葉の病気データセット

トウモロコシ/コーン植物の病気の人工知能に基づく分類

www.kaggle.com

私が使用したデータセット

実装のパート

ステップ 1: 必要なすべてのライブラリをインポートする

import numpy as np
from glob import glob
import random
import splitfolders
import os
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore", category=FutureWarning)

データセットをトレーニング、バリデーション、テストの3つのパートに分割しました。

os.makedirs('output1')
os.makedirs('output1/train')
os.makedirs('output1/val')
os.makedirs('output1/test')
loc = "/kaggle/input/corn-or-maize-leaf-disease-dataset/data"
splitfolders.ratio(loc,output ="output1",ratio = (0.80,.1,.1))

train_path = '/kaggle/working/output1/train'
val_path = '/kaggle/working/output1/val'

すべての画像サイズを224×224にリサイズします。

IMAGE_SIZE = [224, 224]

ステップ2:モデルとそのライブラリのインポート

import tensorflow as tffrom keras.layers import Input, Lambda, Dense, Flattenfrom keras.models import Modelfrom keras.applications.vgg16 import VGG16from keras.applications.vgg16 import preprocess_inputfrom keras.preprocessing import imagefrom keras.preprocessing.image import ImageDataGeneratorfrom keras.models import Sequential

ステップ3:モデルのトレーニング

model = VGG16(input_shape=IMAGE_SIZE + [3], weights='imagenet', include_top=False)

IMAGE_SIZE + [3]

ここでは、イメージがカラーであるためRGBチャネルを含めています。

weights=’imagenet’

ImageNetからの重みを使用しています。

include_top = False

VGG16は通常、サイズが224×224の画像を予期するため、トップレイヤーを含めることで異なるピクセルサイズに対応することができます。

for layer in model.layers:    layer.trainable = False

このステップは重要です。すでに訓練されたモデルのレイヤーを再トレーニングしたくないため、これをfalseに設定します。

その後、ダンスレイヤーを追加できます。

x = Flatten()(model.output)prediction = Dense(len(folders), activation='softmax')(x)model = Model(inputs=model.input, outputs=prediction)model.summary()
Image by Author @tejasrimasina2002

これに続いて、モデルをコンパイルしてフィットさせます。

model.compile(optimizer=tf.keras.optimizers.Adam(),             loss='categorical_crossentropy',            metrics = ['accuracy'])

r = model.fit_generator(  training_set,  validation_data=val_set,  epochs=10,  steps_per_epoch=len(training_set),  validation_steps=len(val_set))

出力

検証の正確度は89.92%でした。

この転移学習を使用したコーン分類の実装の明確な理解を得るために、私のGitHubで確認してください。モデルを画像でテストし、正確に予測しました。

GitHub – Tejasri-123/Corn-Classification

github.com

GitHubのリポジトリでは、この記事に含まれているすべてのファイルを見つけることができます。

読んでいただきありがとうございました……

Photo by Jon Tyson on Unsplash

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

Pythonを使用したビデオ内の深さに配慮したオブジェクトの挿入

「コンピュータビジョンの分野では、動画における深度とカメラの位置推定の一貫性が、より高度な操作、例えば動画への深度認...

人工知能

2023年に使用するための10の最高のAI画像生成ツール

2023年、最高のAI画像生成ツールは非常に複雑で高度であり、ユニークなデザインを育んでいます。デザイナーは時間制約やクリ...

機械学習

一緒にAIを学ぶ - Towards AI コミュニティニュースレター第4号

おはようございます、AI愛好者の皆さん! 今号では、Activeloopと共同で取り組んでいる大規模な言語モデル(LLM)のパフォー...

人工知能

リアルタイムなSlackボットを生成的AIで構築する

「Apache NiFi、LLM、Foundation Models、およびストリーミングを使用して、クールなSlackbotを構築する方法を学びましょうモ...

データサイエンス

「枝は何も必要ありません:私たちの主観的なMLバージョニングフレームワーク」

「Gitブランチを使用したMLプロジェクトのバージョニングを簡素化し、ワークフローをシンプルにし、データとモデルを整理し、...