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
【Nishika】プリント基板の電子部品検出
Search
Masafumi Abeta
June 13, 2023
Programming
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【Nishika】プリント基板の電子部品検出
【Nishika】プリント基板の電子部品検出 コンペの参加録です。
https://competition.nishika.com/competitions/kiban/summary
Masafumi Abeta
June 13, 2023
More Decks by Masafumi Abeta
See All by Masafumi Abeta
Pythonのパッケージマネージャー「uv」
abeta
1
460
GPTモデルでキャラクター設定する際の課題
abeta
0
400
GPTをLINEで使えるようにして布教した
abeta
0
230
初心者向けChatGPT入門
abeta
0
300
GPT Short Talk
abeta
0
180
拡散モデルについて少しだけ
abeta
0
100
動的計画モデル
abeta
0
210
物体追跡
abeta
0
370
特徴量記述
abeta
0
230
Other Decks in Programming
See All in Programming
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
460
Jetpack Compose メカニズム
skydoves
0
460
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
530
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
8k
スマート反転とウェブアクセシビリティ
camiha
0
210
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.1k
新卒PdEのリアル
ryu1013
1
510
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
500
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
190
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
490
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
250
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
360
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Visualization
eitanlees
152
17k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Technical Leadership for Architectural Decision Making
baasie
3
580
Git: the NoSQL Database
bkeepers
PRO
432
67k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Skip the Path - Find Your Career Trail
mkilby
1
240
Balancing Empowerment & Direction
lara
6
1.3k
WENDY [Excerpt]
tessaabrams
14
39k
Transcript
プリント基板の電⼦部品検出 阿部⽥将史 ‒ Masafumi Abeta 2023.06.13
© 2023 Masafumi Abeta 2 コンペ概要 1 解法 2 上位解法エッセンス
3
© 2023 Masafumi Abeta 3 コンペ概要 1 解法 2 上位解法エッセンス
3
© 2023 Masafumi Abeta 4 コンペ概要 背景:プリント基板の需要が⾼まり、外注での製造が増えるにつれ、利⽤者の情報を抜き取るために電⼦部品 に細⼯をしたり、偽造したりするといった危険性が⾼まっているため、それらの安全性の保証は重要な課題と なっている。 ⽬的:基板内の電⼦部品を検出し、それらの検査を⾏うために機械学習を利⽤。
タスク:プリント基板の画像から電⼦部品を検出する(インスタンスセグメンテーション)。 https://competition.nishika.com/competitions/kiban/summary
© 2023 Masafumi Abeta 5 コンペの結果(暫定) • Public: 7位 (score=0.5486)
• Private: 4位 (score= 0.600890)
© 2023 Masafumi Abeta 6 データセット • プリント基板の画像 • 解像度
⼀辺約1,000px~約8,000px • 学習⽤:122枚(ユニーク:43枚) • テスト⽤:28枚 • アノテーション • クラス数1 • インスタンス数 1~1,029 • インスタンスサイズ⼀辺 約5px 〜約4,000px • 学習⽤:18,853インスタンス • データの特徴 • インスタンス数が多い • インスタンスサイズのギャップが⼤きい • 数pxの⾮常に⼩さいインスタンスが含まれる University of Florida, “FICS PCB IMAGE COLLECTION (FPIC)” https://www.trust-hub.org/#/data/pcb-images
© 2023 Masafumi Abeta 7 評価指標 • 評価指標 AP@IoU[.5: .95]
• 制約 マスクのIntersectionは許されない • データ分割 Public : Private=1:1
© 2023 Masafumi Abeta 8 コンペ概要 1 解法 2 上位解法エッセンス
3
© 2023 Masafumi Abeta 9 ソリューション概要 • ソリューション概要 • 学習時に画像をCrop
• Mask-RCNN + SAHI • ⽅針 • ⼩さいインスタンスが多いので、⼩さいインスタンスが⼤きく写った画像をモデルに⼊⼒したい • コンペに費やせる時間が少ないので積極的に既存のライブラリを活⽤し、シングルモデルで作りたい
© 2023 Masafumi Abeta 10 前処理 • 事前に短辺を2000にリサイズ • オンザフライAugmentationは基本的に480〜800でランダムクロップ
• ⼤きいインスタンスを検出するために⼀定の確率でリサイズを採⽤(後に述べるFull Inferenceのため)
© 2023 Masafumi Abeta 11 モデル • Mask R-CNN(torchvision.models.detection.maskrcnn_resnet50_fpnのpretrained) •
モデル⼊⼒時の幅と⾼さは640x640 • バッチサイズは8、学習率は0.01、Weight Decayは0.0005、300 epoch学習 https://arxiv.org/pdf/1703.06870.pdf
© 2023 Masafumi Abeta 12 SAHI: Slicing Aided Hyper Inference
• SAHIは画像をスライディングウィンドウで分割して推論、結合する⼿法 • MMDetection, Detectron2, Torchvision, HuggingFace対応 • ドローン画像や⾶⾏物体の検出コンペ等で使⽤されている https://arxiv.org/pdf/2202.06934.pdf
© 2023 Masafumi Abeta 13 SAHIの分割処理 • 幅と⾼さは640*640、オーバーラップ40%とした • 予測のスコア閾値は0.9、マスク閾値は0.5とした
640 640 40% 40% ※分かりやすさのため⾞の画像で説明
© 2023 Masafumi Abeta 14 SAHIの結合処理 • SAHIの結合処理はNMS/NMM(Non-maximum Merge)が使⽤可能で、 基準はIoU/
IoS(Intersection over Smaller area)を使⽤できる • 結合後処理はNMMでIoU=0.1を使⽤した • 結局、Full InferenceはFalseとした IoU= IoS=
© 2023 Masafumi Abeta 15 キーポイント • ⼤きい部品のBBoxに⼩さい部品が含まれるケー スがあるので、NMMでIoUを選択 •
SAHIで予測後、 SAHIの画像分割が原因で同⼀ 物体を検出するマスクが存在するため、 Mask IoSでNMSを実⾏
© 2023 Masafumi Abeta 16 マスクの重複の除去 • 最後に`remove_overlapping_pixels`を実⾏し、スコアが低いマスクの重複部分を除去 (コンペの制約に対応するため) remove_overlapping_pixels関数
Score 0.99 Score 0.90
© 2023 Masafumi Abeta 17 予測例
© 2023 Masafumi Abeta 18 その他注意点 • torchvision.models.detection.maskrcnn_resnet50_fpnの予測マスクは[N, 1, H,
W]。 SAHIは[N, H, W]を期待しているため、そのままだと動かない。 • Mask-RCNNはBboxはあるが、Maskがない(all 0の)予測があり、ハングする。 • SAHIインスタンスがパッチに対して予測したマスク画像をすべて保持するため、メモリを⼤量に消費する。
© 2023 Masafumi Abeta 19 コンペ概要 1 解法 2 上位解法エッセンス
3
© 2023 Masafumi Abeta 20 上位解法からの反省 • インスタンスサイズでモデルを分ける • Backboneに
Swin Transformerを使⽤する • ブラー、HSVのAugmentationを使⽤する • Private約0.57程度までは⾼解像度2000~5000の学習、推論でも到達可能 • おまけの反省点 • AlbumentationsのCrop系がmaskに対して適切に機能せず改造が必要 • ログ⽤の画像はJPEGにする(ディスクを圧迫するため)
© 2023 Masafumi Abeta 21 感想 • インスタンスサイズにギャップがある⾼解像度画像の物体検出という課題は⾯⽩かったです • SAHIを使って楽しようとしましたが、かなり改造が必要になって結局⼤変でした