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
Vuzix Developer Conference 20171201
Search
ARIYAMA Keiji
December 01, 2017
Technology
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vuzix Developer Conference 20171201
2017年12月1日に開催されたVuzix Developer Conferenceでの発表資料です。
「M300で アプリ開発」
ARIYAMA Keiji
December 01, 2017
More Decks by ARIYAMA Keiji
See All by ARIYAMA Keiji
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
140
Build with AI
keiji
0
290
DroidKaigi 2023
keiji
0
2.1k
TechFeed Conference 2022
keiji
0
350
Android Bazaar and Conference Diverse 2021 Winter
keiji
0
930
ci-cd-conference-2021
keiji
1
1.3k
Android Bazaar and Conference 2021 Spring
keiji
3
970
TFUG KANSAI 20190928
keiji
0
180
Softpia Japan Seminar 20190724
keiji
1
220
Other Decks in Technology
See All in Technology
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
120
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
2
320
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
530
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
630
企業の現実世界をグラフで写し取る
sansantech
PRO
0
250
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
670
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
390
[2026 Oracle Technical Deep Dive] AI時代のアプリケーションを支えるCloud NativeとJava EEモダナイゼーション (2026年9月17日開催)
oracle4engineer
PRO
0
100
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
170
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
170
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
18
14k
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
180
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.2k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
520
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
C-LIS CO., LTD.
C-LIS CO., LTD. ༗ࢁܓೋʢ,FJKJ"3*:"."ʣ $-*4$0 -5% "OESPJEΞϓϦ։ൃνϣοτσΩϧ Photo by
Koji MORIGUCHI (MORIGCHOWDER)
76;*9%FWFMPQFS$POGFSFODF .ͰɹɹɹɹΞϓϦ։ൃ
.
6*ʢग़ྗʣ nHD - 640x360 (16:9)
6*ʢೖྗʣ Χϝϥ
6*ʢೖྗʣ KEYCODE_DPAD_LEFT KEYCODE_DPAD_RIGHT KEYCODE_ENTER
6*ʢೖྗʣʔϘλϯΛԡ͠ ϗʔϜϘλϯ KEYCODE_BACK KEYCODE_MENU
6*ʢೖྗʣ λονύου
.ΞϓϦ։ൃߟྀ͖͢ 3VOUJNF1FSNJTTJPO Χϝϥͷ্Լ λονύωϧʹґଘ͠ͳ͍ը໘ઃܭ
"OESPJE.BSTINBMMPX
3VOUJNF1FSNJTTJPO
Χϝϥͷ্Լ
CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE); CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId); mSensorOrientation
= characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION); // Orientation int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); int orientation = (ORIENTATIONS.get(rotation) + mSensorOrientation + 270) % 360; captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, orientation); ݱࡏͷը໘ํɾΧϝϥͷํΛߟྀ https://github.com/googlesamples/android-Camera2Basic
λονύωϧʹґଘ͠ͳ͍ը໘ઃܭ
ࣄྫ̍ ϑΥʔΧεͷҠಈ
ϑΥʔΧεͷॱ൪͕ײతͰͳ͍
<LinearLayout> <LinearLayout> <Button android:id="@+id/button1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Button 1" />
<Button android:id="@+id/button2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Button 2" /> </LinearLayout> ϑΥʔΧεҠಈ <LinearLayout> <Button android:id="@+id/button3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Button 3" /> <Button android:id="@+id/button4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Button 4" /> </LinearLayout> </LinearLayout>
<LinearLayout> <LinearLayout> <Button android:id="@+id/button1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Button 1" android:nextFocusRight="@+id/button4"
android:nextFocusLeft="@+id/button2" /> <Button android:id="@+id/button2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Button 2" android:nextFocusRight="@+id/button1" android:nextFocusLeft="@+id/button3" /> </LinearLayout> OFYU'PDVT-FGU3JHIU <LinearLayout> <Button android:id="@+id/button3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Button 3" android:nextFocusRight="@+id/button2" android:nextFocusLeft="@+id/button4" /> <Button android:id="@+id/button4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Button 4" android:nextFocusRight="@+id/button3" android:nextFocusLeft="@+id/button1" /> </LinearLayout> </LinearLayout>
ϑΥʔΧεҠಈઃఆޙ
ࣄྫ̎ λον͕͑ͳ͍߹ͷ6*
ΞΫγϣϯόʔͷεΠονʹΞΫηεͰ͖ͳ͍ https://github.com/DeviceConnect/DeviceConnect-Android
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/activity_service_manager_power" app:actionViewClass="android.widget.Switch" app:showAsAction="always"
android:title="@string/app_name"/> <item android:id="@+id/activity_service_menu_item_settings" app:showAsAction="never" android:title="@string/activity_service_menu_settings"/> <item android:id="@+id/activity_service_menu_item_help" app:showAsAction="never" android:title="@string/activity_service_menu_help"/> </menu> SFTNFOVBDUJWJUZ@TFSWJDF@MJTUYNM
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/activity_service_menu_item_settings" app:showAsAction="never" android:title="@string/activity_service_menu_settings"
/> <item android:id="@+id/activity_service_menu_item_help" app:showAsAction="never" android:title="@string/activity_service_menu_help" /> </menu> SFTNFOVOPUPVDIBDUJWJUZ@TFSWJDF@MJTUYNM
<LinearLayout android:id="@+id/activity_service_list_buttons_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"> <Switch android:id="@+id/activity_service_list_manager_switch" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="8dp"
android:layout_weight="1" android:text="@string/app_name" /> <Button android:id="@+id/activity_service_list_search_button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="8dp" android:layout_weight="1" android:text="@string/activity_service_list_search" /> </LinearLayout> SFTMBZPVUOPUPVDIBDUJWJUZ@TFSWJDF@MJTUYNM
λονύωϧ͕͑ͳ͍6*ʹରԠ
76;*9%FWFMPQFS$POGFSFODF .ͰɹɹɹɹΞϓϦ։ൃ
76;*9%FWFMPQFS$POGFSFODF .ͰػցֶशΞϓϦ։ൃ
5FOTPS'MPXͱ ݄ɺถ(PPHMF͕ࣾΦʔϓϯιʔεԽͨ͠ ػցೳ͚ͷܭࢉϑϨʔϜϫʔΫ
5FOTPS'MPXͷಛ ࣄલʹܭࢉάϥϑΛߏஙɺ࣮ߦ͢ΔύϥμΠϜ େنͳฒྻɾࢄܭࢉʹରԠ 1$ʢαʔόʔʣʹՃ͑ͯɺ ϞόΠϧɺϘʔυίϯϐϡʔλʔͳͲ ෳͷϓϥοτϑΥʔϜ্Ͱಈ࡞ʢ˞ʣ ※ ݱࡏinferenceʢਪʣݶఆ
"OESPJEʹରԠ ͷηϯαʔใΛͬͯδΣενϟʔΛ ผ͢Δ"OESPJEΞϓϦͷ࡞ 5FOTPS'MPXͷֶशࡁΈϞσϧΛ"OESPJE ΞϓϦ͔ΒಡΈࠐΜͰར༻͢Δ
࡞Δͷ .Λணͯ͠टΛৼΔδΣενϟͰɺ :&4ɾ/0 Λఆ͢Δ
Ϟσϧ conv 1x5 64 max_pool 1x3 fully connected 192
ʢdropout 0.5ʣ output 2 size = 256
ֶश݅ ܇࿅σʔλ:FT /P ֶशΞϧΰϦζϜ"EBN ֶश όοναΠζ ֶशεςοϓ
ग़ྗϞσϧͷߏ model.pb input_accel input_gyro softmax_logits
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude
group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' compile 'org.tensorflow:tensorflow-android:1.4.0' } CVJMEHSBEMF
ֶशࡁΈϞσϧͷஔ
private static final String MODEL_FILEPATH = "model.pb"; private final TensorFlowInferenceInterface
mTfInference; GestureDetector(AssetManager am) { mTfInference = new TensorFlowInferenceInterface(am, MODEL_FILEPATH); } ϞσϧͷಡΈࠐΈ
GestureType recognizeGesture(float[] accelData, float[] gyroData) { mTfInference.feed("input_accel", accelData, accelData.length);
mTfInference.feed("input_gyro", gyroData, gyroData.length); mTfInference.run(new String[]{"softmax_logits"}); mTfInference.fetch("softmax_logits", mRecognizeGestureResult); for (int index = 0; index < mRecognizeGestureResult.length; index++) { (FTUVSF%FUFDUPSͷ࣮ʢGFFEʣ
GestureType recognizeGesture(float[] accelData, float[] gyroData) { mTfInference.feed("input_accel", accelData, accelData.length);
mTfInference.feed("input_gyro", gyroData, gyroData.length); mTfInference.run(new String[]{"softmax_logits"}); mTfInference.fetch("softmax_logits", mRecognizeGestureResult); for (int index = 0; index < mRecognizeGestureResult.length; index++) { (FTUVSF%FUFDUPSͷ࣮ʢSVOʣ
GestureType recognizeGesture(float[] accelData, float[] gyroData) { mTfInference.feed("input_accel", accelData, accelData.length);
mTfInference.feed("input_gyro", gyroData, gyroData.length); mTfInference.run(new String[]{"softmax_logits"}); mTfInference.fetch("softmax_logits", mRecognizeGestureResult); for (int index = 0; index < mRecognizeGestureResult.length; index++) { (FTUVSF%FUFDUPSͷ࣮ʢGFUDIʣ
σϞ
C-LIS CO., LTD. ຊࢿྉɺ༗ݶձࣾγʔϦεͷஶ࡞Ͱ͢ɻຊࢿྉͷશ෦ɺ·ͨҰ෦ʹ͍ͭͯɺஶ࡞ऀ͔ΒจॻʹΑΔڐΛಘͣʹෳ͢Δ͜ͱې͡ΒΕ͍ͯ·͢ɻ 5IF"OESPJE4UVEJPJDPOJTSFQSPEVDFEPSNPEJpFEGSPNXPSLDSFBUFEBOETIBSFECZ(PPHMFBOEVTFEBDDPSEJOHUPUFSNTEFTDSJCFEJOUIF$SFBUJWF$PNNPOT"UUSJCVUJPO-JDFOTF ໊֤ɾϒϥϯυ໊ɺձ໊ࣾͳͲɺҰൠʹ֤ࣾͷඪ·ͨొඪͰ͢ɻຊࢿྉதͰɺɺɺäΛׂѪ͍ͯ͠·͢ɻ 5IF"OESPJESPCPUJTSFQSPEVDFEPSNPEJpFEGSPNXPSLDSFBUFEBOETIBSFECZ(PPHMFBOEVTFEBDDPSEJOHUPUFSNTEFTDSJCFEJOUIF$SFBUJWF$PNNPOT"UUSJCVUJPO-JDFOTF