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
Wantedly Peopleのスキャン画面の裏側 / Wantedly People Sca...
Search
Shinichi Goto
May 31, 2017
Technology
6.7k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Wantedly Peopleのスキャン画面の裏側 / Wantedly People Scanning Screen
2017/05/31 Wantedly技術見学会 iOS編
Shinichi Goto
May 31, 2017
More Decks by Shinichi Goto
See All by Shinichi Goto
WWDC18 ML Overview
_shingt
1
1.5k
Core ML 🏃 iOS Engineer
_shingt
1
680
Core ML / Vision Frameworkを使ってできること / What can we achieve using Core ML and Vision framework
_shingt
3
4.6k
Providing Better Feedback in Real-time Object Detection Apps
_shingt
2
1.7k
Value Types in WWDC16
_shingt
3
2.7k
debug-remote-local-notification-on-watchos
_shingt
0
11k
Server Side Swift question
_shingt
3
1.2k
Other Decks in Technology
See All in Technology
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
240
[RSJ26] AnoleVLA: Lightweight Vision-Language-Action Model with Deep State Space Models for Mobile Manipulation
keio_smilab
PRO
0
120
enechainの内製セルフサービスプラットフォーム
hiyosi
0
110
設計の世代交代を乗り越える、14年続くAndroidアプリの開発戦略
sansantech
PRO
1
130
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
390
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
150
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
150
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
3
1.4k
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
280
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
2
2.3k
When Does a Local Qwen Start to Break
morshoto
0
180
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
310
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
So, you think you're a good person
axbom
PRO
2
2.1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
The Curse of the Amulet
leimatthew05
2
14k
Designing Experiences People Love
moore
143
24k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
450
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
650
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
490
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
420
For a Future-Friendly Web
brad_frost
183
10k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
Wantedly Peopleͷ εΩϟϯը໘ͷཪଆ ɹ 2017/05/31 Wantedlyٕज़ݟֶձ iOSฤ shingt (Shinichi Goto)
@ Wantedly, Inc.
shingt (Shinichi Goto) GitHub: @shingt Twi5er: @_shingt
None
None
Outline • εΩϟϯը໘ͷॲཧͷྲྀΕ • ٕज़ཁૉ / ߏ • ෆ҆ఆͳݕग़݁Ռͷରॲ •
σόοά൛ͷ
εΩϟϯը໘ͷॲཧͷྲྀΕ
None
None
None
None
None
None
None
None
None
None
ٕज़ཁૉ / ߏ
• AVFounda*on • OpenCV • ίϯϐϡʔλϏδϣϯ༻ͷϥΠϒϥϦ • ໊ྖҬͷݕग़ɺͦͷଞը૾ॲཧʹར༻ • ಛผͳͷ͍ͬͯͳ͍
໊ݕग़ͷOpenCVҎ֎ͷબࢶ • CoreImage • Accerelate (BNNS) • Metal (CNN) •
TensorFlow
ݕग़ϩδοΫAndroidͱڞ௨Խ͍ͨ͠ ʢগͳ͘ͱॳظϦϦʔεͰʣ
=> Accerelate / Metal / CoreImage ݟૹΓ ʢલऀ2ͭiOS9Ͱར༻Ͱ͖ͳ͍ʣ
TensorFlow • ΞϓϦʹΈࠐΈɺผ్ֶशࡁͷϞσϧΛద༻ɺͱ͍͏ͱ͜Ζ ·Ͱࢼͨ͠ • ໊ݕग़෦ͷ࣮ࡍͷ׆༻ʹࢸΒͣ • ։ൃظؒɺσʔληοτɺਫ਼ͷ
༨ஊ: Google I/O '17 pod 'TensorFlow-experimental' ɹ • Android Meets
TensorFlow: How to Accelerate Your App with AI • "experimental" Ͱͳ͍ํ "Coming soon" ͱͳͬͯΔ • h?ps:/ /cocoapods.org/pods/TensorFlow
ߏ
ɹ • OpenCV • C++Ͱهड़͞ΕͨΠϯλʔϑΣΠεΛར༻ • => Swi/͔Βͷͷݺͼग़͠ෆՄ • ʢඞવతʹʣݕग़ؔ࿈ͷϩδοΫObjec3ve-C++ଆʹدͤΔ
None
// CardDetector.mm - (NSArray<CardFeature *> *)cardFeaturesInMat:(const cv::Mat &)mat { std::vector<dtct::Card>
cards = ... // Detect cards on C++ layer NSMutableArray<CardFeature *> *cardFeatures = [NSMutableArray array]; for (const auto& card : cards) { if (!card.is_namecard) continue; CardFeature *cardFeature = [[CardFeature alloc] initWithDTCTCard:card]; [cardFeatures addObject:cardFeature]; } return cardFeatures; }
CardDetector • C++ͷϨΠϠͷProxyʹ͍ۙҐஔ • ࣮ࡍʹ͋Δఔը૾ॲཧϩδοΫؚΉ • ࠲ඪิਖ਼ɺಁࢹมɺetc. • σόΠεଆͰಈ͔ͯ͠ΈͯॳΊͯݟ͔ͭΔɺͱ͍͏͋ͬ ͨͨΊ
C++ͷϨΠϠ • Γग़ͯ͠։ൃ & ୯ಠͰϏϧυ • ΞϓϦશମΛϏϧυ͢Δͷʹൺͯѹతʹ͍ͨΊ • ݕग़෦ͷϩδοΫΛվળ͍͢͠ʢͬͱجຊతͳ෦ PythonͰ࣮ݧʣ
• దٓiOSϓϩδΣΫτऔΓࠐΈ
ෆ҆ఆͳݕग़݁Ռͷରॲ
໊ྖҬͷݕग़
AVCaptureStillImageOutput ʢ੩ࢭը༻ʣ OR AVCaptureVideoDataOutputʢಈը༻ʣ
໊εΩϟϯʹγϟολʔԻ໐Βͨ͘͠ͳ͍ => AVCaptureVideoDataOutput
: iPhone༳ΕΔ
=> ϒϨΔ
None
ղܾࡦ: γʔέϯεͱͯ͠ѻ͏
None
None
None
None
ݕग़݁Ռͷථ • ϑϨʔϜͷ໌ʢͲΕ͚ͩϒϨ͍ͯͳ͍͔ʣ • ϥϓϥγΞϯϑΟϧλΛ͔͚ͨ݁ՌͷࢄʢͰ͋ΔఔݟΕ Δʣ • ݕग़໊ຕ • ͲΕ͚ͩۙͷϑϨʔϜ͔
ࢀߟ: ໌ͷԋࢉ @implementation UIImage (CVExtension) - (double)sharpness { cv::Mat mat,
gray, laplacian; UIImageToMat(self, mat); cv::cvtColor(mat, gray, CV_BGR2GRAY); cv::Laplacian(gray, laplacian, CV_64F); cv::Scalar mean, stddev; cv::meanStdDev(laplacian, mean, stddev, cv::Mat()); return stddev.val[0] * stddev.val[0]; } @end
None
None
τϥοΩϯά࣌
None
None
None
ɹ • ݁ߏ҆ͳղܾࡦͰ͋Δ • ͱ͍͑ܶతʹମݧ্ !
σόοά൛ͷ
ϦΞϧλΠϜͳը૾ॲཧΞϓϦͷ։ൃͰࠔΔ͜ͱ • ൃੜ࣌ɺݱঢ়Ѳʹ͕͔͔࣌ؒΓ͍͢ • ϓϩηεͷͲͷ෦͕ѱ͍ͷ͔ • ઢݕग़ʁ࠲ඪมʁ໌ͷԋࢉʁ
Debug, QAͰ • ԋࢉঢ়گɺϦιʔεঢ়گΛදࣔ • ໌, γʔέϯεॲཧ, CPU, etc. •
ը૾ॲཧͷաఔΛදࣔ
None
None
None
ɹ • ࢹ֮తʹ͔Γ͍ͨ͢ΊΛݟ͚͍ͭ͢ • ͍͚ͦ͏ײ͕CEOʹΘΔ
·ͱΊ • εΩϟϯը໘ͷॲཧͷྲྀΕ / ٕज़ཁૉ / ߏ Λհ • ෆ҆ఆͳݕग़݁Ռͷରॲ
=> γʔέϯεຖʹॲཧ • "ΊͪΌͪ͘ΌεϚʔτʂ" ͳ͜ͱͯ͠ͳ͍ʢݱঢ়ʣ • Debug/QA൛ͰॲཧաఔɺϦιʔεঢ়گΛग़͓ͯ͘͠ • ΓޙBlogͰެ։ʢ͢Δ͔ʣ
Thanks!