R-CNN、Fast R-CNN および Faster R-CNN 入門
"オブジェクトの検出" は、イメージ内のオブジェクトを検出して分類するプロセスです。深層学習アプローチの 1 つである R-CNN (Regions with Convolutional Neural Networks) では、四角形の領域提案を畳み込みニューラル ネットワークの特徴と組み合わせます。R-CNN は 2 段階検出アルゴリズムです。第 1 段階では、オブジェクトを含んでいる可能性のあるイメージ内の領域のサブセットを特定します。第 2 段階では、各領域に含まれるオブジェクトを分類します。
R-CNN オブジェクト検出器の応用例は次のとおりです。
自動運転
スマート監視システム
顔認識
Computer Vision Toolbox™ には、R-CNN、Fast R-CNN、および Faster R-CNN アルゴリズムのオブジェクト検出器が用意されています。
"インスタンス セグメンテーション" は、オブジェクト検出を拡張して、検出された個々のオブジェクトのピクセル レベルのセグメンテーションを提供します。Computer Vision Toolbox では、Mask R-CNN と呼ばれるインスタンス セグメンテーションの深層学習アプローチをサポートする層を提供しています。詳細については、インスタンス セグメンテーションの Mask R-CNN 入門を参照してください。
R-CNN アルゴリズムを使用したオブジェクトの検出
R-CNN を使用したオブジェクトの検出用モデルは、次の 3 つのプロセスに基づきます。
オブジェクトが含まれている可能性のあるイメージ内の領域を検出します。これらの領域は "領域提案" と呼ばれます。
領域提案から CNN 特徴量を抽出します。
抽出した特徴量を使用してオブジェクトを分類します。
R-CNN には 3 つのバリアントがあります。各バリアントでは、上記のプロセスの 1 つ以上の結果の最適化、加速、または強化を試みます。
R-CNN
R-CNN 検出器[2]はまず、Edge Boxes[1] などのアルゴリズムを使用して領域提案を生成します。提案領域はイメージからトリミングされ、サイズ変更されます。その後、トリミングされてサイズ変更された領域は、CNN によって分類されます。最後に、CNN 特徴量を使用して学習したサポート ベクター マシン (SVM) によって、領域提案境界ボックスが調整されます。
関数 trainRCNNObjectDetector
を使用して R-CNN オブジェクト検出器に学習させます。この関数は、イメージ内のオブジェクトを検出する rcnnObjectDetector
オブジェクトを返します。
Fast R-CNN
R-CNN 検出器と同様に、Fast R-CNN[3] 検出器も Edge Boxes などのアルゴリズムを使用して領域提案を生成します。領域提案をトリミングしてサイズ変更する R-CNN 検出器とは異なり、Fast R-CNN 検出器ではイメージ全体を処理します。R-CNN 検出器は各領域を分類しなければなりませんが、Fast R-CNN は各領域提案に対応する CNN 特徴量をプーリングします。Fast R-CNN 検出器ではオーバーラップする領域の計算を共有するので、Fast R-CNN は R-CNN よりも効率的です。
関数 trainFastRCNNObjectDetector
を使用して Fast R-CNN オブジェクト検出器に学習させます。この関数は、イメージからオブジェクトを検出する fastRCNNObjectDetector
を返します。
Faster R-CNN
Faster R-CNN [4] 検出器では、Edge Boxes などの外部アルゴリズムを使用する代わりに、領域提案ネットワーク (RPN) を追加してネットワーク内で領域提案を直接生成します。RPN はアンカー ボックスによるオブジェクトの検出を使用します。ネットワーク内で領域提案を生成する方が高速であり、データに合わせてより適切に調整されます。
関数 trainFasterRCNNObjectDetector
を使用して Faster R-CNN オブジェクト検出器に学習させます。この関数は、イメージからオブジェクトを検出する fasterRCNNObjectDetector
を返します。
R-CNN オブジェクト検出器の比較
このオブジェクト検出器ファミリでは、領域提案を使用してイメージ内のオブジェクトを検出します。提案された領域の数によって、イメージ内のオブジェクトの検出にかかる時間が決まります。Fast R-CNN 検出器と Faster R-CNN 検出器は、領域の数が多い場合に検出のパフォーマンスを向上させるように設計されています。
R-CNN 検出器 | 説明 |
---|---|
trainRCNNObjectDetector |
|
trainFastRCNNObjectDetector |
|
trainFasterRCNNObjectDetector |
|
転移学習
事前学習済みの畳み込みニューラル ネットワーク (CNN) を R-CNN 検出器の基礎として使用できます。この手法は、"転移学習" とも呼ばれます。事前学習済みの深層ニューラル ネットワーク (Deep Learning Toolbox)を参照してください。関数 trainRCNNObjectDetector
、trainFasterRCNNObjectDetector
、または trainFastRCNNObjectDetector
と一緒に、次のネットワークのいずれかを使用します。これらのネットワークを使用するには、対応する Deep Learning Toolbox™ モデルをインストールしなければなりません。
'
alexnet
(Deep Learning Toolbox)''
vgg16
(Deep Learning Toolbox)''
vgg19
(Deep Learning Toolbox)''
resnet50
(Deep Learning Toolbox)''
resnet101
(Deep Learning Toolbox)''
inceptionv3
(Deep Learning Toolbox)''
googlenet
(Deep Learning Toolbox)''
inceptionresnetv2
(Deep Learning Toolbox)''
squeezenet
(Deep Learning Toolbox)'
事前学習済みイメージ分類 CNN に基づいてカスタム モデルを設計することもできます。R-CNN、Fast R-CNN、Faster R-CNN モデルの設計の節およびディープ ネットワーク デザイナー (Deep Learning Toolbox) アプリを参照してください。
R-CNN、Fast R-CNN、Faster R-CNN モデルの設計
事前学習済みイメージ分類 CNN に基づいてカスタム R-CNN モデルを設計できます。深層学習ネットワークを構築、可視化および編集するために、ディープ ネットワーク デザイナー (Deep Learning Toolbox)を使用することもできます。
基本 R-CNN モデルは、事前学習済みのネットワークから開始します。最後の 3 つの分類層は、検出対象のオブジェクト クラスに固有の新しい層で置き換えられます。
R-CNN オブジェクト検出ネットワークの作成方法の例については、R-CNN オブジェクト検出ネットワークの作成を参照してください。
Fast R-CNN モデルは基本 R-CNN モデルに基づいています。一連のボックス オフセットを学習してイメージ内のオブジェクトの位置を改善するために、ボックス回帰層が追加されています。各領域提案の CNN 特徴量をプーリングするために、ROI プーリング層がネットワークに挿入されています。
Fast R-CNN オブジェクト検出ネットワークの作成方法の例については、Fast R-CNN オブジェクト検出ネットワークの作成を参照してください。
Faster R-CNN モデルは Fast R-CNN モデルに基づいています。提案を外部アルゴリズムから取得するのではなく、領域提案を生成するために、領域提案ネットワークが追加されています。
Faster R-CNN オブジェクト検出ネットワークの作成方法の例については、Faster R-CNN オブジェクト検出ネットワークの作成を参照してください。
深層学習用学習データのラベル付け
イメージ ラベラー、ビデオ ラベラー、またはグラウンド トゥルース ラベラー (Automated Driving Toolbox) アプリを使用して、対話形式でピクセルにラベル付けし、ラベル データを学習用にエクスポートできます。アプリは、オブジェクト検出用の四角形の関心領域 (ROI)、イメージ分類用のシーン ラベル、セマンティック セグメンテーション用のピクセルにラベルを付けるためにも使用できます。いずれかのラベラーでエクスポートされたグラウンド トゥルース オブジェクトから学習データを作成するには、関数 objectDetectorTrainingData
または関数 pixelLabelTrainingData
を使用できます。詳細については、オブジェクト検出およびセマンティック セグメンテーション用の学習データを参照してください。
参照
[1] Zitnick, C. Lawrence, and P. Dollar. "Edge boxes: Locating object proposals from edges." Computer Vision-ECCV. Springer International Publishing. Pages 391-4050. 2014.
[2] Girshick, R., J. Donahue, T. Darrell, and J. Malik. "Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation." CVPR '14 Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition. Pages 580-587. 2014
[3] Girshick, Ross. "Fast r-cnn." Proceedings of the IEEE International Conference on Computer Vision. 2015
[4] Ren, Shaoqing, Kaiming He, Ross Girshick, and Jian Sun. "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks." Advances in Neural Information Processing Systems . Vol. 28, 2015.
参考
アプリ
- イメージ ラベラー | グラウンド トゥルース ラベラー (Automated Driving Toolbox) | ビデオ ラベラー | ディープ ネットワーク デザイナー (Deep Learning Toolbox)
関数
trainRCNNObjectDetector
|trainFastRCNNObjectDetector
|trainFasterRCNNObjectDetector
|fasterRCNNObjectDetector
|fastRCNNObjectDetector
|rcnnObjectDetector
関連する例
詳細
- アンカー ボックスによるオブジェクトの検出
- MATLAB による深層学習 (Deep Learning Toolbox)
- 事前学習済みの深層ニューラル ネットワーク (Deep Learning Toolbox)