Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Benetechコンペ参戦記

YumeNeko
September 22, 2023
2.8k

 Benetechコンペ参戦記

2023/9/23 関東kggler会の講演用資料です。

YumeNeko

September 22, 2023
Tweet

Transcript

  1. コンペ概要:データ • コンペデータとして約60000枚の画像が提供 • 実際の論文から抽出された抽出画像は約1000枚 • 残りの59000枚は人工的に作成した生成画像 • テストデータはすべて抽出画像で構成される •

    Publicは学習データと同じデータソースから収集された抽出画像 • Privateは学習データとは異なるデータソースから収集された抽出画像 • ロバスト性を保ちながら精度を上げる必要がある 7 抽出画像例 生成画像例
  2. コンペ概要:評価指標 • 系列ごとの類似度スコアの平均が評価指標 • 類似度は系列が数値の場合はRMSE、文字列の場合はレーベンシュタイン距離で算出 • 0.0~1.0の範囲で出力されていて、1.0に近いほど良いスコアと思ってもらえればOK • チャートタイプの予測が一致していないとスコアは0 •

    予測した点の数がGTと完全に一致していないとスコアは0 8 GT Type: VerticalBar X: [“Group1”, “Group2”] Pred1 Type: VerticalBar X: [“Grouq1”, “Gruop2”] X_gt: [“Group1”, “Group2”] X_pred: [“Grouq1”, “Gruop2”] Lev Dists 1 2 𝑠𝑐𝑜𝑟𝑒 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 σ𝑖 𝐿𝑒𝑣𝑖 𝑙𝑒𝑛 𝑥𝑖 = 0.876 Pred2 Type: HorizontalBar X: [“Group1”, “Group2”] 𝑠𝑐𝑜𝑟𝑒 = 0.0 Pred3 Type: VerticalBar X: [“Group1”, “Group2”, “Group3”] 𝑠𝑐𝑜𝑟𝑒 = 0.0
  3. コンペ参加~ベースライン作成 • 公開ノートブックを参考にベースラインを作成 • 「この辺の処理変えたらスコア上がるかも?」みたいな引っ掛かりポイントもできるだ け探しながら.pyスクリプトにコピペしていく • コピペが完了したら軽くハイパラ調整 • あくまでエポック数やスケジューラなど明らかに目につくところだけ少しいじる

    • この時点で調整頑張ってもあんまり意味は無いのでほどほどに • 推論結果を確認してみる • 特にどんなサンプルをどんな間違え方をしてるのか確認 13 E2Eモデル (Donut) <chart-type><x_start> x1;x2;x3<x_end><y_start>y1,y2,y3<y_end> もっと良いリサイズ 方法はない? チャートタイプまで 生成してるのは妥当? もっと良いプロンプト フォーマットはない?
  4. 改善案例(2)データ追加 • 更にデータを増やせばスコア上がるのでは?と思い追加実験 • ICDARデータセット • ホストが(当時)コンペページで紹介していた外部データセット • 数千枚の抽出画像のみで構成されている •

    ただし、すべてのデータにアノテーションされているわけではない • お試しでアノテーションが付与されているデータだけを追加してみる ⇒ スコア改善(lb: 0.53 → 0.58) 18
  5. エラー解析による改善案検討 • アイデアが枯渇してきたので再度スコアが低いサンプルを実際に見てみる • スコアが低いサンプルの傾向は大きく2パターンあることを確認 20 ① 抽出画像特有の特徴を持っている ・コンペで提供されている生成画像は 質があまり良くない(かなりシンプル)

    ・実際の抽出画像はもっと複雑な特徴を持っている ② Scatter ・予測とGTの点の個数が一致しない (一致しない時点でスコアが0になる) ・単純に点の数が多い ・明らかなノイズに引っ張られる 予測対象外のラベル エラーバーがある ノイズや凡例を誤認識
  6. エラー解析による改善案検討 • 位置予測は物体検出モデルを使用すれば実現可能 • ラベル位置検出は公開Notebookモデルがあったのでそのまま利用 • Scatter点検出は公開モデルが無かったので自前で準備 • 当然アノテーションも無いので自分でラベリングする 24

    ② Scatter ・コンペデータとICDARデータはひたすら Labelmeで手動アノテーション ・500枚くらいを気合で頑張る ・生成データは点、ラベルを色付けした画像を同時に出力 画像処理で半自動でラベリング ・それでも点の被りとかは間違うので怪しいデータは 目視チェック&手動修正 ・10000枚くらいを根性で頑張る
  7. おわりに • データや結果から仮説を立てて、地道に実験していくのが大事 • 基本的に上手くいかないことの方が多い • めげずにとにかくサイクルを回し続ける • 優勝できるかどうかは時の運(だと思う) •

    どれだけ頑張っても最後は大なり小なり運が絡む • それでもやるべきことをちゃんとやって、できる限りの努力をするのがきっと大事 • 修行中の身なのでGM目指してこれからも精進します 29