41530


Single Shot Multi-box Detector (SSD) をトレーニングする際に  
入力データに対してエンコードされる「variance」の役割を知りたいです。

以下の公開レポジトリを参考にしています：  
<https://github.com/rykov8/ssd_keras>  
<https://github.com/pierluigiferrari/ssd_keras>

SSDをトレーニングする際、物体の位置のラベルは、Default box（中心x, 中心y, 幅, 高さ）に対する差異（Δ中心x, Δ中心y, Δ幅,
Δ高さ）としてエンコードしてモデルに入力しますが、その際にΔ中心xとΔ中心yに対して0.1、Δ幅とΔ高さに対して0.2という値を「variance」と称してエンコードしていることに気づきました。  
しかし上記レポジトリはじめオリジナルのcaffeでの実装でも「variance」としか説明されておらず、意味がわかりませんでした。  
なぜこのようなことをするのでしょうか？


CC BY-SA 3.0
2018-02-05T05:57:18.163
41482
2018-02-07T01:47:04.367
2018-02-05T06:06:47.490
26558
26558
question
python tensorflow 機械学習 深層学習 keras
Single Shot Multi-box Detection の実装時における "variance" の役割


元のcaffeの実装で [議論](https://github.com/weiliu89/caffe/issues/155)
がされていたのと、使っていたkeras-tensorflowの実装のレポジトリでも
[議論](https://github.com/rykov8/ssd_keras/issues/53)されていました。  
caffeの実装の作者
[曰く](https://github.com/weiliu89/caffe/issues/155#issuecomment-243541464):

> You can think of it as approximating a gaussian distribution for adjusting
> the prior box. Or you can think of it as scaling the localization gradient.
> Variance is also used in original MultiBox and Fast(er) R-CNN.

keras-tensorflowの実装の作者
[曰く](https://github.com/rykov8/ssd_keras/issues/53#issuecomment-303512531):

> Probably, the naming comes from the idea, that the ground truth bounding
> boxes are not always precise, in other words, they vary from image to image
> probably for the same object in the same position just because human
> labellers cannot ideally repeat themselves. Thus, the encoded values are
> some random values, and we want them to have unit variance that is why we
> divide by some value. Why they are initialized to the values used in the
> code - I've no idea, probably some empirical estimation by the authors.


CC BY-SA 3.0
2018-02-07T01:47:04.367
41530
2018-02-07T01:47:04.367
26558
41482
answer