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月末にオープンソース化

ブログ    
ブログ    
ブログ    

推薦する

ビジネスにおける人工知能のリスクと限界

ビジネスにおいては、人工知能のリスクと限界を考慮する必要があります。 AI のリスクと限界には、プラ...

マイクロソフトが積極的に顔認識データベースを削除した秘密は何でしょうか?

1. マイクロソフトはひそかに顔認識データベースを削除したマイクロソフトは、同社最大の公開顔認識デ...

二分木反復アルゴリズム

バイナリ ツリーの事前順序、イン順序、および事後順序のトラバーサルは、アルゴリズムとデータ構造におけ...

興味深く実用的なオープンソース人工知能プロジェクトトップ10

皆さんは多くの人工知能プロジェクトを見たり使用したりしたことがあると思いますが、そのほとんどは非常に...

ロボット兵士はもはやSFではない

ロボット兵士はまもなく現実のものとなり、戦争作戦の遂行において人間の兵士を支援し、負傷した兵士に医療...

...

IBM WatsonX: AIを企業の生産性の中核に

「象は踊れるの?」もちろん踊れますよ!かつての人々の考え方では、伝統的な大企業は、組織の肥大化や閉鎖...

ロボット工学が医療業界にもたらす変化

ロボット工学は医療分野で一般的になりつつあり、生物医学工学の分野における医療用ロボットへの資金提供が...

...

人工知能が両親の写真から子供の顔を合成し、ディープラーニングが親族関係を生成する

人工知能が両親の写真から子供の顔を合成、親族関係生成のためのディープラーニング 概要: この論文では...

マイクロソフト中国CTO: AIを祭壇から外してください

[[257901]]まとめ明らかに、中国における人工知能に関する誇大宣伝は、当初の意図から逸脱してい...

...

対照学習も次元の崩壊を引き起こすのでしょうか? LeCunとTian Yuandongのチームの新しい研究DirectCLRは、

[[431792]]自己教師学習はコンピューター ビジョンで広く使用されており、手動で注釈を付ける...