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
610
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
970
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
770
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
870
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
Tab5をRubyで動くパソコンにする
kishima
1
250
Hub & Spoke 環境のネットワークルーティングを分解してみる
tsuyataku
1
530
grill-me(grilling):AI駆動開発を超助けてくれるSkill / grill me
mathbullet
0
110
データエンジニアリングワークショップ:Auto LoaderとSparkで学ぶデータパイプライン構築
databricksjapan
PRO
0
190
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
310
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
1
330
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
130
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.7k
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
130
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
150
KAEN Company Deck
kaen
PRO
0
320
ブラウザアプリの継続的パフォーマンスモニタリング (序) / Continuous Browser Application Performance Monitoring; Act 1
moznion
0
110
Featured
See All Featured
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
New Earth Scene 8
popppiees
3
2.5k
Site-Speed That Sticks
csswizardry
13
1.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
270
The Cult of Friendly URLs
andyhume
79
7k
So, you think you're a good person
axbom
PRO
2
2.1k
A Tale of Four Properties
chriscoyier
163
24k
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!