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
6.5k
Wantedly Peopleのスキャン画面の裏側 / Wantedly People Scanning Screen
2017/05/31 Wantedly技術見学会 iOS編
Shinichi Goto
May 31, 2017
Tweet
Share
More Decks by Shinichi Goto
See All by Shinichi Goto
WWDC18 ML Overview
_shingt
1
1.4k
Core ML 🏃 iOS Engineer
_shingt
1
620
Core ML / Vision Frameworkを使ってできること / What can we achieve using Core ML and Vision framework
_shingt
3
4.4k
Providing Better Feedback in Real-time Object Detection Apps
_shingt
2
1.6k
Value Types in WWDC16
_shingt
3
2.6k
debug-remote-local-notification-on-watchos
_shingt
0
11k
Server Side Swift question
_shingt
3
1.1k
Other Decks in Technology
See All in Technology
【Oracle Cloud ウェビナー】[Oracle AI Database + Azure] AI-Ready データ戦略の最短ルート:Azure AIでビジネス データの価値を最大化
oracle4engineer
PRO
2
120
Vivre en Bitcoin : le tutoriel que votre banquier ne veut pas que vous voyiez
rlifchitz
0
370
Regional_NAT_Gatewayについて_basicとの違い_試した内容スケールアウト_インについて_IPv6_dual_networkでの使い分けなど.pdf
cloudevcode
1
160
AWSと暗号技術
nrinetcom
PRO
1
180
AWS Devops Agent ~ 自動調査とSlack統合をやってみた! ~
kubomasataka
2
230
BPaaSオペレーション・kubell社内 n8n活用による効率化検証事例紹介
kubell_hr
0
280
ビジュアルプログラミングIoTLT vol.22
1ftseabass
PRO
0
140
なぜCREを8年間続けているのか / cre-camp-4-2026-01-21
missasan
0
1.3k
Data Intelligence on Lakehouse Paradigm
scotthsieh825
0
200
GCASアップデート(202510-202601)
techniczna
0
150
Hardware/Software Co-design: Motivations and reflections with respect to security
bcantrill
1
260
ReproでのicebergのStreaming Writeの検証と実運用にむけた取り組み
joker1007
0
490
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
3.5k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
310
WENDY [Excerpt]
tessaabrams
9
36k
Color Theory Basics | Prateek | Gurzu
gurzu
0
190
Typedesign – Prime Four
hannesfritz
42
2.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
43
Ruling the World: When Life Gets Gamed
codingconduct
0
130
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
43
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Designing for humans not robots
tammielis
254
26k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
100
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!