本文へ移動

G検定(ジェネラリスト検定)

ふぁすとあーるしーえぬえぬ

Fast R-CNN

Fast R-CNN

Fast R-CNNは、物体候補領域を深層畳み込みネットワークで効率よく分類する物体検出手法です。R-CNNの多段階の学習を、マルチタスク損失による単一段階の学習に置き換えました。

詳しい説明

R-CNNの学習が抱えていた2つの課題

Fast R-CNNは、物体検出のための手法で、Fast Region-based Convolutional Networkの略です。先行手法であるR-CNNを土台にして、物体候補領域(object proposal)を深層畳み込みネットワークで効率よく分類することを目指しています。

先行手法のR-CNNには、学習に関する課題が2つありました。

1つ目は、学習が多段階のパイプラインになっていたことです。R-CNNではまず、物体候補領域を使い、対数損失(log loss)でConvNetを微調整します。次に、ConvNetから得た特徴に対してSVMを学習させます。このSVMが物体検出器として働き、微調整で学習したsoftmax分類器の代わりを務めます。さらに3段階目として、バウンディングボックス回帰器を学習します。このように、別々の学習工程を3つ順番に行う必要がありました。

2つ目は、学習に多くの記憶領域と時間がかかることです。SVMとバウンディングボックス回帰器を学習するために、各画像の物体候補領域ごとに特徴を取り出し、ディスクへ書き出していました。

単一段階の学習とマルチタスク損失

Fast R-CNNは、これらの課題を解消するためにいくつかの工夫を取り入れています。論文が挙げる利点は次の4つです。

1. R-CNNやSPPnetより検出の質(mAP)が高い
2. 学習が単一段階で、マルチタスク損失を使う

3. 学習でネットワークの全層を更新できる

4. 特徴をキャッシュするためのディスク記憶領域が要らない

R-CNNでは微調整、SVMの学習、バウンディングボックス回帰器の学習が別々の工程でした。Fast R-CNNではこれらを1つのネットワークにまとめ、マルチタスク損失を使ってend-to-endで学習します。その結果、ネットワークの全層を1回の学習で更新でき、特徴をディスクへ書き出す必要もなくなりました。

RoIプーリング層による固定サイズへの変換

物体候補領域(関心領域、RoI)の大きさは領域ごとに異なります。一方、後段の全結合層には決まった大きさの入力を渡す必要があります。この差を埋めるのがRoIプーリング層です。

RoIプーリング層は、最大値プーリングを使って、任意の有効なRoIの内側にある特徴を、H x Wという固定の空間サイズを持つ小さな特徴マップに変換します。手順は次のとおりです。

  • 大きさh x wのRoIの窓を、H x W個の格子状の小窓に分けます。小窓1つの大きさはおよそh/H x w/Wになります
  • 各小窓の中の値に最大値プーリングを行い、出力の格子の対応するセルに入れます
  • 通常の最大値プーリングと同じく、プーリングは特徴マップのチャネルごとに独立して行います

RoIの大きさがどうであっても、出力は常にH x Wにそろいます。なお、RoIプーリング層は、SPPnetで使われた空間ピラミッドプーリング層のうち、ピラミッドの段が1つだけの特別な場合にあたります。

クラス確率とボックスの補正量を同時に出す構造

Fast R-CNNでは、入力画像と複数のRoIを全畳み込みネットワークに入力します。各RoIはRoIプーリング層で固定サイズの特徴マップにまとめられ、続く全結合層で特徴ベクトルに変換されます。

ネットワークは、RoIごとに2種類の出力ベクトルを持ちます。1つはクラスごとのsoftmax確率、もう1つはクラスごとのバウンディングボックス回帰オフセットです。R-CNNでは別々の工程で学習していた分類とボックスの補正を1つのネットワークの出力として同時に扱い、全体をマルチタスク損失でend-to-endに学習します。

速度と精度の改善

論文によると、非常に深いVGG16ネットワークを使った場合、Fast R-CNNの学習はR-CNNより9倍速く、テスト時は213倍速くなりました。PASCAL VOC 2012ではR-CNNより高いmAPを達成しています。SPPnetと比べても、VGG16の学習は3倍、テストは10倍速く、精度も上回っています。

試験で問われること

G検定

  • R-CNNの学習がConvNetの微調整、SVMの学習、バウンディングボックス回帰器の学習という3段階に分かれていたことに対し、Fast R-CNNがどのように学習を単一段階にしたかを説明できるか。
  • RoIプーリング層が、大きさの異なるRoIをH x Wの固定サイズの特徴マップに変換する仕組み(小窓への分割と小窓ごとの最大値プーリング)を説明できるか。
  • Fast R-CNNがRoIごとに出力する2種類のベクトル(クラスごとのsoftmax確率と、クラスごとのバウンディングボックス回帰オフセット)を答えられるか。
  • 特徴をディスクへ書き出していたR-CNNと比べて、Fast R-CNNでは特徴キャッシュ用のディスク記憶領域が要らず、全層を更新できるという利点を説明できるか。
  • RoIプーリング層が、SPPnetの空間ピラミッドプーリング層のうちピラミッドの段が1つだけの特別な場合にあたることを説明できるか。

最終更新日: 2026/09/23