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
360
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
450
GPTモデルでキャラクター設定する際の課題
abeta
0
390
GPTをLINEで使えるようにして布教した
abeta
0
220
初心者向けChatGPT入門
abeta
0
290
GPT Short Talk
abeta
0
170
拡散モデルについて少しだけ
abeta
0
96
動的計画モデル
abeta
0
210
物体追跡
abeta
0
360
特徴量記述
abeta
0
220
Other Decks in Programming
See All in Programming
Performance Engineering for Everyone
elenatanasoiu
0
270
AIエージェントで 変わるAndroid開発環境
takahirom
2
680
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
570
5分で問診!Composer セキュリティ健康診断
codmoninc
0
390
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
970
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
170
関数型プログラミングのメリットって何だろう?
wanko_it
0
180
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
210
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
320
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
800
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
850
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
For a Future-Friendly Web
brad_frost
183
10k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Designing for humans not robots
tammielis
254
26k
Into the Great Unknown - MozCon
thekraken
41
2.6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
620
Google's AI Overviews - The New Search
badams
0
1.1k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
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を使って楽しようとしましたが、かなり改造が必要になって結局⼤変でした