1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ある日、「Faster-RCNNを作ってくれ」と言われても困らないように備える

Posted at

初めに

みなさん、Faster-RCNNは好きですか。
もしかしたら、あなたの上司はFaster-RCNNが大好きで、「Faster-RCNNを作ってくれ」と言ってくるかもしれません。

幸いにもFaster-RCNNの原理についての解説はQiitaやそのほかのサイトにも多くあります。
しかし、それでもわからないことがあります。
それは、画像ごとに検出する物体の個数が違うのをどう扱うか

上司に「入力の前処理と出力の後は別の人にやらせるから仕様を教えてくれ」と言われても困ってしまいます。
そうならないように皆さんも今のうちに備えましょう。

論文

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks (arxiv)

Screenshot_2020-02-01 1506 01497 pdf.png
図は上記論文より。

疑問

  • 物体の個数は画像ごとに異なっていて、また不明だがそれをどういった形式で出力するか

答え

入力のバッチサイズは1。
なので、出力のサイズは単純にbounding boxでは[RPNが提案した画像の枚数、4]、物体のクラスは[RPNが提案した画像の枚数、クラス数+1]。
(RPNはRegion Proposal Networkの略。クラス数+1となっているのは背景の場合があるため)

言われてしまえば、なんということはない。
論文の著者らが公開しているソースコードの設定ファイル

IMS_PER_BATCH: 1

という項目がある。

余談

Faster R-CNNはend2endで学習できるのが売りだが、いきなりend2endで学習するのはRPNが変な領域ばかり提案して効率が悪い。
そのため、先にRPNを学習すると論文に書いてある。

その際、学習データが負例ばかりになるのを避けるために正例と負例を128個ずつサンプリングするが、正例が128個以下の場合は負例で埋めるので、合計サイズは256で一定。
この場合は画像ごとにサイズが異なる心配はしなくてもいいが、入力画像は1枚みたいなのであまり関係ない。

最後に

思い込みって怖いですね。
ミニバッチで複数の画像を入力するものとばかり思っていて、その中で可変長に対応する方法を探していたが、1枚ずつ入力するとは思いもしなかった。

これで、入出力の仕様が定まってよかったですね。
上司に無事に報告できます。

それでは、良き物体検出ライフを。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?