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
Core ML でiOSアプリはどう変わるのか
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Takaaki Tanaka
August 28, 2017
Technology
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Core ML でiOSアプリはどう変わるのか
第二回 合同勉強会 in 福岡での発表資料です
Takaaki Tanaka
August 28, 2017
More Decks by Takaaki Tanaka
See All by Takaaki Tanaka
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
560
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.5k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
460
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.3k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
950
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
750
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
860
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2.3k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
370
Other Decks in Technology
See All in Technology
仕様駆動開発、導入半年。「本当に速くなってるの?」にデータで答える / AICon2026_hirakawa
rakus_dev
0
300
20260720_クラウド女子会×PyLadiesTokyoコラボ Amazon Bedrock ハンズオン用資料
yuuka51
1
110
「休む」重要さ
smt7174
5
1.5k
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
510
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
0
260
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
470
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
3
400
キャリアLT会#3
beli68
2
220
Vポイント分析基盤におけるデータモデリング20年史
taromatsui_cccmkhd
4
690
『モデル + ハーネス』で読み解く AIエージェント入門
oracle4engineer
PRO
2
160
副作用のある Lambda でも Lambda Power Tuning は使えるのか / lambda-power-tuning-side-effects
koukihosaka
1
130
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
3
790
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
300
How to make the Groovebox
asonas
2
2.3k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Practical Orchestrator
shlominoach
191
11k
How to build a perfect <img>
jonoalderson
1
5.8k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Transcript
2017/08/26 Core ML Ͱ iOSΞϓϦ Ͳ͏มΘΔͷ͔ ୈೋճ ߹ಉษڧձ in Ԭ
About Me
• ాத ໌ (Takaaki Tanaka) • Ϋϥεϝιουגࣜձࣾ • @kongmingtrap •
Swift / Objective-C / Scala / JavaScript … • GyazSquare / GitHub
Introduction
WWDC17
None
Swift 4 ARKit Core ML HomeKit MusicKit Files Vision SiriKit
Xcode
Swift 4 ARKit Core ML HomeKit MusicKit Files Vision SiriKit
Xcode
Core ML IUUQTEFWFMPQFSBQQMFDPNNBDIJOFMFBSOJOH
Core ML Core MLɺSiriɺCameraɺQuickTypeͳͲɺApple શମͰ༻͞Ε͍ͯΔ৽͍͠جૅతͳϚγϯֶ शϑϨʔϜϫʔΫΛ׆༻͍ͯͩ͘͠͞ɻ Core ML ɺػցֶशϞσϧΛ؆୯ʹ౷߹ͯ͠ڻ͘΄Ͳߴ ͳύϑΥʔϚϯεΛ࣮ݱ͠ɺߦͷίʔυΛ༻͠
ͯΠϯςϦδΣϯτͳ৽ػೳΛඋ͑ͨΞϓϦΛߏ ஙͰ͖·͢ɻ
Core ML ͷొʹΑͬͯ • ઐࣝΛඞཁͱͨ͠ɺը૾ೖྗˠʮֶश Ϟσϧʯˠʮ݁Ռʯˠʮ݁Ռग़ྗʯΛհ ͢ΔͨΊɺiOSΞϓϦ୲ऀʹͱͬͯɺʮֶ शϞσϧʯΛཧղͤͣͱػցֶशͷԸܙ ΛಘΒΕΔΑ͏ʹͳͬͨɻ
Agenda • Core MLͱपลٕज़ • Core MLΛࢼ͢ • ࣗ࡞ͷֶशϞσϧΛΠϯϙʔτͯ͠ΈΔ
Caution!! • ػցֶशɾσΟʔϓϥʔχϯάʹ͍ͭͯ ৄղ͠·ͤΜ • ϞσϧͷੜϩδοΫʹؔͯ͠ͷઆ໌͠ ·ͤΜ
Core MLͱपลٕज़
Core ML
Core ML
Vision
IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZ XXED
Vision IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOWJTJPO
Face Detection and Recognition
Face Detection and Recognition
Face Detection and Recognition
Face Detection and Recognition
Face Detection and Recognition
Machine Learning Image Analysis
Barcode Detection
Barcode Detection
Image Alignment Analysis
Text Detection
Text Detection
Horizon Detection
Object Detection and Tracking
Object Detection and Tracking
Natural language processing
IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZ XXED
IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZ XXED
IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZ XXED
Core MLΛࢼ͢
ͳΔ͘ҙࣝͤͣʹͰ͖Δ͜ ͱΛΓ͍ͨ
IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPODPSFNM HFUUJOH@B@DPSF@NM@NPEFM
IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPODPSFNM JOUFHSBUJOH@B@DPSF@NM@NPEFM@JOUP@ZPVS@BQQ
IUUQTEFWFMPQFSBQQMFDPNNBDIJOFMFBSOJOH
Core ML
Import
None
VNCoreMLModel
VNCoreMLRequest guard let coreMLModel = try? VNCoreMLModel(for: Inceptionv3().model) else {
fatalError("faild create VMCoreMLModel") } guard let ciImage = CIImage(image: image) else { fatalError("faild convert CIImage") } let request = VNCoreMLRequest(model: coreMLModel) { request, error in guard let results = request.results as? [VNClassificationObservation] else { fatalError("Error faild results") } if let classification = results.first { self.identifierLabel.text = classification.identifier self.confidenceLabel.text = "\(classification.confidence)" } else { print("error") } } let handler = VNImageRequestHandler(ciImage: ciImage, options: [:]) guard (try? handler.perform([request])) != nil else { fatalError("faild handler.perform”) }
VNCoreMLRequest guard let coreMLModel = try? VNCoreMLModel(for: Inceptionv3().model) else {
fatalError("faild create VMCoreMLModel") } guard let ciImage = CIImage(image: image) else { fatalError("faild convert CIImage") } let request = VNCoreMLRequest(model: coreMLModel) { request, error in guard let results = request.results as? [VNClassificationObservation] else { fatalError("Error faild results") } if let classification = results.first { self.identifierLabel.text = classification.identifier self.confidenceLabel.text = "\(classification.confidence)" } else { print("error") } } let handler = VNImageRequestHandler(ciImage: ciImage, options: [:]) guard (try? handler.perform([request])) != nil else { fatalError("faild handler.perform”) } $PSF.-.PEFMΛࢦఆ
VNCoreMLRequest guard let coreMLModel = try? VNCoreMLModel(for: Inceptionv3().model) else {
fatalError("faild create VMCoreMLModel") } guard let ciImage = CIImage(image: image) else { fatalError("faild convert CIImage") } let request = VNCoreMLRequest(model: coreMLModel) { request, error in guard let results = request.results as? [VNClassificationObservation] else { fatalError("Error faild results") } if let classification = results.first { self.identifierLabel.text = classification.identifier self.confidenceLabel.text = "\(classification.confidence)" } else { print("error") } } let handler = VNImageRequestHandler(ciImage: ciImage, options: [:]) guard (try? handler.perform([request])) != nil else { fatalError("faild handler.perform”) } $**NBHFΛऔಘ
VNCoreMLRequest guard let coreMLModel = try? VNCoreMLModel(for: Inceptionv3().model) else {
fatalError("faild create VMCoreMLModel") } guard let ciImage = CIImage(image: image) else { fatalError("faild convert CIImage") } let request = VNCoreMLRequest(model: coreMLModel) { request, error in guard let results = request.results as? [VNClassificationObservation] else { fatalError("Error faild results") } if let classification = results.first { self.identifierLabel.text = classification.identifier self.confidenceLabel.text = "\(classification.confidence)" } else { print("error") } } let handler = VNImageRequestHandler(ciImage: ciImage, options: [:]) guard (try? handler.perform([request])) != nil else { fatalError("faild handler.perform”) } 7/$PSF.-3FRVFTUΛ࡞
VNCoreMLRequest guard let coreMLModel = try? VNCoreMLModel(for: Inceptionv3().model) else {
fatalError("faild create VMCoreMLModel") } guard let ciImage = CIImage(image: image) else { fatalError("faild convert CIImage") } let request = VNCoreMLRequest(model: coreMLModel) { request, error in guard let results = request.results as? [VNClassificationObservation] else { fatalError("Error faild results") } if let classification = results.first { self.identifierLabel.text = classification.identifier self.confidenceLabel.text = "\(classification.confidence)" } else { print("error") } } let handler = VNImageRequestHandler(ciImage: ciImage, options: [:]) guard (try? handler.perform([request])) != nil else { fatalError("faild handler.perform”) } ݁Ռ͕ϋϯυϥʔͰฦͬͯ͘ΔͨΊ ॲཧ͍ͨ͠༰Λهड़
VNCoreMLRequest guard let coreMLModel = try? VNCoreMLModel(for: Inceptionv3().model) else {
fatalError("faild create VMCoreMLModel") } guard let ciImage = CIImage(image: image) else { fatalError("faild convert CIImage") } let request = VNCoreMLRequest(model: coreMLModel) { request, error in guard let results = request.results as? [VNClassificationObservation] else { fatalError("Error faild results") } if let classification = results.first { self.identifierLabel.text = classification.identifier self.confidenceLabel.text = "\(classification.confidence)" } else { print("error") } } let handler = VNImageRequestHandler(ciImage: ciImage, options: [:]) guard (try? handler.perform([request])) != nil else { fatalError("faild handler.perform”) } ը૾ղੳϋϯυϥʔΛ࡞͠ QFSGPSN͢Δ
Demo
ࣗ࡞ͷֶशϞσϧΛ Πϯϙʔτͯ͠ΈΔ
motivation
IUUQTXXXTMJEFTIBSFOFUDIPNBEP YBNBSJONTBJDVTUPNWJTJPOTFSWJDF
Custom Vision Service͠Ύ͍͝…
Core ML modelͷ࡞
mlmodel Core ML Λར༻͢Δʹ͋ͨͬͯɺ۩ମతʹɺ Keras Caffe ͷΑ͏ͳػցֶशϑϨʔϜ ϫʔΫ͕ग़ྗͨ͠Ϟσϧ͔Β .mlmodel
ͱ͍͏ ϑΝΠϧΛ࡞͠ɺ͜ΕΛ Xcode ʹΠϯϙʔ τ͠·͢ɻ ҎԼͰɺ.mlmodel ϑΝΠϧͷ࡞ ํ๏Λݟ͍͖ͯ·͢ɻ
Converting Trained Models to Core ML IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPODPSFNM DPOWFSUJOH@USBJOFE@NPEFMT@UP@DPSF@NM
coremltools 0.5.1 IUUQTQZQJQZUIPOPSHQZQJDPSFNMUPPMT Keras Caffe ͷΑ͏ͳػցֶशϑϨʔϜ ϫʔΫ͕ग़ྗͨ͠Ϟσϧ͔Β .mlmodel ʹม
Ͱ͖ΔϓϩάϥϜΛఏڙɻʢΦʔϓϯιʔεʣ
coremltools 0.5.1 IUUQTQZQJQZUIPOPSHQZQJDPSFNMUPPMT
Keras IUUQTLFSBTJPKB
KerasͰֶशϞσϧΛੜ • ޭը૾ɺࣦഊը૾Λ४උ • ޭɾࣦഊը૾ͷਖ਼σʔλΛ४උ • EC2ʹػցֶश༻ͷAMI͕ఏڙ͞Ε͍ͯΔ ͷͰΠϯελϯεΛ֬อ
None
None
None
None
None
KerasͰֶशϞσϧΛੜ • ܇࿅ϓϩάϥϜͷ࡞ • ܇࿅Λ࣮ߦ • ܇࿅ͨ݁͠ՌͷֶशϞσϧΛcoremltoolsΛ ར༻ͯ͠mlmodelʹม͢Δ
܇࿅ϓϩάϥϜ • CIFAR10Λࢀߟʹ܇࿅ϓϩάϥϜΛ࡞͢ Δ IUUQTHJUIVCDPNGDIPMMFULFSBTCMPCNBTUFS FYBNQMFTDJGBS@DOOQZ
None
QZUIPOVEO@NBJOQZ ܇࿅Λ࣮ߦ
None
coremltoolsͰίϯόʔτ • coremeltoolsΛΠϯετʔϧ͢Δ QJQJOTUBMMDPSFNMUPPMT
coremltoolsͰίϯόʔτ • KerasͷֶशϞσϧΛCore MLͰར༻Ͱ͖Δ ܗࣜʹมߋ͢Δ • ม༻ͷϓϩάϥϜΛ࡞͢Δ
QZUIPODPOWFSUQZ มΛ࣮ߦ
coremltools
Recap • Vision frameworkͷڧྗͳαϙʔτͰը૾ղ ੳɺจࣈݕग़ָʹ࣮Մೳ • ֶशϞσϧͷ࡞ʹઐ͕ࣝඞཁ • ωοτϫʔΫΛհͣ͞ʹػցֶशϞσϧΛ ར༻͢Δ͜ͱ͕Ͱ͖Δ
• ओʹը૾ݕग़Ͱར༻͢Δ߹͕ଟͦ͏
ँࣙ • KerasͰ͡ΊΔDeepLearning • http://dev.classmethod.jp/machine-learning/introduction-keras- deeplearning/ • Keras + iOS11
CoreML + Vision Framework ʹΑΔɺΫϩإࣝ ผΞϓϦͷ։ൃ • http://qiita.com/kenmaz/items/d416b191f79f60e07752 • 20170818_Xamarinجຊ + MSͷAIαʔϏεʮCustom Vision Serviceʯʹ͍ͭͯ • https://www.slideshare.net/chomado/20170818xamarin-msaicustom- vision-service
એ
એ
Thank you!