深層学習に基づく作物病害虫識別システム

1 はじめに

今日は、以前の学生が完了するのを支援する卒業設計プロジェクト、ディープラーニングに基づく作物の病気と害虫の識別システムを紹介したいと思います

概要

植物の病気をタイムリーかつ正確に診断することは、農業生産の損失や農産物の損失または減少を防ぐ上で重要な役割を果たします。この種の問題を解決するには、機械学習ベースの方法を使用できます。近年、特に画像処理で広く使用されているディープラーニングは、精密農業に多くの新しい用途を切り開きました。この研究では、強力なディープ ニューラル ネットワーク アーキテクチャを備えた 9 つの異なるアプローチを利用して、植物病害検出のパフォーマンス結果を評価します。これらの深層学習モデルを当面の問題に適応させるために、転移学習と深層特徴抽出手法が採用されています。この作業では、前処理された深層モデルを特徴抽出とさらなる微調整に利用することを検討します。深層特徴抽出によって得られた特徴は、サポート ベクター マシン (SVM)、極限学習マシン (ELM)、および k 最近傍法 (KNN) によって分類されます。実験で使用されたデータには、トルコで実際に採取された病気や害虫の画像が含まれていました。精度、感度、特異性、および f1 スコアが性能評価のために計算されました。評価結果は、深部特徴抽出と SVM/ELM 分類が転移学習よりも優れていることを示しています。さらに、AlexNet、VGG16、および VGG19 モデルの fc6 層は、他の層と比較してより高い精度スコアをもたらしました。

キーワード: 植物害虫検出、畳み込みニューラルネットワーク、深層学習アーキテクチャ、特徴抽出、分類器法

序章

植物では、病気の兆候は通常、葉、果実、芽、若い芽に発生します。このような状況では、果物が無駄になったり(落ちたり)、損傷したりする可能性があります。さらに、これらの病気は、新たな感染症や季節性疾患などの病気の蔓延につながります。したがって、病気が他の木に広がる前に、事前に病気を特定し、必要な予防措置を講じることが非常に重要です。したがって、植物の害虫や病気と戦うことは、農業において最も重要な問題です[1-3]

植物に影響を与える病気には多くの種類があり、それぞれが経済的、社会的、生態学的損失を引き起こす可能性があります。これに関連して、植物の病気をタイムリーかつ正確に診断することは、農作物の収量と量の損失を防ぐ上で重要な役割を果たします。植物の病気の検出は通常、手動で行われます。これらのプロセスは、植物学者や農業技術者などの専門家によって、最初は目視検査によって、次に実験室環境で実行されます。これらの従来の方法は、多くの場合、時間がかかり、手順が複雑です [1、3]。このような理由から、画像処理と機械学習に基づく疾患の自動識別が非常に重要になっています。目視検査による植物の病気の自動診断は、栽培されている農作物についての知識がほとんどまたはまったくないユーザーにとって非常に役立ちます。

植物の病気の検出に関する文献には多くの研究があります。過去 10 年間、これらの研究は多くの場合、色、形状、質感などの特徴を使用した分類プロセスに基づいています [4-7、9、9、10]。これらのプロパティに基づくメソッドの主な欠点は次のとおりです。

• いくつかの方法を組み合わせてパフォーマンスを向上させる試みが行われていますが、単独で使用するとパフォーマンスが非常に低くなります。

• セグメント化されたアプローチの使用が必要です。つまり、幾何学的な特徴や類似した特徴を抽出するには、植物を根から分離する必要があります。

• 現実では入手が難しい画像を含むデータセットを使用する

これらの理由により、そのようなシステムや方法は現実の生活では使用できません。近年、ディープ畳み込みニューラル ネットワーク (CNN) は、ビジュアル オブジェクトや機械学習の分野で目覚ましい進歩を遂げています。これらの領域について、改良されたモデルと手法の最大の利点の 1 つは、セグメンテーション手法を使用せずに特徴抽出を実行できることですしたがって、これらの方法とモデルは実際のアプリケーションに簡単に適用できます。

CNN は、基本的な深層学習ツールとして、植物の病気の検出に関するいくつかの研究で目覚ましい成功を収めています。Amara et al. [11] は、健康なバナナの葉と病気のバナナの葉を比較する機能など、画像データセットを分類するための畳み込みニューラル ネットワークとして LeNet アーキテクチャを使用しました。これらは、転移学習によって微調整されたディープ モデルを使用して評価されます。Mohantyらは、病気の植物の葉と健康な植物の葉の54,306枚の画像のデータセットを使用した。そのパフォーマンスは、CNN ベースの AlexNet および GoogleNet モデルを使用して評価され、14 の作物種と 26 の病気が特定されました。藤田らは、7つの病型からなる新しい実用的な植物病害検出システムを開発した。CNN ベースの分類システムを使用し、4 分割相互検証戦略で平均精度 82.3% を達成しました。Sladojevic らは、深層畳み込みネットワークを使用して 13 種類の植物の病気を識別する新しい方法を提案しました。Fuentes らは、トマトの 9 種類の害虫や病気をリアルタイムで識別できる、強力な深層学習ベースの検出器を開発しました。

この論文では、ディープニューラルネットワークに基づく植物害虫検出システムを提案します。この研究では、トルコの実際の植物の害虫と病気の画像のデータセットを使用しました。まず、このデータセットを、深層学習アーキテクチャ (AlexNet、VGG16、VGG19、GoogleNet、ResNet50、ResNet101、InceptionV3、InceptionResNetV2、および SqueezeNet) に基づく深層特徴抽出に使用します。これらのモデルによって得られた深い特徴は、SVM、ELM、および KNN を使用して分類されます。次に、転移学習に基づく深層学習モデルを使用して微調整します。この問題を解決するために、アーキテクチャの最後の 3 つの層を削除し、事前トレーニングされた CNN を使用して新しい層を追加します。最後に、転移学習と深い特徴抽出手法を使用してパフォーマンス結果を評価します。この論文で提案した植物病害分類法の主な貢献は次のとおりです。

• 画像を使用した植物の害虫と病気の分類は、機械学習にとって問題があります。これらの画像を分類するために、文献ではさまざまな方法が提案されています。現在、深層学習手法は機械学習の現象であり、教師あり学習の文献でさまざまな深層学習ネットワークが提案されています。この論文では、転移学習と深層特徴抽出技術を使用して、植物病害虫に一般的に使用される 9 つの深層学習ネットワーク (AlexNet、GoogleNet、VGG16、VGG19、ResNet50、ResNet101、InceptionV3、Inception ResNetV2、および SqueezeNet) を研究しました。結果を比較しました。

• この研究では、事前条件付き深層学習ネットワークと従来の分類器を使用した新しい分類アーキテクチャを提案します。特徴抽出には 9 つの深層学習ネットワークも使用されます。これらのネットワークを使用して、さまざまなサイズの特徴を抽出できます。分類フェーズでは、従来の分類器 SVM、ELM、および KNN を使用して 10 回の相互検証を行います。結果は、このアーキテクチャが転移学習ベースのネットワークよりも高い分類精度を達成することを示しています。

• 提案されたアーキテクチャは、転移学習ベースのモデルよりも計算の複雑さが低くなります。これは、実行時間の計算によって実証されます。

• 文献では、植物害虫の合成画像を使用して研究が行われることがよくあります。この研究では、1965 年における実際の植物の害虫と病気の画像で構成され、8 つのクラスターに分割されたデータセットを使用しました。このデータセットでテストされた結果は、このメソッドが実際のアプリケーションに使用できることを明確に示しています。

研究組織は以下の通りです。提案されたアプローチについてはセクション 2 で詳細に説明され、提案されたアーキテクチャについてはセクション 3 で説明されます。セクション IV では実験作業と結果を示します。最後に、セクション 5 では、結果について説明し、研究の貢献を示します。

2。材料と方法

このセクションでは、適切な小見出しの下で、この論文の理論的背景、関連するアルゴリズム、データセット、推奨される方法について詳しく説明します。

2.1. ディープラーニングと事前トレーニングされた CNN モデル

ディープラーニングは、複数の処理層で構成される計算モデルを使用してデータの特徴を学習する機械学習手法の一種です [16]。ディープラーニングは分類や認識などの分野で目覚ましい成果を上げているため、このテーマへの関心が高まっています。近年、これらの手法は音声認識、視覚物体認識、物体検出など多くの分野で応用されています。ディープラーニングの最初の研究には長い歴史がありますが、近年の成功の主な理由は、ビッグデータの生成と、大規模なメモリを備えたより高速なコンピューターです。

この研究では、9 つ​​の最も強力なディープ ニューラル ネットワーク アーキテクチャのさまざまなアプローチを試すことにより、植物の病気認識問題のパフォーマンスを評価します。これらの深層学習アーキテクチャは、ImageNet データベースのサブセットでトレーニングされます。AlexNet アーキテクチャは 25 層の深層学習アルゴリズムであり、8 層で重みをトレーニングできます [19]。GoogleNet アーキテクチャはネットワーク内のメソッドに基づいており、アーキテクチャ モジュールを使用して複数の畳み込みを並行して使用し、さまざまな特徴点を抽出します [20、21]。Oxford Visual Geometry Group (VGG) によって提案された VGG ネットワークは、ILSVRC-2014 コンペティションでより良い結果を達成するための均質なアーキテクチャです [22]。ResNet ネットワークは、より深いネットワークを訓練するために He らによって開発されました [23]。このアーキテクチャはマイクロアーキテクチャ モジュールに基づいており、VGGNet や AlexNet などの従来の連続ネットワーク アーキテクチャとは異なります。インセプション ネットワークは、Szegedy らによって提案された畳み込みニューラル ネットワーク モデルです [21]。ネットワークは、多数の畳み込みステップと最大プーリング ステップで構成されます。最終段階では、完全に接続されたニューラル ネットワークが形成されます。InceptionResNetV2 ネットワーク [24] は、インクションベースのネットワーク構造と残りの接続に基づいています。InceptionResNetV2 は、Inception アーキテクチャとほぼ同じように動作しますが、このアーキテクチャは、残留接続を使用してトレーニングの大幅な高速化を実現します [25]。SqueezeNet は Landola らによって開発されたインテリジェントなアーキテクチャであり、50 分の 1 のパラメータで ImageNet 上で AlexNet レベルの精度を実現します [26]。表 1 に、これらのアーキテクチャの特徴を詳しく示します。

2.2. 分類子

この論文では、SVM、ELM、KNN などの従来の分類手法を使用して、事前トレーニングされた深層学習モデルの特定のレイヤーから深部特徴を抽出し、深部特徴分類モデルを構築します。

2.2.1. K 最近傍 (KNN)

KNN 分類器は教師あり学習方法を使用します。この手法は、機械学習、画像処理、統計推定などの分野で広く使用されています。この手法は、新たなデータが入力された際に、既存の学習データを分類するアルゴリズムです。このアプローチの原理は、新しいデータ入力を、以前に確立されたサンプル セット内の最も近いクラスターに割り当てることです。これら 2 つのデータ ポイント間の距離は、さまざまな距離関数を使用して計算されます。最も有名な関数は、ユークリッド距離、ミンコフスキー距離、マンハッタン距離です。さらに、この方法の最大の利点は、アプリケーションがシンプルで理解しやすいことです [27,28]

2.2.2. サポート ベクター マシン (SVM)

SVM は、統計学習理論に基づいて Vapnik によって開発された手法です [29]。サポート ベクター マシン法の目標は、クラスを分離できる最大の限界値を持つ線形判別関数を作成することです。超平面に最も近い学習データはサポート ベクトルと呼ばれます。サポート ベクター マシンは、データセットを線形微分可能または区別不可能として分類できます [30]。この分類器は、画像およびオブジェクトの認識、音声認識、指紋認識、手書き認識などの多くの分野の問題を解決するためにうまく適用されています [29-31]。

2.2.3. エクストリーム ラーニング マシン (ELM)

ELM は、Huang らによって提案された単一隠れ層フィードフォワード ネットワーク (SLFN) の学習アルゴリズムです。ELM では、出力の重みは最小二乗法を使用して計算されますが、隠れ層の重みはランダムに生成されます [33]。ELM モデルは式 (1) に示されます。

2.3. データセット

この方法のパフォーマンスをテストするために使用されたデータセットには、トルコのマラティヤ、ビンギョル、エラズィグ地域で一般的な植物の病気の画像が含まれていました (図 1)。これらの画像は Nikon 7200d カメラで取得されました。このデータセットの各画像は、解像度 4000×6000 の 3 チャネル (RGB) カラー画像で構成されています。表 2 は、このデータセット内の植物の病気と害虫の名前と数を示しています。

表 2 からわかるように、データセットには 8 つの異なる植物病害に属する合計 1965 枚の画像が含まれています。このデータセットは、トルコのビンギョル大学とイニョニュ大学農学部の植物保護分野の学者によって入手されました。これらの画像は、日中の別の日に取得されました。また、病気の画像にはさまざまな木が使用されています

3. 提案手法

この研究では、完全に接続された各層からの深い特徴抽出と、事前トレーニングされた深層学習アーキテクチャに基づく転移学習を適用しました。提案された研究のスキームを図 2 および 3 に示します。転移学習と深い特徴抽出については、次のサブセクションで詳しく説明します。

3.1. 転移学習

転移学習は、問題解決で開発されたモデルから得られた知識を使用して、さまざまな問題を解決するための開始点として再利用される機械学習方法です。この研究では、転移学習に基づいて事前トレーニングされた CNN モデルを利用して微調整します。事前トレーニングされた CNN モデルを使用する理由は、ランダムに初期化された重みを使用して CNN モデルをトレーニングするよりも高速で簡単であるためです [35]。さらに、微調整プロセスは、図 2 に示すように、事前トレーニングされたネットワークの最後の 3 つの層ではなく、新しい層を分類タスクに転送することに基づいています。

3.2. 深い特徴抽出

深層特徴抽出は、前処理された畳み込みニューラル ネットワークから学習された特徴を抽出することに基づいています。これらの機能は、機械学習分類器をトレーニングするために使用されます。言い換えれば、この方法は、事前学習されたネットワークの完全に接続された層から深い特徴を抽出することに基づいています。この調査では、特定のレベルの深層学習モデル、つまり GoogleNet、ResNet50、ResNet101、InceptionV3、InceptionResNetV2、SqueezeNet と、pool5-drop_7x7_s1、fc1000、fc1000、予測、予測、pool10 から効果的な深層特徴を抽出します。さらに、GoogleNet、ResNet50、ResNet101、InceptionV3、InceptionResNetV2、および SqueezeNet モデルのこれらの層から、それぞれ 1024、1000、1000、1000、1000、および 4096 の特徴ベクトルが取得されました。取得された深い特徴は、図 3 に示すように、従来の SVM、ELM、および KNN 分類器を使用して分類されます。

この研究では、従来の SVM、ELM、および KNN 分類器が分類段階で使用され、AlexNet、VGG16、および VGG19 モデルの深い特徴がそれぞれこれら 3 つの層から取得され、分類器法を使用してパフォーマンスが計算されます。 。次に、各レイヤーのパフォーマンスが比較され、最適なレイヤーの詳細な機能が決定されます。さらに、AlexNet、VGG16、および VGG19 モデルの fc6 および fc7 層から 4096 個の特徴ベクトルが取得され、これらのモデルの fc8 層から 1000 個の特徴ベクトルが取得されます。

2 設計概要

このシステムは Python テクノロジーに基づいており、モデル化には UML を使用し、設計には深層学習、django フレームワークの組み合わせを採用し、データを保存するには Mysql データベースを使用します。

このシステムの機能は主に次のとおりです。

  1. ユーザー登録、ログイン、
  2. 情報メンテナンス、
  3. 画像の識別
  4. 害虫の識別
  5. ディープラーニング
  6. 画像検出
  7. ターゲットの検出

3 システムのキーテクノロジー

Python、django、mysql、ディープラーニングを使用した開発

4 開発ツール

開発ツールとしては主にPycharm、Python3.8、Django3、mysql5.7、Navicatなどがあります。

5コード表示

import os
import sys
from pathlib import Path

from django.core.wsgi import get_wsgi_application

# This allows easy placement of apps within the interior
# booksys directory.
ROOT_DIR = Path(__file__).resolve(strict=True).parent.parent
sys.path.append(str(ROOT_DIR / "booksys"))
# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
# if running multiple sites in the same mod_wsgi process. To fix this, use
# mod_wsgi daemon mode with each site in its own daemon process, or use
# os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.production"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production")

# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
application = get_wsgi_application()
# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)

6 システム機能の説明

プロジェクト機能のデモ

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_42135426/article/details/128499822