Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Core ML でiOSアプリはどう変わるのか
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
620
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.5k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
480
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.4k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
980
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
780
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
880
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2.3k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
380
Other Decks in Technology
See All in Technology
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
9
4.9k
Railsのように考える: See through the Master
snoozer05
PRO
5
1.2k
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
3
570
Why Agent Cost Needs Observability
nttcom
0
110
AI coding 整合正規方法
philipz
0
430
CLIライブラリ開発を支える技術
htnabe
0
140
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
530
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
1
3.1k
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
120
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
2
470
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
130
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
230
Featured
See All Featured
Abbi's Birthday
coloredviolet
4
10k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
300
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
How GitHub (no longer) Works
holman
316
150k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
The SEO identity crisis: Don't let AI make you average
varn
0
560
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
510
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!