Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
IEEE's Signal Processing Society 10th Solutionと...
Search
tereka114
March 15, 2022
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IEEE's Signal Processing Society 10th Solutionと得られた学び
Kaggle Meetup #4
Kaggle IEEE's Signal Processing Society - Camera Model Identification
tereka114
March 15, 2022
More Decks by tereka114
See All by tereka114
トラブルがあったコンペに学ぶデータ分析
tereka114
2
2.1k
Harnessing Large Language Models for Training-free Video Anomaly Detection
tereka114
1
1.8k
KDD2023学会参加報告
tereka114
2
680
Prompting Large Language Models with Answer Heuristics for Knowledge-based Visual Question Answering
tereka114
0
470
Mobile-Former: Bridging MobileNet and Transformer
tereka114
0
1.2k
DER: Dynamically Expandable Representation for Class Incremental Learning
tereka114
0
280
Jupyter Notebookを納品した話
tereka114
0
570
Multi Scale Recognition with DAG-CNNs
tereka114
0
190
How to use scikit-image for data augmentation
tereka114
0
330
Other Decks in Programming
See All in Programming
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
370
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
350
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
一人だけ、Kiroが静止する日
hideg
0
140
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
370
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
370
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.2k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
400
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
450
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
19
20k
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Tell your own story through comics
letsgokoyo
1
1.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
310
Visualization
eitanlees
153
17k
Design in an AI World
tapps
1
340
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
The Pragmatic Product Professional
lauravandoore
37
7.5k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
710
Transcript
IEEEʻs Signal Processing Society 10th Solution と得られた学び tereka114
⾃⼰紹介 • ⼭本 ⼤輝(@tereka114) • Acroquest Technology株式会社 • 画像認識、⾃然⾔語処理 •
Kaggle Master • https://www.kaggle.com/tereka • のんびりしているエンジニアの⽇記 • http://nonbiri-tereka.hatenablog.com/ • 寄稿記事 • Interface 3⽉号 ラズパイにON!Google⼈⼯知能 • Interface 12⽉号 ⼈⼯知能ウルトラ⼤百科
⽬次 • コンペティションの概要 • チームの解法 • Other Solutions(1st-5th) • チームでの取り組み
• 学んだこと • まとめ
コンペティションの概要
None
None
IEEE's Signal Processing Society - Camera Model Identification • 画像から撮影したカメラを推定する問題を解く。
• 評価指標 • 評価式中wの重みは画像に対する処理内容で決まる。 • 加⼯有り:0.3 • 加⼯無し:0.7
サンプル画像① iPhone 4S
サンプル画像② LG Nexus 5x
サンプル画像③ IPhone 6
カメラの種類 • Sony NEX-7 • Motorola Moto X • Motorola
Nexus 6 • Motorola DROID MAXX • LG Nexus 5x • Apple iPhone 6 • Apple iPhone 4s • HTC One M7 • Samsung Galaxy S4 • Samsung Galaxy Note 3
IEEE's Signal Processing Society - Camera Model Identification • ⼊⼒画像が巨⼤な画像
• データを加⼯無しで⼊⼒ができない。 • データをリサイズして⼊⼒する場合、カメラ特有のノイズがなくなるため、精度 向上の観点から望ましくない。 • ⼊⼒するための⼯夫が必要 • ⽬視だと全くわかりません。 • テストデータはunalt, manipがファイルの末尾に付与されてお り、画像が加⼯されているか否かの判断ができる。 • 加⼯なしはほぼ全て解けるので、難しい加⼯ありの画像を解くのが 勝負
加⼯の種類 • JPEG品質 • 70 • 90 • バイキュービック補間を使ってリサイズする。 •
0.5 • 0.8 • 1.5 • 2.0 • ガンマ補正 • 0.8 • 1.2
チームの解法
Our Solution Summary • データセット • 運営配布のデータセット • Grebʼsデータセット(Discussionで公開されたデータセット) •
Pseudo-Labeling • 半教師あり学習の⼿法でテストデータにラベルを付与する⼿法 (p>0.99) • Stacking • 学習時間がかかるため、2Foldsで構築した。 • チームメイト各々で構築した予測結果を結合し、XGBoost, Light GBM でL1を構築した。
Our Solution Summary Pseudo-Labeling • テストデータの中でConfidenceが⾼い(p > 0.99)データにラ ベルを振り、学習データを増強する。 •
ただし、データは変化なしの画像のみに絞り、1116件増加した。 • DenseNet201を利⽤し、336x336のcropとData Augmentation を⾏い、モデルを構築した。
Our Solution Summary Pseudo-Labeling DenseNet201 Training DenseNet201 Testing P>0.99 Glebʼs
External Dataset Training Dataset Testing Dataset Pseudo Labeling Dataset
Our Solution Stacking • Pseudo LabelingとGleb, 提供データセットを⽤いて学習モデル を構築した。 • データセットはStackingのために2分割(A,
B)する。 • チーム内で決めたインデックスに従ってモデルを作成する。 • Training:A -> Testing:B(Stacking Feature) • Training:B -> Testing:A(Stacking Feature) • Training:A+B -> Testing: Testing Dataset
Our Solution Data Augmentation • データ拡張の⼿法は今回の加⼯に準拠する。 • OpenCVを使えば、JPEGの品質、リサイズ(バイキュービック補間)、 ガンマ補正が可能 •
Data Augmentation時に加⼯なしのデータに対して、実⾏した。 • 加⼯後のデータに対してはData Augmentationを実⾏していない。
Our Solution Models • チーム内でモデルを作り続けStackingの準備をした。 • DenseNet201 • InceptionResNetV2 •
ResNet • PCA • Etc・・・ • L1 FeatureからXGBoost, Light GBMを⽤いて、最終的な出⼒ 結果を出⼒した。
Our Solution② Stacking DenseNet201 InceptionRes NetV2 ResNet PCA Glebʼs External
Dataset Training Dataset Pseudo Labeling Dataset Testing Dataset B A Testing Prediction Light GBM XGBoost
最終結果
外部データの取扱について • 終盤のタイミングで、巨⼤な外部データの話がDiscussionの Threadに出てきた。 • この外部データはDiscussion内でシェアをされていなかった。 • Exifタグを確認することで撮影デバイスを確認できる。 • 判定はtiffなのでExifタグの確認はできない。
• 後ほど、運営(Inversion⽒)が登場し、外部データの取扱につ いての⽂⾔を⼊れ忘れたそうで、そのまま競技続⾏になった。 • 先に集めていた⼈はデータセットの⾯で⾮常に有利、ソリューション を確認すると上位チームは膨⼤な量を集めており、精度に⼤きく影響 した。
Other Solutions
1st Place Summary ([ods.ai] STAMP) • データセット • Flickr+Yandexから取得した。 •
学習データには20,000件を利⽤し、判定データに50,000件使った。 • 解像度やカメラタイプ、写真の品質でフィルタリングを実施した。 • モデル • DenseNet, ResNet, InceptionResNetV2, Xception • Crop Size512 + TTA
1st Place Summary ([ods.ai] STAMP) • Power Averageやいくつか調整を⾏ったが、Overfitになった。 (Public 0.991/Private
0.985) • Hold Outにより、XGBoost, Light GBM, Kerasを使って Blendingを実施した(Public 0.986/Private 0.989)
2nd Place Summary ([ods.ai] GPU_muscles_SPcup_eligible) • データセット • Flickr+Yandex+Fotkiからクローリングして、取得した。(500GB+) •
画像のサイズは480、Data Augmentationを⾏い、推論を⾏う。 • モデル • DenseNet 201, DPN92, Resnextを⽤いている。
3rd Place(FIIGO_SPcup_eligible) • データ • 提供データセットとGlebʼs datasetを利⽤ • それに加えて各モデル450枚ほどの画像を追加した。 •
中央の1024x1024パッチのみを利⽤、90度回転を実施 • XceptionNet、XceptionNet、Inception v3、InceptionResNet v2、 DenseNet121(各々それぞれ⼊⼒サイズが異なる)
4th Place(Guanshuo Xu) • データ • 提供データセット+ Glebʼsデータセット • 学習データは中央から選択した80%の画像を使って⾏う。
• テスト画像の端は統計的に他と異なる。 • ランダムで切り抜いた画像480x480を使う。8種類のデータ拡張を⾏い、 学習を⾏った。但し、反転などは⾏わない。 • 上記モデルを利⽤しPseudo Labelingを⾏う。 • センサーノイズを推定し、補正する処理を実施した。
5th Place([ods.ai] 10011000) • データ • 解像度のみでフィルタリングしたデータ(40k)を追加した。 • ランダムでCropした224x224の画像を利⽤した。 •
モデル • Resnet50, Resnet101, Densenet121, Densenet201, Xception, Resnext101(Private LB 0.975-0.982)
ソリューションのポイント • データセットはFlickrやYandexを使ってデータセット⾃体の拡 張を⾏っていた。 • Pseudo-Labelingを⽤いた⼿法を取っているケースもある。 • 取得結果からフィルタリングし、綺麗なデータを使っている。 • 複数モデルを⽤いて、組み合わせる⽅法を使っている。
チームでの取り組み
チームでの取り組み • 各々別々にソリューションを構築し、最後にマージする戦略 • コミュニケーションはGoogle Hangout • Google Driveで出⼒ファイルやデータの分割⽅法を共有し、 Stackingなどの実装を⾏った。
チームでの取り組み 良かったこと • コンペ中の質疑応答ができる。 • 普段は⾃分のソリューションを公開できないのでチームメイトとディ スカッションすることで新しいソリューションを考えられる。 • ディスカッションを通して⾮常に勉強になる。 •
チームメイトが作った複数のソリューションを合体できる。 • 多様性があるため、最後のひと押しに効果がある。
チームでの取り組み 苦労したこと • 時差が苦しい。 • リアルタイムに対話するのが凄く⼤変だった。朝か夜少しのみ英語で 会話していた。 (アメリカ・ヨーロッパ、⽇本) • 英語厳しい
• そのまま解読+Google翻訳で頑張る。 • Stackingのフォーマット、バリデーションのインデックス調整 • 締め切り⼀週間前ぐらいに始めたので苦労した。
学んだこと
学んだこと • Pseudo Labelingを⼀部に対して使う。 • ⼀定の閾値を超えたデータを対象にのみ使う。 • 途中全体で⾏ったら丸暗記になって精度が変わらなかった。 • Stacking時にEarly
Stoppingをしない。 • Early Stoppingを利⽤するとValidationのデータに対して過学習を起こすため • 最後のソリューション選択は異なる2パターンにする。 • Joblib • 読み込み速度を劇的にあげるために利⽤した。
まとめ
まとめ • カメラ推定のコンペで10位 • Pseudo Labeling + Stackingを⽤いた⼿法 • チームとして真⾯⽬に取り組んだ初めてのコンペ
• 上位陣は特にデータを早めから収集し、そのデータを使った⼿ 法が⾒られた。 • チームとしての取り組み • ディスカッションが⾯⽩い、最後のひと押し • 英語難しいなどの苦労ポイントはありますが勉強になります。
蛇⾜
途中まで実施してた単独のソリューション • Pseudo-Labeling + Data Augmentationを使った⽅法 • 128x128でランダムにCropした画像をInception ResNetV2を 使って学習させる。
• 推定はRandomに800回実施する。 • Private 0.976