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

推薦する

2021年6月の人工知能分野における重要な進展の概要

人工知能は、人間の理論、方法、技術、アプリケーション システムをシミュレート、拡張、拡大するために使...

...

...

転移学習の魔法:ディープラーニングは誰でも利用できるようになる

1 年前、私は数人の友人と機械学習 API を構築するためのオープンソース プラットフォームである ...

エッジ AI は何ができるのでしょうか?

人工知能 (AI) は、デバイスがユーザーと最も近接するインタラクションポイントでデータに基づく意思...

完全にプログラム可能な初の光量子コンピュータが発表されました。最強のスーパーコンピュータ「富岳」の7.8兆倍の性能です。

スーパーコンピュータは、従来のコンピュータでは解決できない問題を解決するためによく使用されます。しか...

...

ベンジオ、ヒントン、張亜琴らAI界の巨人たちが新たな共同書簡を発表! AIは危険すぎるので、再配置する必要がある

AI リスク管理は、AI 大手企業によって再び議題に挙げられています。ちょうど今、ベンジオ、ヒントン...

...

なぜドローンが5Gの商用利用の第一選択肢なのでしょうか?その理由はこの3点です!

近年、私たちの生活におけるドローンの応用はますます一般的になっています。当初は軍事分野でしたが、その...

TensorFlow を使用してシンプルなロジスティック回帰モデルをゼロから構築する

TensorFlow は Python ベースの機械学習フレームワークです。 Coursera でロ...

WAVE SUMMIT での Baidu Wang Haifeng: ディープラーニングが人工知能を産業大量生産に導入

「ディープラーニングは人工知能を大規模な工業生産の段階に押し上げています。ディープラーニングのフレー...

Google Colab をマスターするための 20 のヒント

Google Colab は AI 開発者に無料の GPU を提供しており、Tensorflow や...

IDC: 企業の AI ソリューションへの支出は 2021 年に 3,420 億ドルに達すると予想

[[417110]] IDCの世界人工知能市場に関する最新の半期追跡レポートによると、世界のAI市場...