素晴らしい操作です!たった5行のコードで画像認識AIが作れる

素晴らしい操作です!たった5行のコードで画像認識AIが作れる

この記事では、人工知能の分野、特にコンピューター ビジョンの分野について簡単に紹介し、そこに含まれる課題、これらの課題に対する既存の最新ソリューション、そしてこれらのソリューションを多くの時間と労力をかけずに便利かつ簡単に適用する方法について説明します。

画像認識の発展

人工知能は数十年にわたって研究されてきた分野であり、科学者やエンジニアは、機械やコンピューターが適切に行動して人類に貢献できるように、世界をよりよく認識し理解するための謎を解明するために取り組んでいます。 この研究作業の最も重要な側面の 1 つは、コンピューターが私たちの周りで毎日生成される視覚情報 (画像やビデオ) を理解できるようにすることです。 コンピュータが視覚情報を認識して理解できるようにする分野は、コンピュータ ビジョンと呼ばれます。

1950 年代から 1980 年代にかけて人工知能研究が盛んになったころ、コンピューターには、画像や画像内の物体、注目すべき特徴を認識する方法が手動で指示されていました。このアプローチは、認識する必要があるオブジェクトの各固有シーンの特徴を人間が識別し、それらの特徴をコンピューターが理解できる数学モデルで表現する必要があるため、エキスパート システムと呼ばれる従来のアルゴリズムです。オブジェクトは何千もの異なる方法で表現でき、何千 (または何百万) もの異なるシーンやオブジェクトが存在するため、これには多くの面倒な作業が伴います。そのため、各オブジェクトやシーンの考えられるすべての特性などを表現する最適で正確な数学モデルを見つけるには、考えられるすべてのオブジェクトやシーンに対して永遠にかかることになります。

そして 1990 年代に機械学習の概念が導入され、画像やビデオ内のシーンやオブジェクトを識別する際にコンピューターに何を探すべきかを指示するのではなく、子供が探索を通じて周囲の環境について学習するのと同じように、コンピューターが画像内のシーンやオブジェクトを自ら識別する方法を学習できるアルゴリズムを設計できる時代が到来しました。機械学習により、コンピューターがほぼあらゆるシーンやオブジェクトを認識することを学習できる道が開かれました。

強力なコンピューター (GPU など) と、画像認識のための高度なディープラーニング アルゴリズム (Alex Krizhevsky らによる 2012 年の AlexNet、Kaeming He らによる 2015 年の ResNet、Forrest Landola らによる 2016 年の SqueezeNet、Gao Huang らによる 2016 年の DenseNet など) の登場により、多数の画像 (コンピューターの画像集のようなもの) をまとめて、画像自体のシーンやオブジェクトの特徴を学習する AI モデルを定義し、学習プロセスから得た知識を使用して、その後に遭遇するそのシーンやオブジェクト タイプの他のすべてのインスタンスを認識することが可能になりました。

[[312040]]

写真の中に見たいものを認識できる AI モデルをトレーニングするには、従来、応用数学やディープラーニング ライブラリに関する多くの専門知識が必要であり、それには時間とストレスもかかります。アルゴリズム コードを記述し、そのコードを画像に合わせて調整します。ここで私たちはソリューションを提供します。

AI Commons のチームは、わずか 5 行の Python コードで、画像に認識させたいあらゆるオブジェクトを認識できる AI モデルをトレーニングできる Python ライブラリを開発しました。 Python ライブラリは ImageAI です。これは、あらゆるレベルの専門知識を持つ学生、開発者、研究者が、5 ~ 15 行のシンプルなコードを使用して、最先端のコンピューター ビジョン機能を備えたシステムとアプリケーションを構築できるように設計されたライブラリです。それでは、必要なものを何でも認識できる最初の AI モデルを作成する手順を説明します。

AI モデルをトレーニングするには、データセットと呼ばれる画像のコレクションが必要です。 データセットには、AI モデルに認識させたいオブジェクトのサンプル画像が数百または数千個含まれています。 でも心配しないでください! AI モデルをトレーニングするためだけに、今すぐに何千もの画像をダウンロードすべきだと言っているのではありません。 このチュートリアルでは、IdenProf というデータセットを提供します。

IdenProf (Identifiable Professionals) は、服装から人間が見て識別できる職業の 10 人の専門家の写真 11,000 枚を含むデータセットです。 このデータセットに画像が表示される専門家のカテゴリは次のとおりです。

  • シェフ
  • 医者
  • エンジニア
  • 農家
  • 消防士
  • 裁判官
  • メカニック
  • パイロット
  • 警察
  • ウェイター

データセットは、AI モデルをトレーニングするための 9,000 枚の画像 (各メジャーごとに 900 枚の画像) と、トレーニング中に AI モデルのパフォーマンスをテストするための 2,000 枚の画像 (各メジャーごとに 200 枚の画像) に分割されています。 IdenProf は適切に配置されており、服装から専門家を認識できるように AI モデルをトレーニングする準備ができています。 参考までに、独自の画像データセットを使用する場合は、AI モデルに認識させたいオブジェクトまたはシーンごとに少なくとも 500 枚の写真を収集する必要があります。 ImageAI を使用して収集された画像データセットをトレーニングするには、次の例に示すように、画像をフォルダーに配置する必要があります。

  1. idenprof//train//chef//シェフ画像 900 枚 
  2. idenprof//train//doctor//医師画像 900 枚 
  3. idenprof//train//engineer//エンジニア画像 900 枚 
  4. idenprof//train//farmer//農家画像 900 枚 
  5. idenprof//train//firefighter//消防士画像 900 枚 
  6. idenprof//train//judge//審査員画像 900 枚 
  7. idenprof//train//mechanic//メカニック画像 900 枚 
  8. idenprof//train//pilot//パイロット画像 900 枚 
  9. idenprof//train//chef//シェフ画像 900 枚 
  10. idenprof//train//police//警察画像 900 枚 
  11. idenprof//train//waiter//ウェイター画像 900 枚 
  12. idenprof//test//chef//シェフ画像 200 枚 
  13. idenprof//test//doctor//医師画像 200 枚 
  14. idenprof//test//engineer//エンジニア画像 200 枚 
  15. idenprof//test//farmer//農家画像 200 枚 
  16. idenprof//test//firefighter//消防士画像 200 枚 
  17. idenprof//test//judge//審査員画像 200 枚 
  18. idenprof//test//mechanic//メカニック画像 200 枚 
  19. idenprof//test//pilot//パイロット画像 200 枚 
  20. idenprof//test//chef//シェフ画像 200 枚 
  21. idenprof//test//police//警察画像 200 枚 
  22. idenprof//test//waiter//ウェイター画像 200 枚

AI モデルをトレーニングするために独自の画像データセットを準備する方法がわかったので、次は ImageAI を使用して専門家を識別する AI モデルのトレーニングについて説明します。

  • まず、このリンクから IdenProf データセットの zip をダウンロードする必要があります。 また、職業を認識するようにトレーニングされた AI モデルの詳細とサンプル結果は、以下のリンクにある IdenProf GitHub リポジトリですべて確認できます。

https://github.com/OlafenwaMoses/IdenProf

  • AI モデルのトレーニングには高性能なコンピュータ システムが必要なので、このトレーニングに使用するコンピュータ/ラップトップに NVIDIA GPU が搭載されていることを確認することを強くお勧めします。 あるいは、実験用に無料の NVIDIA K80 GPU をお持ちの場合は、この実験に Google Colab を使用することもできます。
  • 次に、ImageAI とその依存関係をインストールする必要があります。

1) Python言語の公式ウェブサイトからPython 3をダウンロードしてインストールします。

https://python.org

2) pip 経由で次の pip をインストールします。

i. テンソルフロー

  1. pip3 テンソルフローをインストール

ii. OpenCV

  1. pip3 opencv-python をインストール

iii. ケラス

  1. pip3 keras をインストール

iv. イメージAI

  1. pip3 イメージAI をインストール--upgrade  
  • 任意の名前(例: 「FirstTraining.py」)で Python ファイルを作成します。
  • IdenProf データセットの zip を Python ファイルと同じフォルダーにコピーします。 次に、同じフォルダーに解凍します。

次に、以下のコードを Python ファイル (例: FirstTraining.py) にコピーします。

  1. imageai.Prediction.CustomからModelTraining をインポート 
  2. model_trainer = モデルトレーニング()  
  3. モデルトレーナー.setModelTypeAsResNet()  
  4. model_trainer.setDataDirectory( "idenprof" )  
  5. model_trainer.trainModel(num_objects=10、num_experiments=200、enhance_data= True 、batch_size=32、show_network_summary= True )

これは、AI モデルをトレーニングするために必要なすべてのコードです。コードを実行してトレーニングを開始する前に、コードについて説明しましょう。

最初の行では、ImageAI からモデル トレーニング クラスをインポートします。 2 行目では、モデル トレーニング クラスのインスタンスを作成します。 3 行目では、モデル タイプを ResNet に設定します (使用可能なモデル タイプは、SqueezeNet、ResNet、InceptionV3、DenseNet の 4 つです)。 4 行目では、データ ディレクトリ (データセット ディレクトリ) をデータセットの zip ファイルを解凍したフォルダーに設定します。次に、5 行目で trainModel 関数を呼び出し、次の値を指定します。

  • number_objects: これは、IdenProf データセット内のさまざまな種類の専門家の数を示します。
  • num_experiments: これは、モデル トレーナーが idenprof データセット内のすべての画像を学習して最大の精度を達成する回数です。
  • Enhance_data (オプション): 最大限の精度を確保するために、IdenProf データセット内の画像の修正されたコピーを作成するようにモデル トレーナーに指示します。
  • batch_size: これは、モデル トレーナーが IdenProf データセット内のすべての画像を学習する直前に学習される画像セットの数を指します。
  • Show_network_summary (オプション): AI モデルのトレーニングに使用したモデル タイプの構造が表示されます。

これで、Python ファイルを実行してトレーニングを開始できます。トレーニングが開始されると、次の結果が表示されます。

  1. =====================================  
  2. 合計パラメータ: 23,608,202  
  3. トレーニング可能なパラメータ: 23,555,082  
  4. トレーニング不可能なパラメータ: 53,120  
  5. ______________________________________
  6. 拡張データ生成の使用 
  7. 4 つのクラス属する 4000 枚の画像が見つかりました。  
  8. 4 つのクラス属する 800 枚の画像が見つかりました。  
  9. C:\Users\ User \PycharmProjects\FirstTraining\idenprof\json\model_class.json保存されたモデル クラスJSON マッピング 
  10. 実験回数(エポック): 200  
  11. エポック1/100  
  12. 1/280 [>............................] - 到着予定時刻: 52秒 - 損失: 2.3026 - 精度: 0.2500  
  13. 2/280 [>............................] - 到着予定時刻: 52秒 - 損失: 2.3026 - 合計: 0.2500  
  14. 3/280 [>.............................] - 到着予定時刻: 52秒 - 損失: 2.3026 - 累積: 0.2500  
  15. ..............................、  
  16. ..............................、  
  17. ..............................、  
  18. 279/280 [==============================>..] - ETA: 1 秒 - 損失: 2.3097 - acc: 0.0625Epoch 00000: モデルC:\Users\ User \PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h5に保存しています 
  19. 280/280 [================================] - 51秒 - 損失: 2.3095 - 精度: 0.0600 - 損失値: 2.3026 - 精度: 0.1000

上記の詳細について説明しましょう。

1. 「モデル クラスの JSON マッピングが C:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json に保存されました」という記述は、モデル トレーナーが idenprof データセットの JSON ファイルを保存したことを意味します。このファイルを使用すると、カスタム画像予測クラスを使用して他の画像を認識できます (手順については、後ほど説明します)。

2. ライン1/200は、ネットワークが初めてターゲット200のトレーニングを行っていることを示している。

3. 行 1/280 [>…………………………..] -ETA: 52s -loss: 2.3026 -acc: 0.2500 は、この実験でトレーニングされたバッチの数を示します。

4. 「Epoch 00000: Saving model to C:\Users\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h5」という行は、現在のトレーニング後に保存されたモデルを指します。 ex_000 はこの段階での実験を表し、acc0.100000 と valacc:0.1000 はこの実験後のテスト画像上のモデルの精度を表します (精度の最大値は 1.0)。この結果は、カスタム画像予測に使用できる最もパフォーマンスの高いモデルを理解するのに役立ちます。

AIモデルをトレーニングした後は、「CustomImagePrediction」クラスを使用して、最も高い精度を達成したモデルの画像予測を行うことができます。

[[312044]]

NVIDIA GPU にアクセスできないために AI モデルを独自にトレーニングできない場合のために、このチュートリアルでは、IdenProf データセットでトレーニングした AI モデルを提供します。このモデルを使用して、データセット内の 10 人の専門家のいずれかの新しい画像を予測できます。 61 回のトレーニング実験を経て、モデルは 79% を超える精度を達成しました。あるいは、自分でトレーニングしていない場合は、このリンクから idenprof モデルの JSON ファイルをダウンロードすることもできます。これで、トレーニング済みの AI モデルを使用して専門家の認識を開始する準備が整いました。以下の手順に従ってください。

次に、別の Python ファイルを作成し、FirstCustomImageRecognition.py などの名前を付けます。 上記でダウンロードしたAIモデル、または最も高い精度を達成したトレーニング済みモデルをコピーし、新しいpythonファイル(例:FirstCustomImageRecognition.py)のフォルダに貼り付けます。 また、ダウンロードした JSON ファイルまたはトレーニングによって生成された JSON ファイルをコピーし、新しい Python ファイルと同じフォルダーに貼り付けます。 IdenProf データセット内のカテゴリに属する​​専門家のサンプル画像を、新しい Python ファイルと同じフォルダーにコピーします。

次に、次のコードをコピーして新しい Python ファイルに挿入します。

  1. imageai.Prediction.CustomからCustomImagePredictionimport をインポートします 
  2. 実行パス = os.getcwd()  
  3. 予測 = CustomImagePrediction() 予測.setModelTypeAsResNet() 予測.setModelPath( "idenprof_061-0.7933.h5" ) 予測.setJsonPath( "idenprof_model_class.json" ) 予測.loadModel(num_objects=10)  
  4. 予測、確率 = prediction.predictImage( "image.jpg" 、 result_count=3)  
  5. zip(予測、確率)内の各予測、各確率について: print(各予測、 ": " 、各確率)

[[312045]]

以下のサンプル画像と結果をご覧ください。

ウェイター: 99.99997615814209

シェフ: 1.568847380895022e-05

審査員: 1.0255866556008186e-05

簡単じゃないですか!ここで、この予測結果を生成する上記のコードについて説明しましょう。

上記のコードの 1 行目と 2 行目は、ImageAI の CustomImagePrediction クラスをインポートして、トレーニング済みモデルと Python OS クラスを使用して画像を予測および認識します。 3 行目のコードでは、Python ファイル (この例では FirstCustomImageRecognition.py) と、自分でダウンロードまたはトレーニングした ResNet モデル ファイルを含むパスへの参照を保持する変数を作成します。

上記のコードでは、4 行目で ImagePrediction() クラスのインスタンスを作成し、5 行目で .setModelTypeAsResNet() を呼び出して予測オブジェクトのモデル タイプを ResNet に設定し、6 行目で予測オブジェクトのモデル パスをプロジェクト フォルダー フォルダーにコピーした AI モデル ファイル (idenprof_061–0.7933.h5) のパスに設定しています。

7行目では、7行目のフォルダにコピーしたJSONファイルへのパスを設定し、80行目でモデルを読み込みます。最後に、フォルダーにコピーした画像に対して予測を行い、その結果をコマンド ライン インターフェイスに出力します。

これまで、ImageAI を使用して、画像内のあらゆる種類のオブジェクトまたはオブジェクトのセットを予測できる独自の人工知能モデルを簡単にトレーニングする方法を学びました。

もちろん、上記のチュートリアルに加えて、コンピューター ビジョンとインテリジェントな音声対話という 2 つのコア機能を統合したミニ人工知能ハードウェアである AIX についても触れておきたいと思います。 Titanium AIX は、Intel Movidius AI アクセラレーション チップの強力なコンピューティング サポートと組み込みの音声 SDK および API に基づいて、AI モデル リソース プラットフォームである Model Play と互換性があります。 Model Play は世界中の開発者を対象としており、多様な AI モデルを組み込んでおり、Google Edge TPU エッジ人工知能コンピューティング チップやその他の AI ハードウェアをサポートし、開発者がプロ​​フェッショナル レベルの開発を加速できるように支援します。

さらに、Model Play は、完全で使いやすい転移学習モデル トレーニング ツールと豊富なモデル例を提供します。 Google のオープンソース ニューラル ネットワーク アーキテクチャとアルゴリズムに基づいて、自律的な転移学習機能を構築します。ユーザーはコードを書く必要はなく、画像の選択、モデルとカテゴリ名の定義だけで AI モデルのトレーニングを完了できるため、人工知能の学習と開発が容易になります。

<<:  ディープフェイクを即座に排除しましょう!マイクロソフト北京大学、AIによる顔変更ツールと偽顔検出ツールを提案

>>:  2020年のロボットとドローンに関する7つの予測

ブログ    
ブログ    
ブログ    

推薦する

インテリジェントロボットはCOVID-19の流行とどのように戦うのでしょうか?

【51CTO.comオリジナル記事】 COVID -19の流行がもたらした厳しい課題に直面して、科...

二重の流行が迫る中、機械学習アルゴリズムは新型コロナウイルスの迅速な検出にどのように役立つのでしょうか?

[51CTO.comよりオリジナル記事]秋から冬にかけての季節が近づき、インフルエンザやCOVID...

マスク氏:ロボットが雇用を奪い、ユニバーサル・ベーシック・インカムが必須に

億万長者のイーロン・マスク氏は最近、一連のツイートで、ロボットが人間の仕事を奪うなら、政府による普遍...

...

AIがIoTの状況をどう変えるのか

人工知能 (AI) はモノのインターネット (IoT) の世界に革命をもたらし、IoT の人工知能 ...

人工知能は私たちの仕事を奪うのでしょうか?北京大学の教授2人は次のように解釈した。

[[317607]]人工知能(AI)とは、人間と同等かそれ以上の知覚、認知、行動などの知能を機械に...

...

韓国メディア:中国の技術発展は速すぎて米国を脅かしており、米国から制裁を受けるだろう

[[216638]]韓国メディアは、中国の囲碁棋士である柯潔氏が2018年春にテンセントが開発した人...

...

AIストレージアーキテクチャの構築方法

今日、データの処理と保存に関する懸念が高まっています。生成されるデータの量、データが作成される場所、...

人工知能はあらゆる点で人間よりも優れているのに、なぜ人間の言っていることを理解できないのでしょうか?

9月8日、英国の新聞「ガーディアン」は、熱心な読者でも記者でもなく、サンフランシスコの人工知能スタ...

アクセンチュア:AIが新しいUIとなり、7年後にはスクリーンレス時代が到来

編集者注: Amazon の Echo スマート スピーカーや自動運転車などのスクリーンレス ユーザ...

マスク氏、XデータをAIの訓練に利用していると認める「マイクロソフトは使えないが、自分なら使える」

マスク氏はついに我慢できなくなり、X のデータを AI に入力し始めました。過去 2 日間で、X が...

「AI+」が世界を変える!さまざまな分野における 5 つの主要な AI トレンド

人工知能は現代世界で最も注目され、最も議論されているトピックであり、20年後には人々の世界観を変える...

Google、医療従事者が情報を素早く見つけられるようにAI検索機能を開始

10月10日、海外メディアの報道によると、Google Cloudは最近、医療従事者がさまざまな種類...