「転移学習を探求しましょう…」(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

AIニュース

「GoogleのBARDは、YouTubeの動画について「視聴して質問に回答」できるようになりました」

YouTube動画を探し続けるのにうんざりしていませんか?GoogleのBard AIは、ビデオコンテンツとの対話方法を革新する機能を導...

AIニュース

「OpenAIはAIの安全性に対処するためにベンガルールで開発者ミートアップを計画中」

OpenAIは、AIチャットボットChatGPTの影響力のある力を持つ組織であり、2024年1月にベンガルールで開発者の集まりを開催する...

機械学習

このAI論文は、概念関連伝播(CRP)を用いて、「どこ」や「何」を解き明かすための深層学習モデルの理解に新たなアプローチを提案しています

“`html 機械学習と人工知能の分野は非常に重要になっています。日々進歩している新たな技術があります。この領域はあら...

AIニュース

「イギリスの全ての人に無料のAIトレーニングを提供しています」

「ジョニー・コットムは、一人でスタートアップを運営する際に必要なジャグリングの技術を知っています昨年、エコフレンドリ...

AIニュース

「3つの医療機関が生成型AIを使用している方法」

「Med-PaLM 2および他の生成型AIソリューションを使用するGoogle Cloudのヘルスケア顧客を紹介します」

AI研究

2023年にフォローすべきトップ10のAIインフルエンサー

イントロダクション 先端技術と驚くべき可能性によって駆動される世界で、AIの絶えず進化する領域に遅れをとらないことは、ス...