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
AIエージェントで 変わるAndroid開発環境
takahirom
2
680
共通化で考えるべきは、実装より公開する型だった
codeegg
0
250
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
170
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
110
5分で問診!Composer セキュリティ健康診断
codmoninc
0
420
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
120
yield再入門 #phpcon
o0h
PRO
0
610
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
120
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
2.8k
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.5k
霧の中の代数的エフェクト
funnyycat
1
410
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Marketing to machines
jonoalderson
1
5.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
730
Making Projects Easy
brettharned
120
6.7k
First, design no harm
axbom
PRO
2
1.2k
Making the Leap to Tech Lead
cromwellryan
135
10k
Color Theory Basics | Prateek | Gurzu
gurzu
0
390
sira's awesome portfolio website redesign presentation
elsirapls
0
300
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
310
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を使って楽しようとしましたが、かなり改造が必要になって結局⼤変でした