issues
search
shunya-kato
/
Kaggle-Happywhale
KaggleのHappywhaleコンペのレポジトリ
MIT License
0
stars
0
forks
source link
現在のSOTA解法調査
#2
Open
shunya-kato
opened
2 years ago
shunya-kato
commented
2 years ago
SOTA(0.522)
shunya-kato
commented
2 years ago
大まかな方針
距離学習を使って同じクラスは近くに,異なるクラスを遠くに配置
損失関数は
ArcFace
特徴ベクトルはEfficientNetから取る
shunya-kato
commented
2 years ago
Data Augmentation
参考
Cutoutも実装しているがデフォルトはFalse
水平方向に反転
色相を調整
彩度を調整
コントラストを調整
明るさを調整
shunya-kato
commented
2 years ago
モデル
全体のモデルがあってその一部が埋め込みを行うモデル
損失関数にArcFaceを利用し,距離学習
特徴ベクトル抽出にはEfficientNetを利用
デフォルトではEfficientNet-b5
最適化はAdam
全体のモデルの損失関数はSparseCategoricalCrossentropyを使う(要するにlabelがone-hot表現されてないときのcross entropy loss)
shunya-kato
commented
2 years ago
学習
20エポックで学習
200s/epochぐらい
一応5foldに分けているが学習は1fold分しかしてない
shunya-kato
commented
2 years ago
評価
scikit learnのNearestNeighborsを使って近傍の点を探す
探す点は50個
NearestNeighborsにtrain dataをfit
val dataのembeddingをembed modelを使って抽出
embeddingを使ってtrain dataの中で近い点を探す
信頼度を1-距離と定義
信頼度が高いものを最大4つ取る
この時,一番信頼度が高いものが閾値より低かったら
new_individual
を一番信頼度が高い予測とし2番目をそのラベルとする,閾値より高かったらそのラベルを一番信頼度が高いものとし,2番目を
new_individual
とする
3番目以降は普通に追加
5つ未満だったらsample_listから補う(sample_listがどうやって選ばれたのかは不明)
0~1まで0.1刻みで閾値を変えて評価,閾値が0.6のときCVの最大値が約0.64
new_individual
のみのCVの最大値は約0.61,そのときの閾値は同じく0.6
shunya-kato
commented
2 years ago
推論
val dataのembeddingとlabelをtrain dataと合わせてからNearestNeighborsを再度fitさせてtest dataを予測
shunya-kato
commented
2 years ago
感想
val data合わせる必要ある?
ほかの距離学習も試したい
sample_listどうやって選んだ?
全部に
new_individual
を入れてる(しかも1,2番目に)けど本当にそれでいい?
ArcFaceの理解をする
EfficientNetの他のモデルを試す
現状speciesを使ってないから使う方法を考える
5fold学習させてみる
val dataのスコア20エポックまで単調増加してるし収束はもう少し先では?
SOTA(0.522)