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
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
660
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.6k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
500
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.4k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
990
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
800
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
890
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
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
6
5k
Running Kotlin + Quarkus with Lambda
nealle
1
3.8k
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
230
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.1k
会社説明資料
persolserverworks
0
9.8k
今さら理解するウェブフォントver.2026
takanorip
3
870
大型犬好きによるPugの紹介
yamanoku
1
160
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
570
パッチ更新でterraform initが落ちた日
grimoh
1
140
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
790
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
200
Featured
See All Featured
Paper Plane
katiecoart
PRO
5
54k
Mind Mapping
helmedeiros
1
400
Code Reviewing Like a Champion
maltzj
529
40k
The browser strikes back
jonoalderson
0
1.8k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
Statistics for Hackers
jakevdp
799
230k
Crafting Experiences
bethany
1
380
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
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!