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
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
690
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
FOSS4Gを活用した自治体業務DXの試み
470715
0
160
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
200
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
120
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
180
初対面のメンバーがチームを組み、Claude Codeでゼロからサービスをリリース
mkdev10
1
130
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
1
720
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
5
4.5k
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.6k
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
170
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3k
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
680
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1k
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
450
Navigating Team Friction
lara
192
16k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
560
Visualization
eitanlees
153
17k
Documentation Writing (for coders)
carmenintech
77
5.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
For a Future-Friendly Web
brad_frost
184
10k
WCS-LA-2024
lcolladotor
0
890
Why Our Code Smells
bkeepers
PRO
340
58k
GitHub's CSS Performance
jonrohan
1033
470k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
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!