主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

インスタンスセグメンテーションの面具R-CNN入門

インスタンスセグメンテーションは,オブジェクトの検出されたインスタンスごとにセグメンテーションマップを生成する拡張タイプのオブジェクト検出です。インスタンスセグメンテーションは,オブジェクトのクラスに関係なく,個々のオブジェクトを個別のエンティティとして扱います。対照的に,セマンティックセグメンテーションは,同じクラスのすべてのオブジェクトを単一のエンティティに属するものと見なします。

インスタンスセグメンテーションを実行するために,複数の深層学習アルゴリズムが存在します。一般的なアルゴリズムの1つは面具R-CNNです。これは更快R-CNNネットワークを拡張して,検出されたオブジェクトに対してピクセルレベルのセグメンテーションを実行します[1]。面具R-CNNアルゴリズムは,複数のクラスと重複するオブジェクトに対応できます。

计算机视觉工具箱™を使用して面具R-CNNに学習させる方法を示す例については,面具R-CNNを使用したマルチクラスインスタンスセグメンテーションを参照してください。

学習データ

面具R-CNNに学習させるには,次のデータが必要です。

データ 説明
RGBイメージ

ネットワーク入力として機能するRGBイメージ。H x W x 3の数値配列として指定します。

たとえば,このサンプルのRGBイメージは,個人を特定できる情報を削除するために編集されたCamVidデータセット[2]から変更されたイメージです。

街景的RGB图像,车辆和行人

グラウンドトゥルース境界ボックス

RGBイメージ内のオブジェクトの境界ボックス。NumObjects行4列の行列として指定します。行の形式は[x y w h]です。

たとえば,変数bboxesは,サンプルのRGBイメージ内の6つのオブジェクトの境界ボックスを示します。

盒子= 394 442 36 101 436 457 32 88 619 293 209 281 460 441 210 234 862 375 190 314 816 271 235 305

インスタンスラベル

各インスタンスのラベル。NumObjects行1列の字符串ベクトル,またはNumObjects行1列の文字ベクトルの细胞配列として指定します。

たとえば,変数标签は,サンプルのRGBイメージ内の6つのオブジェクトのラベルを示します。

标签= 6×1 cell array {'Person'} {'Person'} {'Vehicle'} {'Vehicle'} {'Vehicle'} {'Vehicle'}

インスタンスマスク

オブジェクトのインスタンスマスク。マスクデータには次の2つの形式があります。

  • バイナリマスク。サイズH x W x NumObjectsの逻辑配列として指定します。各マスクは,イメージ内の1つのインスタンスのセグメンテーションです。

  • 多角形座標。NumObjects行2列の细胞配列として指定します。配列の各行には,イメージ内の1つのインスタンスの境界に沿った多角形の(x, y)座標が含まれています。

    面具R-CNNネットワークには,多角形座標ではなく,バイナリマスクが必要です。多角形座標をバイナリマスクに変換するには,関数poly2maskを使用します。関数poly2maskは,多角形の内側にあるピクセルを1に設定し,多角形の外側にあるピクセルを0に設定します。このコードは,変数masks_polygonの多角形座標を,サイズh x w x numObjectsのバイナリマスクに変換する方法を示しています。

    denseMasks = false ([h, w, numObjects]);i = 1: numObjects denseMasks(:,:我)= poly2mask (masks_polygon{我}(:1),masks_polygon{我}(:,2),h, w);结束

たとえば,このモンタージュは,サンプルのRGBイメージ内の6つのオブジェクトのバイナリマスクを示しています。

六个二元掩模显示了两个行人和四辆车的分割

学習データの可視化

イメージ上にインスタンスマスクを表示するには,insertObjectMaskを使用します。カラーマップを指定できるため,各インスタンスを異なる色で表示できます。このサンプルコードは,カラーマップを使用して,変数即时通讯のRGBイメージ上に変数面具のインスタンスマスクを表示する方法を示しています。

imOverlay = insertObjectMask (im,面具,“颜色”行(numObjects));imshow (imOverlay);

在RGB图像上,每个行人和车辆都有一个独特的假色相

イメージ上にラベル付きの境界ボックスを表示するには,関数showShapeを使用します。このサンプルコードは,変数bboxesに境界ボックスのサイズと位置データ,変数标签にラベルデータを使用して,ラベル付きの四角の形状を表示する方法を示しています。

imshow imOverlay showShape (“矩形”bboxes,“标签”、标签“颜色”“红色”);

标记为“行人”和“车辆”的红色矩形环绕着每个物体的实例

データの前処理

データのフォーマットとサイズ変更

データストアを使用してデータを読み取ります。データストアは、{RGB イメージ, 境界ボックス, ラベル, マスク} の形式で 1 行 4 列の cell 配列としてデータを返さなければなりません。イメージ、境界ボックス、およびマスクのサイズは、ネットワークの入力サイズと一致していなければなりません。データのサイズを変更する必要がある場合は、imresizeを使用してRGBイメージとマスクのサイズを変更し,関数bboxresizeで境界ボックスのサイズを変更できます。

詳細は,深層学習用のデータストア(深度学习工具箱)を参照してください。

データのミニバッチの形成

面具R-CNNネットワークの学習には,カスタム学習ループが必要です。カスタム学習ループで観測値のミニバッチ処理を管理するには,データストアからminibatchqueue(深度学习工具箱)オブジェクトを作成します。minibatchqueueオブジェクトは,深層学習アプリケーションでの自動微分を可能にするdlarray(深度学习工具箱)オブジェクトにデータをキャストします。サポートされている GPU がある場合、minibatchqueueオブジェクトはデータをGPUにも移動します。

関数下一个(深度学习工具箱)は,minibatchqueueからデータの次のミニバッチを生成します。

面具R-CNNネットワークアーキテクチャ

面具R-CNNネットワークは,2つの段階で構成されています。1つ目は、アンカー ボックスに基づいてオブジェクト提案の境界ボックスを予測する領域提案ネットワーク (RPN) です。2 つ目の段階は、これらの提案を調整し、分類し、ピクセル レベルのセグメンテーションを計算する R-CNN 検出器です。

面具R-CNNモデルは,fasterRCNNLayersを使用して作成できる更快R-CNNモデルに基づいています。ROI最大プーリング層を,より正確なサブピクセルレベルのROIプーリングを提供するroiAlignLayerに置き換えます。面具R-CNNネットワークは,ピクセルレベルのオブジェクトセグメンテーション用のマスク分岐も追加します。快R-CNNネットワークの詳細については,R-CNN、快速R-CNNおよび更快R-CNN入門を参照してください。

この図は,左側に変更された更快R-CNNネットワーク,右側にマスク分岐を示しています。

面具R-CNNネットワークの学習

カスタム学習ループでモデルに学習させます。それぞれの反復で次を行います。

  • 関数下一个(深度学习工具箱)を使用して,現在のミニバッチデータを読み取ります。

  • 関数dlfeval(深度学习工具箱)と,学習データのバッチの勾配と全体的な損失を計算するカスタム補助関数を使用して,モデル勾配を評価します。

  • adamupdate(深度学习工具箱)sgdmupdate(深度学习工具箱)などの関数を使用して,ネットワークの学習可能なパラメーターを更新します。

计算机视觉工具箱を使用して面具R-CNNに学習させる方法を示す例については,面具R-CNNを使用したマルチクラスインスタンスセグメンテーションを参照してください。

参照

[1] He, Kaiming, Georgia Gkioxari, Piotr Dollár和Ross Girshick。“面具R-CNN。”ArXiv: 1703.06870 (Cs)2018年1月24日。https://arxiv.org/pdf/1703.06870。

Brostow, Gabriel J., Julien Fauqueur和Roberto Cipolla。《视频中的语义对象类:高清地面真实数据库》模式识别字母30,no。2(2009年1月):88-97。https://doi.org/10.1016/j.patrec.2008.04.005。

参考

アプリ

関数

オブジェクト

関連するトピック

外部のWebサイト