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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shinichi Goto
May 31, 2017
Technology
6.6k
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
670
Core ML / Vision Frameworkを使ってできること / What can we achieve using Core ML and Vision framework
_shingt
3
4.5k
Providing Better Feedback in Real-time Object Detection Apps
_shingt
2
1.7k
Value Types in WWDC16
_shingt
3
2.6k
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
CVE-2026-20833_脆弱性対応とAES 化について
jukishiya
0
350
Why is RC4 still being used?
tamaiyutaro
0
280
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
1
460
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
170
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
570
RAGの精度向上とエージェント活用
kintotechdev
2
120
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
130
AI・ロボティクスと自動化社会 / AI, Robotics, and the Automated Society
ks91
PRO
0
150
小さいから、全部わかる。— 常駐AI "xangi" のすすめ
sugupoko
0
240
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
340
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
220
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
340
GraphQLとの向き合い方2022年版
quramy
50
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Leo the Paperboy
mayatellez
7
1.9k
エンジニアに許された特別な時間の終わり
watany
107
250k
Discover your Explorer Soul
emna__ayadi
2
1.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
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!