目標検出を達成するために、超簡単なコードのpythonのImageAIライブラリの使用は、わずか数行

目標検出とは何ですか

ターゲット画像内の特定の標的検出対象物、ポジショニング(ローカライズ)+識別(認識)を解決する必要性に対処します。比較すると分類は、検出は、画像の前景と背景の理解を与えられて、私たちは関心の背景オブジェクトから分離する必要があり、この目標(カテゴリと場所)の記述を決定するために、その出力は検出モデルのリストです、各項目のリストを使用してカテゴリの配列と標的検出位置を(表現共通矩形の検出枠の座標)が与えられます。

素人の面では、フレームのオブジェクト検出は、図ターゲットにターゲットに対象外であり、フレームが有効であることを認識し、すべてのオブジェクトは、ボックスの外にあるイメージに最も適しています。

ターゲット検出アルゴリズム

;段階(一段階)検出アルゴリズムを標的とする2つの段(二段)検出アルゴリズムを標的とする:現在深度学習物体検出フィールドは、2つのカテゴリに分けられます。

二段

アルゴリズム(アルゴリズム)によって試料として候補フレーム、畳み込みニューラルネットワーク分類を介して、サンプル(試料)の最初のリストを生成します。また、候補領域(地域提案)Aに基づくアルゴリズムを知られています。一般的なアルゴリズムR-CNN、高速R-CNN、より高速なR-CNNのように。

1つのステージ

対象ブロックが、オンエンド(End-to-Endの)アルゴリズムとして知られている、位置決め回帰(回帰)問題に変換される直接、候補ブロックを生成する必要はありません。一般的なアルゴリズムYOLO、SSDなど。

パイソン達成

本論文では、理論的根拠にとして、ターゲット検出を実現する方法について説明しますが、多くは行く、あなたは、関連する論文を見ることができます。

ImageAIは、開発者が簡単にアプリケーションに最新の最も高度な人工知能機能を統合できるように、コンピュータビジョンPythonライブラリを使用して簡単です。

ImageAIは、簡略化の原則に沿って、画像予測のための最も先進的な機械学習アルゴリズムをサポートし、カスタムイメージ、オブジェクト検出、ビデオ検出、ビデオオブジェクトトラッキングおよび画像予測トレーニングを見込んでいます。

頼ります

  • Pythonの3.5.1(およびそれ以降)
  • PIP3
  • Tensorflow 1.4.0(およびそれ以降)
  • numpyの1.13.1(以降)
  • scipyのダウンロード0.19.1(以降)
  • OpenCVの
  • matplotlibの
  • h5py
  • ハード2.xの

インストール

  • コマンドラインインストール
pip3 install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl
  • ダウンロードimageai-2.1.0-PY3 -なし- any.whlのインストールファイルとコマンドラインパスに指定されたファイルをインストールします
pip3 install .\imageai-2.1.0-py3-none-any.whl

使用

画像のサポート深い学習アルゴリズムがあるRetinaNetYOLOv3TinyYoLOv3ImageAIが有するCOCOデータセットの良好な3つに対応するモデルに予め訓練を、異なるモデルは、必要に応じて適宜選択することができます。次のリンクを使用してダウンロードすることができます。

上記80種類の目標を検出し、モデルを識別するために:

person,   bicycle,   car,   motorcycle,   airplane,
bus,   train,   truck,   boat,   traffic light,   fire hydrant, stop_sign,
parking meter,   bench,   bird,   cat,   dog,   horse,   sheep, cow,
elephant,   bear,   zebra,   giraffe,   backpack,   umbrella,
handbag,   tie,   suitcase, frisbee,   skis,   snowboard,  
sports ball,   kite,   baseball bat,   baseball glove,   skateboard,
surfboard,   tennis racket,   bottle,   wine glass,   cup,   fork,   knife,
spoon,   bowl, banana,   apple,   sandwich,   orange,   broccoli,   carrot,
hot dog,   pizza,   donot,   cake,   chair,   couch,   potted plant,   bed,
dining table,   toilet,   tv,   laptop,   mouse,   remote,   keyboard,
cell phone,   microwave,   oven,   toaster,   sink,   refrigerator,
book,   clock,   vase,   scissors,   teddy bear,   hair dryer,
toothbrush

のは、完全なコードを見てみましょう、標的の同定のためのYOLOv3アルゴリズム13写真。

from imageai.Detection import ObjectDetection
import os

detector = ObjectDetection()
detector.setModelTypeAsYOLOv3()
detector.setModelPath("./model/yolo.h5")
detector.loadModel()

path = os.getcwd()
input_image_list = os.listdir(path+"\pic\input")
input_image_list = sorted(input_image_list, key = lambda i:len(i),reverse = False)
size = len(input_image_list)
for i in range(size):
    input_image_path = os.path.join(path+"\pic\input", input_image_list[i])
    output_image_path = os.path.join(path+"\pic\output", input_image_list[i])
    detections, extract_detected_objects = detector.detectObjectsFromImage(input_image=input_image_path,
                                                 output_image_path=output_image_path,
                                                 extract_detected_objects=True)
    print('------------------- %d -------------------' % int(i + 1))
    for eachObject in detections:
        print(eachObject["name"], " : ", eachObject["percentage_probability"], " : ", eachObject["box_points"])
    print('------------------- %d -------------------' % int(i + 1))

非常に最初の行導入ImageAI Object Detectionセカンドラインに導入されたタイプ、osライブラリ。
ObjectDetectionは、クラスの新しいインスタンスを作成し、その後、あなたが使用するアルゴリズムを選択することができます。次の三つの機能があります。

.setModelTypeAsRetinaNet() 
.setModelTypeAsYOLOv3()
.setModelTypeAsTinyYOLOv3()

あなたは、アルゴリズム、パスが、ここで与えられなければならないと同じアルゴリズムの選択を選択した後にモデルファイルのパスを設定する必要があります。

.setModelPath() 
- 参数path(必须):模型文件的路径

モデルをロードします。

.loadModel()
- 参数detection_speed(可选):最多可以减少80%的时间,单身会导致精确度的下降。可选的值有: “normal”, “fast”, “faster”, “fastest” 和 “flash”。默认值是 “normal”。

OSライブラリーによって得られたなど、入力と出力のパスをファイル、それはこの記事の焦点ではありませんが、テーブルをスキップします。
画像目標検出を開始します。

.detectObjectsFromImage()
- 参数input_image(必须):待检测图像的路径
- 参数output_image(必须):输出图像的路径
- 参数parameter minimum_percentage_probability(可选):能接受的最低预测概率。默认值是50%。
- 参数display_percentage_probability(可选):是否展示预测的概率。默认值是True。
- 参数display_object_name(可选):是否展示识别物品的名称。默认值是True。
- 参数extract_detected_objects(可选):是否将识别出的物品图片保存。默认是False。

異なるパラメータの戻り値が異なる持っているが、辞書の配列に戻ります。辞書には、次の属性が含まれます。

* name (string)
* percentage_probability (float)
* box_points (tuple of x1,y1,x2 and y2 coordinates)

上述したように、私たちはあなたにも彼らが欲しいだけのターゲットを認識するように選択することができ、ターゲットの80種類を識別することができます。

custom = detector.CustomObjects(person=True, dog=True)

detections = detector.detectCustomObjectsFromImage( custom_objects=custom, input_image=os.path.join(execution_path , "image3.jpg"), output_image_path=os.path.join(execution_path , "image3new-custom.jpg"), minimum_percentage_probability=30)

まず、ターゲットの残りの部分であなたが望む目標を定義するには、Falseに設定されます。その後で.detectCustomObjectsFromImage()、ターゲット検出。

メインコード実質的に上記のように、その結​​果を参照。画像の効果を見てみましょのみ対象です。

------------------- 10 -------------------
dog  :  98.83476495742798  :  (117, 91, 311, 360)
dog  :  99.24255609512329  :  (503, 133, 638, 364)
dog  :  99.274742603302  :  (338, 38, 487, 379)
------------------- 10 -------------------

効果が良いです。複数のターゲット画像の結果があるかどうかを確認する方法を見てください。

------------------- 4 -------------------
book  :  55.76887130737305  :  (455, 74, 487, 146)
book  :  82.22097754478455  :  (466, 11, 482, 69)
tv  :  99.34800863265991  :  (25, 40, 182, 161)
bed  :  88.7190580368042  :  (60, 264, 500, 352)
cat  :  99.54025745391846  :  (214, 125, 433, 332)
------------------- 4 -------------------

ブックを識別することができるの後ろに認知度はまだ高く、人間の目では見ることができません。

付録

GitHubの:https://github.com/Professorchen/Computer-Vision/tree/master/object-detection

おすすめ

転載: www.cnblogs.com/multhree/p/11324786.html