概要
物体検出はコンピューター ビジョンの大きな分野であり、コンピューター ビジョンの「実際の」アプリケーションの中でも重要なアプリケーションの XNUMX つです。 一方では、タスクを実行するロボットや自動運転車など、環境内でエージェントをナビゲートする自律システムを構築するために使用できますが、これには他の分野との交差が必要です。 ただし、異常検出 (ライン上の不良品など)、画像内のオブジェクトの位置特定、顔検出、およびオブジェクト検出の他のさまざまなアプリケーションは、他のフィールドと交差することなく実行できます。
オブジェクト検出は、画像分類ほど標準化されていません。これは主に、新しい開発のほとんどが、大規模なライブラリやフレームワークではなく、通常、個々の研究者、保守担当者、および開発者によって行われるためです。 必要なユーティリティ スクリプトを TensorFlow や PyTorch などのフレームワークにパッケージ化し、これまでの開発を導いた API ガイドラインを維持することは困難です。
これにより、オブジェクト検出がやや複雑になり、通常はより冗長になり (常にではありません)、画像分類よりも親しみにくくなります。 エコシステムに参加することの主な利点の XNUMX つは、優れたプラクティス、ツール、および使用方法に関する有用な情報を検索しない方法を提供することです。 オブジェクト検出を使用すると、ほとんどの場合、適切な把握を得るために、フィールドの風景についてさらに多くの調査を行う必要があります.
Meta AI の Detectron2 – インスタンス セグメンテーションとオブジェクト検出
ディテトロン2 Meta AI (以前の FAIR – Facebook AI Research) のオープン ソースのオブジェクト検出、セグメンテーション、ポーズ推定パッケージ – オールインワンです。 入力画像を指定すると、オブジェクトのラベル、境界ボックス、信頼スコア、マスク、およびスケルトンを返すことができます。 これは、リポジトリのページでよく表されています。
これは、研究プロジェクトを構築できる上にライブラリとして使用することを目的としています。 それは提供しています モデル動物園 ほとんどの実装は、RetinaNet とともに、マスク R-CNN および一般的な R-CNN に依存しています。 彼らはまたかなりまともです ドキュメント. 例題推論スクリプトを実行してみましょう!
まず、依存関係をインストールしましょう。
$ pip install pyyaml==5.1
$ pip install 'git+https://github.com/facebookresearch/detectron2.git'
次に、Detectron2 ユーティリティをインポートします。ここで、フレームワーク ドメインの知識が役立ちます。 を使用して検出器を作成できます。 DefaultPredictor
クラスを設定する構成オブジェクトを渡すことによって。 の Visualizer
結果の視覚化をサポートします。 MetadataCatalog
& DatasetCatalog
Detectron2 のデータ API に属し、組み込みのデータセットとそのメタデータに関する情報を提供します。
使用するクラスと関数をインポートしましょう。
import torch, detectron2
from detectron2.utils.logger import setup_logger
setup_logger()
from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog
使い方 requests
、画像をダウンロードしてローカル ドライブに保存します。
import matplotlib.pyplot as plt
import requests
response = requests.get('http://images.cocodataset.org/val2017/000000439715.jpg')
open("input.jpg", "wb").write(response.content)
im = cv2.imread("./input.jpg")
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
この結果:
次に、構成をロードし、必要に応じて変更を適用します (モデルはデフォルトで GPU で実行されるため、GPU がない場合は、構成でデバイスを「cpu」に設定する必要があります)。
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
ここで、どのモデルを実行したいかを指定します model_zoo
. Mask R-CNN アーキテクチャに基づいて、ResNet50 バックボーンを使用して、インスタンス セグメンテーション モデルをインポートしました。 達成したいこと (キーポイント検出、インスタンス セグメンテーション、パノプティック セグメンテーション、またはオブジェクト検出) に応じて、適切なモデルを読み込みます。
最後に、これで予測子を構築できます cfg
入力で実行します。 の Visualizer
クラスは、画像に予測を描画するために使用されます (この場合、セグメント化されたインスタンス、クラス、および境界ボックス:
predictor = DefaultPredictor(cfg)
outputs = predictor(im)
v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(out.get_image()[:, :, ::-1])
最終的に、これにより次の結果が得られます。
ベストプラクティス、業界で認められた標準、および含まれているチートシートを含む、Gitを学習するための実践的で実用的なガイドを確認してください。 グーグルGitコマンドを停止し、実際に 学ぶ それ!
さらに先へ - コンピュータ ビジョンのための実用的な深層学習
あなたの好奇心旺盛な性質は、さらに先へ進みたいと思わせますか? 私たちは私たちをチェックアウトすることをお勧めします コース: 「Pythonによるコンピュータビジョンのための実践的な深層学習」.
別のコンピューター ビジョン コースですか?
MNIST 数字や MNIST ファッションの分類は行いません。 彼らはずっと前に彼らの役割を果たしました。 高度なブラックボックス アーキテクチャにパフォーマンスの負担を負わせる前に、あまりにも多くの学習リソースが基本的なデータセットと基本的なアーキテクチャに焦点を合わせています。
私たちが注目したいのは 謎解き, 実用性, 理解する, 直感 & 実際のプロジェクト. 学びたい の あなたは違いを生むことができますか? 私たちの脳が画像を処理する方法から、乳がんの研究レベルのディープ ラーニング分類器の作成、「幻覚」を起こすディープ ラーニング ネットワークまで、実際の作業を通じて原理と理論を教え、コンピュータビジョンを解決するためにディープラーニングを適用する専門家になるためのノウハウとツール。
内部には何がありますか?
- ビジョンの第一原理と、コンピューターに「見る」ことを教える方法
- コンピューター ビジョンのさまざまなタスクとアプリケーション
- あなたの仕事を楽にする貿易ツール
- コンピュータ ビジョンのためのデータセットの検索、作成、および利用
- 畳み込みニューラル ネットワークの理論と応用
- データセット内のドメイン シフト、共起、およびその他のバイアスの処理
- 転移学習と、他人のトレーニング時間と計算リソースを自分の利益のために利用する
- 最先端の乳がん分類器の構築とトレーニング
- 主流のアイデアに健全な懐疑心を適用し、広く採用されている手法の意味を理解する方法
- t-SNE と PCA を使用した ConvNet の「概念空間」の可視化
- 企業がコンピューター ビジョン技術を使用してより良い結果を達成する方法のケース スタディ
- 適切なモデル評価、潜在空間の可視化、モデルの注意の特定
- ドメイン調査の実施、独自のデータセットの処理、モデル テストの確立
- 最先端のアーキテクチャ、アイデアの進展、それらの独自性と実装方法
- KerasCV – 最先端のパイプラインとモデルを作成するための WIP ライブラリ
- 論文を解析して読み、自分で実装する方法
- 用途に応じた機種選定
- エンドツーエンドの機械学習パイプラインの作成
- Faster R-CNN、RetinaNet、SSD、YOLO を使用したオブジェクト検出のランドスケープと直感
- インスタンスとセマンティック セグメンテーション
- YOLOv5によるリアルタイム物体認識
- YOLOv5 オブジェクト検出器のトレーニング
- KerasNLP (業界で強力な WIP ライブラリ) を使用したトランスフォーマーの操作
- トランスフォーマーを ConvNets と統合して画像のキャプションを生成する
- DeepDream
まとめ
インスタンス セグメンテーションはセマンティック セグメンテーションを一歩超えており、クラスの個々のインスタンス (人物 1、人物 2 など) に属しているかどうかだけでなく、その質的な違いに注目します。 ある意味では、これはピクセル レベルの分類です。
この短いガイドでは、マスク R-CNN を使用して、Detectron2 がインスタンスのセグメンテーションとオブジェクト検出を API を通じて簡単にアクセスできるようにする方法を簡単に説明しました。