Closed Toma0916 closed 4 years ago
TTAのとき微妙に悪くなるのはttaしてるときにtta間で正規化してないからな気がしますわね
@kminoda お願いします
ちょっと今夜か明日みます 3つ目の結果のwbf、min_confidence=1.0ってやばくね?
正規化はttaを除いてもわりとありっすね
ttaしてる時のうまい適用のさせかたがわかっていない丸ですね
すまんその正規化がなんで作用するのかがわからんのとsrcとの対応がよくわからない 例えばある画像xに対してモデルAとBでそれぞれA: (a1, a2, ..., an), B: (b1, b2, ..., bm) (スコア降順)だけ予測bboxが出てきたとして、出力を (a1, a2, ..., an, b1, b2, ..., bm)とするのではなく、 (a1, b1, a2, ..., an, b2, ..., bm)とするってことか?
あーー a1とb1の値が同じになるように平行移動すると言う認識で良い?
あいやでもやっぱよくわからん
モデルa, b, cがあってそれぞれのある画像に対する予測結果がスコア順に以下だとする。 アルファベットはモデル、数字は予測結果のindex(a1とb1が同じbbを予想しているわけではない)。
(a1: 0.98), (a2: 0.96), ... (b1: 0.94), (b2: 0.93), ... (c1: 0.99), (c2: 0.97), ...
上の状況を考えると、b1はscoreの分布が小さい側に寄っているから最終結果への寄与度は低い(それが正しいのかもしれないけど)
俺の正規化は、まず"◯1"のペアに対してソートして
c1, a1, b1を得る。(b1 = 0.94)
次に"◯2"のペアに対してソートして c2, a2, b2を得る。(c2 = 0.97)
ここで c2 > b1のようなケースのときは"◯2"について予測したスコアを
これをひたすら繰り返し。
そうすると結果的にスコア順でソートしたときに
c1, a1, b1, c2, a2, b2 ... のようになり、各モデルの予測結果が均等に使われるようになる。
スコアそのものが本質的に最終結果に寄与するのではなく、その並び順が重要って意味で上の処理を正規化と名付けました丸
あー並び順による正規化をしたわけか、俺の想像していたのとは違うけど良さげな感じがする ちょっと昼にインターン面接があるのでそれ終わったらちゃんと確認します
ちなみに正規化と聞いて俺が想像してたのは、
各モデルで一旦全データに対して予測を出して、その全予測の平均分散を求めておく → 複数モデルをアンサンブルするときは、各モデルのスコア出力の平均分散が同じになるように良い感じに調整する
みたいなのだったわ
Pの意思を継ぐもの
みのだの想定している方も考えたんだけど一旦は同一画像内で調整するという方法を実装してみた。
俺の方、どれくらい効くかよくわからんしそっちもあってもいいかも
これなんか処理後のスコアがマイナスになったりしてるけど、大丈夫?
マイナスって少し減るってこと? リアルにマイナス??
少し減るのは俺も結構みた
普通に-1.19とかのスコア出てきてる
あーそーゆことか そこに関係あるのconfidence filterだけなはずで、次段でそれを最適化してるからそんな問題は無い気がする
subtractionを小さくすればたぶんマイナスにならない気がする
なるほどね ちなみに上の結果はsubtraction 0.005ですね
あ、マイナスになるのが意図しない挙動でなければマージしてよかです。
subtraction
だけシフトする。 例えば4モデルでensembleしたら、混ぜた後のものをスコア順に上から4個ずつ取ったときにすべてのモデルの予測が一つずつ入るように弄っている。以下スコア(debug non normalize
normalize (subtraction = 0.005)
normalize (subtraction = 0.005, TTA with all option)
TTAしてる時は適用の仕方変えないとだめかもだけど、no ttaの時すごくない?