3rd Place Solution(by Oregin)
1.はじめに
今回の宗教画テーマ分類コンペの3位解法を投稿させていただきます。
ProbSpaceの運営の皆様、共にコンペに参加し、研鑽させていただきました参加者の皆様に感謝を申し上げます。
毎回、コンペを楽しませていただきながら、色々と学ばせていただいています。
以下のブログにも全体像の図解等を掲載いたしましたので、必要に応じてご参照ください。
[【3位解法】ProbSpace開催「宗教画テーマの分類」の振り返り。]https://oregin-ai.hatenablog.com/entry/2021/09/13/232706
2.前処理
今回のコンペは、データの特徴として、訓練データが654枚、テストデータが497枚と、比較的データ量が少ないデータだったので、垂直・水平に反転した画像、回転した画像、セピア色に変換した画像を水増しした訓練データを作成。それぞれの画像の水増し割合を16パターンで学習を実施しました。
データの前処理については、albumentationsというライブラリを利用しました。
【前処理 共通】
こちらは、訓練データ、テストデータの両方に適用する共通の処理です。
- サイズ変更
albumentationsのResize()を使って、画像サイズの変更を実施。後続の学習済みモデルに合わせたサイズに変更。
- 標準化
albumentationsのNormalize()を使って、画素値の標準化を実施。
【前処理 水増し】
こちらは、訓練データを水増しするために実施する前処理です。テストデータには実施しません。
- 水平反転
albumentationsのHorizontalFlipを使って、指定した割合の画像を水平反転。
- 垂直反転
albumentationsのVerticalFlipを使って、指定した割合の画像を垂直反転。
- 回転
albumentationsのRotateを使って、指定した割合の画像を回転。
- セピア変換
albumentationsのToSepiaを使って、指定した割合の画像をセピア色に変換。今回のデータでは、古い絵画もあったので、採用してみました。
3.モデル構築
今回は、大きく分けて、学習済みのEfficientNetを活用してファインチューニングを実施する1段目と、多値分類のモデルと、クラスごとの2値分類を実施するモデルを組み合わせた2段目の、スタッキングモデルを構築しました。
【1段目:EfficientNet】
1段目は、EfficientNetの学習済みモデルをファインチューニングし、訓練データの予測値と、テストデータの予測値を出力するモデルを16個作成しました。
それぞれのモデルで、訓練データの水増しの割合を変更することで、パターン分けしました。
このモデルは、skywalkerさんがトピックに投稿してくださっている、EfficientNetB0使ったベースラインも参考にさせていただきました。
https://comp.probspace.com/competitions/religious_art/discussions/skywalker-Post1a375b68565d3d022e6a
【2段目:LighetGBM】
2段目は、16種類の予測値を訓練データとして、多値分類するモデルの予測値に、各分類ごとの2値分類をするモデルの予測値を上書きすることで、精度を上げる方法を実施しました。
この方法は、プロ野球データ分析チャレンジで採用した方法を応用しました。
4.感想
今回のコンペは、宗教画の意味するテーマを分類するコンペでした。
これまで、宗教画をじっくり眺めて、テーマを考えることがなかったので、「あ、この絵のこの部分はこういうことを表しているんだ。」と、モデル以上に自分自身も学習することができました。(笑)
途中、自分が分類する場合に、「十字架があるな」、「人が多いな」などを基準にしたりするので、物体検出が応用できないかと、Yoloにも挑戦してみましたが、なかなか精度は上がりませんでした。
参考:学習済みのYOLOv5による物体検出結果の特徴量への追加
https://comp.probspace.com/competitions/religious_art/discussions/Oregin-Post2a43024f366d7a2a8a05
新しい技術にも触れられて、とても有意義なコンペとなりました。
また、今回からProbSpaceでも、最終提出ファイル選択方式となったので、最後の最後まで、ファイル選びに悩みました。
Public:Privateが13%:87%と、Publicスコアがあまり重視できない割合だったこともあって、ShakeDownしてしまいましたが、何とか3位になることができました。
引き続き、コンペに参加していきたいと思いますので、対戦よろしくお願いいたします。