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
ディープとアルゴがタッグを組む、キャディ図面解析のテクノロジーに迫る
Search
[email protected]
March 10, 2022
Technology
1
5.3k
ディープとアルゴがタッグを組む、キャディ図面解析のテクノロジーに迫る
2022/3/10に開催したイベントの登壇資料です。
イベントページはこちら
https://caddi.connpass.com/event/239652/
[email protected]
March 10, 2022
Tweet
Share
More Decks by
[email protected]
See All by
[email protected]
【CADDI VIETNAM】Company Deck for Engineers
caddi_eng
0
250
CADDi Company Deck_Global.pdf
caddi_eng
0
200
[ English ] Company Overview for Engineers
caddi_eng
0
2.3k
エンジニア向け会社紹介資料
caddi_eng
16
370k
CADDi 会社紹介・採用説明資料
caddi_eng
11
910k
機械学習チームのモノレポ移行
caddi_eng
0
560
BtoB SaaS を支える 認証認可基盤の設計
caddi_eng
0
1.2k
2023.01_CADDi Thailand Company Overview
caddi_eng
0
15k
20220826_Company Briefing Online Event
caddi_eng
0
560
Other Decks in Technology
See All in Technology
Developers Summit 2025 浅野卓也(13-B-7 LegalOn Technologies)
legalontechnologies
PRO
1
1.4k
プロダクトエンジニア構想を立ち上げ、プロダクト志向な組織への成長を続けている話 / grow into a product-oriented organization
hiro_torii
1
300
The Future of SEO: The Impact of AI on Search
badams
0
240
Goで作って学ぶWebSocket
ryuichi1208
3
2.3k
N=1から解き明かすAWS ソリューションアーキテクトの魅力
kiiwami
0
140
システム・ML活用を広げるdbtのデータモデリング / Expanding System & ML Use with dbt Modeling
i125
1
280
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
210
php-conference-nagoya-2025
fuwasegu
0
110
「正しく」失敗できる チームの作り方 〜リアルな事例から紐解く失敗を恐れない組織とは〜 / A team that can fail correctly
i35_267
1
560
速くて安いWebサイトを作る
nishiharatsubasa
14
15k
Share my, our lessons from the road to re:Invent
naospon
0
110
エンジニアリング価値を黒字化する バリューベース戦略を用いた 技術戦略策定の道のり
kzkmaeda
2
190
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
980
RailsConf 2023
tenderlove
29
1k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
A better future with KSS
kneath
238
17k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Building an army of robots
kneath
303
45k
A Tale of Four Properties
chriscoyier
158
23k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Transcript
1
A B O U T Today's Speaker
3 Algorithm Engineer Shunsuke Nakamura 学生時代は主に単一画像超解像や画像の印象解析を研究。 2019年にDeNAに入社。画像生成・超解像の研究開発を行い、 その後ドライブレコーダーでの車内映像解析や学習モデルの 組み込みチームに所属し、Rustを触り始める。日本の大きな 力のポテンシャル解放に奔走するCADDiに惹かれ、2021年6月
にジョイン。現在は図面解析の開発に携わる。 Algorithm Engineer Yuichiro Terada 大学卒業後、機械系の設計用3D CADを作成する会社に入社 し、その後C#を使った開発を行うために子会社へ異動。志半 ばで開発を終えることになってしまったプロダクトの土台を もとに新たな開発を行うため上司に誘われ新会社へ転職。 ソフトとオペレーションの双方が強い環境でビジネスを構築 したいという思いから2019年10月にキャディへジョイン。図 面系の研究開発チームをリード。
Question 1 4 • AI Labの設立背景と、現在お二人が取り組んでいるこ とは何ですか?
やりたいこと • 図面を自動で読み取りたい • データを活用したい
図面を自動で読み取りたい • 図面は画像 ◦ PDFで届く ◦ 紙に印刷してからスキャンされた画像も多い • 図面枚数が多いと大変 ◦
1案件に1000枚の図面とか ◦ 加工の似た図面で分類して加工会社に発注 ◦ 仕様の不明点を顧客とすり合わせ ◦ 図面の差し替え • 検索したい ◦ 図番、材質、品名、加工指示、 etc ◦ 類似図面検索 • 分類したい ◦ 似た図面でグルーピング
データを活用したい • 受発注の過程で大量のデータが生まれる ◦ 図面 ◦ 受注元・受注額、発注先・発注額 ◦ 他にも例えば、リードタイム、不良率、辞退率、 etc
• データは宝 ◦ データを元に〇〇を提案 ◦ データを元に〇〇を推論 何かは分からないが「何かできそう」感はものすごくある
今日は図面の話
なぜ図面なのか なぜ3DCADではないのか。 • 現実として、図面で発注頂くことが圧倒的に多いから • 図面には公差や表面粗さといった情報が載るから YSK様ホームページより引用 https://www.shaft.co.jp/products/special/special.html https://kakou-consul.com/ より引用
3DCAD 必須 2D図面が必須
図面が「人が読む」前提 コンピュータで自動処理するように作られていない コンピュータで自動処理するように受発注取引がなされていない これが調達の効率化を妨げている 図面読み取りにブレークスルーがあれば、道がひとつ拓ける
なぜAI? • 図面はアルゴリズムか機械学習か悩ましい ◦ 極めて人工的な画像 → アルゴリズムでそこそこ読めそうな気がする ◦ 紙をスキャンするとノイズが乗る →
ヒューリスティックはつらくなりがち ◦ うまく使い分けられないか?( ← 今日のテーマ!) • 熟練した人のように図面を読みたい ◦ 熟練者は、パッと見で「機械加工」か「板金」か見分けられる ◦ 「パッと見の雰囲気による判別」は言語化できない ◦ 機械学習が向いているのではないか • 類似した図面を探したい ◦ 人はパッと見の印象で「似ている」「似ていない」が分かる ◦ これも機械学習向きに思える
取り組んでいること • Orama Unit ◦ 図面認識 ▪ テーブル情報(図番、材質、 etc)、寸法線、寸法値、記号、 etc
◦ 図面Diff ▪ 設計変更で差分が生じた箇所を強調表示 ◦ 類似図面検索(図面特徴量) ▪ AIによって駆逐されつつある …(もちろん良いこと) • AI Unit ◦ 図面認識 ▪ 矢印分類、ノイズ除去 ◦ 図面分類 ▪ 加工法・母材形状... ◦ 類似図面検索 ◦ 加工依頼先推薦
Question 2 13 • アルゴリズムと機械学習がどのように協業しながら、 Labが解こうとしている課題に取り組んでいるのでしょ うか?
What is Orama? Metadata: { “DrawingNumber”: “50-1”, “Material”: “A6063”, “PartName”:
“モーターベース”, … } Alltexts: [“尺度”, “備考”, “製 図”, “検図”, 出図”, “1:2”, “加 藤”, “小橋”, ...] Input (PNG) Outputs Orama
ベクター化
3つのフロー アルゴリズム 協業 アルゴリズム 出力 出力 出力 ベクター化 画像を直接 CNNへ
いろんな寸法線
寸法線の特徴は矢印にあり!? 寸法線 寸法補助線 矢印 特徴 • 寸法線と寸法補助線が直交している • 寸法線には矢印が付いている
ベクターデータで矢印認識は難しい ベクター化
CNNだけで解く図面特有の難しさ • 画像サイズが非常に大きい(数千 px〜) ◦ 学習だけでなく、推論にも大きなコストがかかる • 記号がシンプルかつ小さい ◦ 図面記号はシンプル。異なる意味の記号が、形状としては非常に近いことも多い。
そのためCNNが誤認識しやすい ◦ 画像サイズは大きいのに、記号のような CNNで特徴として注目したい領域は非常に小さい 単純に図面をCNNに入力しても、タスクを解けない・運用に耐えられない!
ディープとアルゴがタッグ! アルゴリズムで矢印候補箇所を抽出 矢印かな? ディープで判定
Question 3 22 • 所属されているチームでの、仕事や開発の進め方の具 体な話を教えてください
AI Unit 組織 Tech AI Lab Orama Unit エンジニア4名 エンジニア4名
AI Labの詳しい話はこちら! https://caddi.tech/archives/3003
Scrum 等 • Daily 15分 (AI Unit + Orama Unit
共同) ◦ 進捗報告、困りごと共有 ◦ お楽しみ雑談タイム • Refinement 30分/週(Unit 別に分かれて) ◦ 中核メンバーで次のスプリントでやることを決める • Sprint Planning(Unit 別に分かれて) ◦ チケットをメンバーにアサイン ◦ 1 sprint = 1 week (現時点では) • Sprint Review(Biz 系メンバーも含めた組織で) ◦ 他チームにも説明可能な成果を発表 • Mob Programming(AI Unit + Orama Unit 共同) ◦ 例)「ゼロから始める Deep Learning」を Rust で実装 • 勉強会(AI Unit + Orama Unit 共同) ◦ 論文紹介、技術トピックのサーベイ、アルゴリズム紹介、 etc
Rust でアルゴリズムってどう? • 最高! • 速い ◦ 「可読性を犠牲にして速くなるように書く」をやらなくても速い ◦ rayon
で並列化も簡単 • mutable が使えて、かつ安全 ◦ mutability の扱いが厳格。予期せぬ副作用でバグることがない。 ◦ アルゴリズムは mutable を使うほうが自然なものも多い。 • Iterator + メソッドチェイン ◦ 素直に immutable に書ける処理は immutable に ◦ map, flat_map, filter_map, etc • 保守性、可読性を保ったアルゴリズム開発 ◦ ヒューリスティックはスパゲッティになりがちだが ◦ Rust の力をうまく使えば、保守性を維持しつつチームで開発できる
Rust × CNN • CNNの学習自体はPython+GCPで行う ◦ 既存の深層学習ライブラリ・コードを利用したい ◦ 開発者がPythonでの学習に慣れている ◦
OramaにはPython wrapperが存在するのでデータのやり取りも可能 • 推論時はRustで行う ◦ Pythonで学習したモデルを ONNXに変換してRustからロードして使用する ◦ メリット ▪ 最高! ▪ アルゴリズムのコードの中に 1フローとして組み込める ▪ ビルド時にモデルをバイナリの中に含めることでスタンドアロンなバイナリにできる ▪ rayonで簡単に並列化できる ◦ デメリット ▪ ONNX互換なモデル構造である必要がある ▪ 推論時に前処理含めて CPUで十分高速に動くモデル構造である必要がある
Communication, Documents Flow Stock Markdown でサクッと 書きたいとき 社内ドキュメントサーバ( MkDocs)
テスト • Regression Test ◦ 前バージョンの図面認識結果と比較 ◦ 差分が生じていたら failure •
性能評価 Test ◦ 正解データ(アノテーション)と比較 ◦ (項目名)Recall ◯%、Precision ◯% ◦ 中身がCNNに置き換わってもテストは同じ • anocci ◦ 図面用のアノテーションツール(自社開発)
Question 4 29 • お互い(ML / アルゴ)に、相手がやっている手法に対 して、ここがすごい・・!と思う点を教えてください
• AI Labが目指しているところと、今後どのような人と一緒 に仕事をしたいか教えてください Question 5 30
あんなこといいな、できたらいいな • 図面 ◦ 寸法公差、各種記号の認識 ◦ DXF • 受発注データ ◦
「どの顧客の」「どの部品が」「どの加工会社に」「幾らで発注された」という実績データ ◦ これらのデータと、図面から読み取ったデータが結びついたら、何ができる …? • 情物一致 ◦ 倉庫、拠点 • 検査 • 自動見積り • 加工会社選定 • 3DCAD • …