Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【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
390
GPTをLINEで使えるようにして布教した
abeta
0
220
初心者向けChatGPT入門
abeta
0
300
GPT Short Talk
abeta
0
180
拡散モデルについて少しだけ
abeta
0
97
動的計画モデル
abeta
0
210
物体追跡
abeta
0
360
特徴量記述
abeta
0
230
Other Decks in Programming
See All in Programming
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
590
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
330
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
290
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
48
31k
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
130
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
330
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
120
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
120
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
400
VibeCodingからAgenticWorkflowへ
starfish719
0
1k
信頼性の目標を誰も求めてない
shubox
0
450
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
850
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
950
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
260
How to train your dragon (web standard)
notwaldorf
97
6.8k
GraphQLとの向き合い方2022年版
quramy
50
15k
A Tale of Four Properties
chriscoyier
163
24k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
430
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
590
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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を使って楽しようとしましたが、かなり改造が必要になって結局⼤変でした