10行のコードで物体検出を実行する方法

10行のコードで物体検出を実行する方法

導入

人工知能の重要な分野はコンピュータービジョンです。コンピューター ビジョンは、コンピューターとソフトウェア システムが画像やシーンを認識して理解できる科学です。コンピューター ビジョンには、画像認識、ターゲット検出、画像生成、画像超解像度などの側面も含まれます。物体検出は、現実世界での使用例が膨大にあることから、おそらくコンピューター ビジョンの最も重要な側面です。

[[316589]]

オブジェクト検出とは、コンピューターやソフトウェア システムが画像/シーン内のオブジェクトを見つけて各オブジェクトを識別する機能を指します。物体検出は、顔検出、車両検出、歩行者カウント、ネットワーク画像、セキュリティ システム、自動運転車で広く使用されています。多くの実践分野において、物体検出には多くの方法が存在します。他のコンピュータ技術と同様に、物体検出の幅広い創造的で驚くべき用途は、コンピュータ プログラマーとソフトウェア開発者の努力から生まれるに違いありません。

今回は、プログラマーやソフトウェア開発者がわずか数行のコードで最先端のコンピューター ビジョン テクノロジーを既存および新規のアプリケーションに簡単に統合できるようにする Python ライブラリである ImageAI というプロジェクトを紹介します。

ImageAI導入工事

ImageAI でオブジェクト検出を実行するには、次の手順に従います。

  1. コンピュータシステムにPythonをインストールする
  2. ImageAIとその依存関係をインストールする
  3. オブジェクト検出モデルファイルをダウンロードする
  4. サンプルコードを実行する(10行のみ)

それでは、今すぐ始めましょう:

  • 公式の Python 言語 Web サイトから Python 3 をダウンロードしてインストールします。
  • pip 経由でインストール: TensorFlow、OpenCV、Keras、ImageAI

  1. pip3 テンソルフローをインストール
  2. pip3 opencv-python をインストール
  3. pip3 keras をインストール
  4. pip3 イメージAI をインストール--upgrade  

3) この記事のリンクから、オブジェクト検出用の RetinaNet モデル ファイルをダウンロードします。

https://towardsdatascience.com/object-detection-with-10-lines-of-code-d6cb4d86f606

プログラムを実行する

とても良い。依存関係がインストールされたので、最初のオブジェクト検出コードを記述できます。 Python ファイルを作成し、名前を付けて (たとえば、FirstDetection.py)、次のコードを記述します。検出したい RetinaNet モデル ファイル イメージを、Python ファイルを含むフォルダーにコピーします。

  1. imageai.DetectionからObjectDetection をインポートします 
  2. インポートOS
  3.  実行パス = os.getcwd()  
  4. 検出器 = オブジェクト検出()  
  5. 検出器.setModelTypeAsRetinaNet()  
  6. detector.setModelPath( os.path.join (execution_path, "resnet50_coco_best_v2.0.1.h5" ))  
  7. 検出器.loadModel()  
  8. 検出 = detector.detectObjectsFromImage( 入力イメージ = os.path.join (実行パス、 「image.jpg」 ) 出力イメージパス= os.path.join (実行パス、 「imagenew.jpg」 ))
  9.  検出における各オブジェクトについて:  
  10. print(eachObject[ "name" ], ": " ,  
  11. 各オブジェクト[ "パーセンテージ確率" ] )

実行中にこのエラーが発生した場合は、次の点に注意してください。

  1. ValueError: バックエンドをインポートできません: theano python mymodel.py

次に、次のことを試すことができます。

  1. osos.environ[ 'KERAS_BACKEND' ] = 'tensorflow'インポートします  
  2. imageai.Detection インポート ObjectDetection

次に、コードを実行し、結果がコンソールに表示されるまで待ちます。結果がコンソールに表示されたら、FirstDetection.py が保存されているフォルダーに移動すると、新しい画像が保存されていることがわかります。以下の 2 つのサンプル画像と、検出後に保存された新しい画像をご覧ください。

テスト前:

[[316590]]

テスト後:

データ結果

プログラムは各オブジェクトの確率データを出力していることがわかります。

  • 人 : 55.8402955532074
  • 人 : 53.21805477142334
  • 人: 69.25139427185059
  • 人: 76.41745209693909
  • 自転車: 80.30363917350769
  • 人: 83.58567953109741
  • 人: 89.06581997871399
  • トラック: 63.10953497886658
  • 人: 69.82483863830566
  • 人 : 77.11606621742249
  • バス: 98.00949096679688
  • トラック: 84.02870297431946
  • 車: 71.98476791381836

プログラムは画像内の次のターゲットを検出できることがわかります。

人、バイク、トラック、車、バス。

検出したい写真をプログラムに直接入れて実行し、効果を確認することができます。

原理説明

それでは、この 10 行のコードがどのように機能するかを説明しましょう。

  1. imageai.DetectionからObjectDetection をインポートし、 osexecution_path をインポートします。
  2. = os.getcwd()

上記の 3 行のコードでは、最初の行で ImageAI オブジェクト検出クラスをインポートし、2 行目で python os クラスをインポートし、python ファイル、RetinaNet モデル ファイル、および画像が配置されているフォルダーへのパスを保持する変数を定義しました。

  1. 検出器 = ObjectDetection() 検出器.setModelTypeAsRetinaNet() 検出器.setModelP
  2. ath( os.path.join (execution_path, "resnet50_coco_best_v2.0.1.h5" ))detector.loadModel()検出=
  3. detector.detectObjectsFromImage(input_image=os.path.join (実行パス
  4. th 、 "image.jpg" )、 output_image_path=os.path.join (実行パス
  5. 「imagenew.jpg」 ))

上記のコードでは、1 行目で Object Detection クラスを定義し、2 行目でモデル タイプを RetinaNet に設定し、3 行目でモデル パスを RetinaNet モデルのパスに設定し、4 行目でモデルを Object Detection クラスにロードし、検出関数を呼び出して、5 行目で入力画像パスと出力画像パスを解析します。

  1. 検出内の各オブジェクトについて: print(eachObject[ "name" ] , " : "       
  2. 、各オブジェクト[ "percentage_probability" ] )

上記のコードでは、最初の行で detector.detectObjectsFromImage 関数によって返されたすべての結果を反復処理し、2 行目に画像内で検出された各オブジェクトのモデル名とパーセンテージ確率を出力します。

<<:  大手企業がどのように人工知能を活用し、実践しているのかご覧ください。

>>:  国産ディープラーニングフレームワーク「MegEngine」が3月末にオープンソース化

推薦する

...

Google は患者の質問に答える医療 AI チャットボット Med-PaLM 2 を病院でテスト中

ウォール・ストリート・ジャーナルによると、グーグルのMed-PaLM 2は今年4月からメイヨー・クリ...

マイクロソフト、仕事の効率化に役立つ 7 つの新しい AI 製品を発表

Zhidongxi は 11 月 1 日に北京から、この日 (寒くて風が強い)、2017 Micro...

データ構造とアルゴリズム、グラフをトラバースする2つの方法を理解する

[[331362]] 1 はじめにトラバーサルとは、特定のノードから開始し、特定の検索ルートに従って...

...

Nature Sub-Journal | NUS と ByteDance が初めて AI メタ学習を脳画像に導入

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

30秒で署名、上海の核酸採取ロボットが登場!

COVID-19の流行が続き、核酸検査が広範囲で徐々に常態化している中、複数の組織が核酸検査用ロボ...

...

人工知能は人間の弱点を克服できる

人工知能の多くの利点はよく知られ、理解され、宣伝されていますが、その限界も明らかです。しかし、あまり...

ディープラーニングの未来に関する6つの予測

[51CTO.com クイック翻訳] ディープラーニングは複雑な概念であり、その中の各要素は単純では...

機械学習を利用するハッカーを心配していますか?データを盗む7つの新しい方法を知る

機械学習は、大規模なデータセットを分析してパターンを識別する能力があることで知られています。基本的に...

...

株式取引における人工知能の応用

1 か月以上の努力の末、私たちはついに、単純な完全接続ニューラル ネットワークを使用して翌日の株価の...

人工知能が人々を失業させるのは悪いことではありません。それどころか、それは良い役割を果たします。

近年の科学技術の急速な発展に伴い、人工知能の概念が徐々に明確になってきています。特にOTT業界の重要...