Skip to content

Commit 79973d6

Browse files
committed
Bump to NatML 1.1.15
1 parent 14c97ee commit 79973d6

20 files changed

+644
-459
lines changed

.gitignore

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,15 @@ Logs/
99
.gradle/
1010
.vs/
1111

12+
# Function
13+
ProjectSettings/Function.asset
14+
1215
# NatML
13-
Assets/NatML/
14-
Assets/NatML.meta
16+
ProjectSettings/NatML.asset
1517
ProjectSettings/NatMLHub.asset
1618

19+
# VideoKit
20+
ProjectSettings/VideoKit.asset
21+
1722
# Misc
1823
.DS_Store

Assembly-CSharp.csproj

Lines changed: 307 additions & 285 deletions
Large diffs are not rendered by default.

Assets/YuNetSample.cs

Lines changed: 16 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,45 @@
11
/*
22
* YuNet
3-
* Copyright (c) 2022 NatML Inc. All Rights Reserved.
3+
* Copyright (c) 2023 NatML Inc. All Rights Reserved.
44
*/
55

66
namespace NatML.Examples {
77

88
using System.Threading.Tasks;
99
using UnityEngine;
10-
using NatML.Devices;
11-
using NatML.Devices.Outputs;
12-
using NatML.Features;
1310
using NatML.Vision;
1411
using NatML.Visualizers;
12+
using VideoKit;
1513

16-
[MLModelDataEmbed("@natsuite/yunet")]
1714
public sealed class YuNetSample : MonoBehaviour {
1815

16+
[Header(@"Camera")]
17+
public VideoKitCameraManager cameraManager;
18+
1919
[Header(@"UI")]
2020
public YuNetVisualizer visualizer;
2121

22-
private CameraDevice cameraDevice;
23-
private TextureOutput cameraTextureOutput;
24-
25-
private MLModelData modelData;
26-
private MLModel model;
2722
private YuNetPredictor predictor;
2823

29-
async void Start () {
30-
// Request camera permissions
31-
var permissionStatus = await MediaDeviceQuery.RequestPermissions<CameraDevice>();
32-
if (permissionStatus != PermissionStatus.Authorized) {
33-
Debug.LogError(@"User did not grant camera permissions");
34-
return;
35-
}
36-
// Get a camera device
37-
var query = new MediaDeviceQuery(MediaDeviceCriteria.CameraDevice);
38-
cameraDevice = query.current as CameraDevice;
39-
// Start the camera preview
40-
cameraTextureOutput = new TextureOutput();
41-
cameraDevice.StartRunning(cameraTextureOutput);
42-
// Display the camera preview
43-
var cameraTexture = await cameraTextureOutput;
44-
visualizer.image = cameraTexture;
45-
// Create the CenterFace predictor
46-
modelData = await MLModelData.FromHub("@natsuite/yunet");
47-
model = modelData.Deserialize();
48-
predictor = new YuNetPredictor(model);
24+
private async void Start () {
25+
// Create predictor
26+
predictor = await YuNetPredictor.Create();
27+
// Listen for frames
28+
cameraManager.OnCameraFrame.AddListener(OnCameraFrame);
4929
}
5030

51-
void Update () {
52-
// Check that predictor has downloaded
53-
if (predictor == null)
54-
return;
55-
// Create image feature
56-
var imageFeature = new MLImageFeature(cameraTextureOutput.texture);
57-
(imageFeature.mean, imageFeature.std) = modelData.normalization;
58-
imageFeature.aspectMode = modelData.aspectMode;
31+
private void OnCameraFrame (CameraFrame frame) {
5932
// Predict faces
60-
var faces = predictor.Predict(imageFeature);
33+
var faces = predictor.Predict(frame);
6134
// Visualize
6235
visualizer.Render(faces);
6336
}
6437

6538
void OnDisable () {
66-
// Dispose the model
67-
model?.Dispose();
39+
// Stop listening for frames
40+
cameraManager.OnCameraFrame.RemoveListener(OnCameraFrame);
41+
// Dispose predictor
42+
predictor.Dispose();
6843
}
6944
}
7045
}

Assets/YuNetSample.unity

Lines changed: 87 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ RenderSettings:
3838
m_ReflectionIntensity: 1
3939
m_CustomReflection: {fileID: 0}
4040
m_Sun: {fileID: 0}
41-
m_IndirectSpecularColor: {r: 0.44657838, g: 0.49641234, b: 0.57481676, a: 1}
41+
m_IndirectSpecularColor: {r: 0.44407493, g: 0.49331808, b: 0.5724013, a: 1}
4242
m_UseRadianceAmbientProbe: 0
4343
--- !u!157 &3
4444
LightmapSettings:
@@ -104,7 +104,7 @@ NavMeshSettings:
104104
serializedVersion: 2
105105
m_ObjectHideFlags: 0
106106
m_BuildSettings:
107-
serializedVersion: 2
107+
serializedVersion: 3
108108
agentTypeID: 0
109109
agentRadius: 0.5
110110
agentHeight: 2
@@ -117,7 +117,7 @@ NavMeshSettings:
117117
cellSize: 0.16666667
118118
manualTileSize: 0
119119
tileSize: 256
120-
accuratePlacement: 0
120+
buildHeightMesh: 0
121121
maxJobWorkers: 0
122122
preserveTilesOutsideBounds: 0
123123
debug:
@@ -209,13 +209,13 @@ Transform:
209209
m_PrefabInstance: {fileID: 0}
210210
m_PrefabAsset: {fileID: 0}
211211
m_GameObject: {fileID: 332366266}
212+
serializedVersion: 2
212213
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
213214
m_LocalPosition: {x: 0, y: 3, z: 0}
214215
m_LocalScale: {x: 1, y: 1, z: 1}
215216
m_ConstrainProportionsScale: 0
216217
m_Children: []
217218
m_Father: {fileID: 0}
218-
m_RootOrder: 1
219219
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
220220
--- !u!1 &506235973
221221
GameObject:
@@ -226,6 +226,7 @@ GameObject:
226226
serializedVersion: 6
227227
m_Component:
228228
- component: {fileID: 506235975}
229+
- component: {fileID: 506235976}
229230
- component: {fileID: 506235974}
230231
m_Layer: 0
231232
m_Name: YuNetSample
@@ -246,6 +247,7 @@ MonoBehaviour:
246247
m_Script: {fileID: 11500000, guid: 7557b8f1eea8b40b9808f54d1ef4c489, type: 3}
247248
m_Name:
248249
m_EditorClassIdentifier:
250+
cameraManager: {fileID: 506235976}
249251
visualizer: {fileID: 1268012518}
250252
--- !u!4 &506235975
251253
Transform:
@@ -254,14 +256,36 @@ Transform:
254256
m_PrefabInstance: {fileID: 0}
255257
m_PrefabAsset: {fileID: 0}
256258
m_GameObject: {fileID: 506235973}
259+
serializedVersion: 2
257260
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
258261
m_LocalPosition: {x: 0, y: 0, z: 0}
259262
m_LocalScale: {x: 1, y: 1, z: 1}
260263
m_ConstrainProportionsScale: 0
261264
m_Children: []
262265
m_Father: {fileID: 0}
263-
m_RootOrder: 4
264266
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
267+
--- !u!114 &506235976
268+
MonoBehaviour:
269+
m_ObjectHideFlags: 0
270+
m_CorrespondingSourceObject: {fileID: 0}
271+
m_PrefabInstance: {fileID: 0}
272+
m_PrefabAsset: {fileID: 0}
273+
m_GameObject: {fileID: 506235973}
274+
m_Enabled: 1
275+
m_EditorHideFlags: 0
276+
m_Script: {fileID: 11500000, guid: 98622613d505143a9a06b4b11b0a82cf, type: 3}
277+
m_Name:
278+
m_EditorClassIdentifier:
279+
capabilities: 2
280+
playOnAwake: 1
281+
_facing: 0
282+
resolution: 3
283+
frameRate: 30
284+
focusMode: 0
285+
exposureMode: 0
286+
OnCameraFrame:
287+
m_PersistentCalls:
288+
m_Calls: []
265289
--- !u!1 &710204224
266290
GameObject:
267291
m_ObjectHideFlags: 0
@@ -293,7 +317,6 @@ RectTransform:
293317
m_ConstrainProportionsScale: 0
294318
m_Children: []
295319
m_Father: {fileID: 1319831354}
296-
m_RootOrder: 1
297320
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
298321
m_AnchorMin: {x: 0.5, y: 0.5}
299322
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -368,6 +391,7 @@ MonoBehaviour:
368391
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
369392
m_Name:
370393
m_EditorClassIdentifier:
394+
m_SendPointerHoverToParent: 1
371395
m_HorizontalAxis: Horizontal
372396
m_VerticalAxis: Vertical
373397
m_SubmitButton: Submit
@@ -397,13 +421,13 @@ Transform:
397421
m_PrefabInstance: {fileID: 0}
398422
m_PrefabAsset: {fileID: 0}
399423
m_GameObject: {fileID: 727484546}
424+
serializedVersion: 2
400425
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
401426
m_LocalPosition: {x: 0, y: 0, z: 0}
402427
m_LocalScale: {x: 1, y: 1, z: 1}
403428
m_ConstrainProportionsScale: 0
404429
m_Children: []
405430
m_Father: {fileID: 0}
406-
m_RootOrder: 3
407431
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
408432
--- !u!1 &923077374
409433
GameObject:
@@ -445,9 +469,17 @@ Camera:
445469
m_projectionMatrixMode: 1
446470
m_GateFitMode: 2
447471
m_FOVAxisMode: 0
472+
m_Iso: 200
473+
m_ShutterSpeed: 0.005
474+
m_Aperture: 16
475+
m_FocusDistance: 10
476+
m_FocalLength: 50
477+
m_BladeCount: 5
478+
m_Curvature: {x: 2, y: 11}
479+
m_BarrelClipping: 0.25
480+
m_Anamorphism: 0
448481
m_SensorSize: {x: 36, y: 24}
449482
m_LensShift: {x: 0, y: 0}
450-
m_FocalLength: 50
451483
m_NormalizedViewPortRect:
452484
serializedVersion: 2
453485
x: 0
@@ -481,13 +513,13 @@ Transform:
481513
m_PrefabInstance: {fileID: 0}
482514
m_PrefabAsset: {fileID: 0}
483515
m_GameObject: {fileID: 923077374}
516+
serializedVersion: 2
484517
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
485518
m_LocalPosition: {x: 0, y: 1, z: -10}
486519
m_LocalScale: {x: 1, y: 1, z: 1}
487520
m_ConstrainProportionsScale: 0
488521
m_Children: []
489522
m_Father: {fileID: 0}
490-
m_RootOrder: 0
491523
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
492524
--- !u!1 &1268012516
493525
GameObject:
@@ -501,6 +533,8 @@ GameObject:
501533
- component: {fileID: 1268012521}
502534
- component: {fileID: 1268012520}
503535
- component: {fileID: 1268012519}
536+
- component: {fileID: 1268012523}
537+
- component: {fileID: 1268012522}
504538
- component: {fileID: 1268012518}
505539
m_Layer: 5
506540
m_Name: Preview
@@ -522,7 +556,6 @@ RectTransform:
522556
m_ConstrainProportionsScale: 0
523557
m_Children: []
524558
m_Father: {fileID: 1319831354}
525-
m_RootOrder: 0
526559
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
527560
m_AnchorMin: {x: 0, y: 0}
528561
m_AnchorMax: {x: 0, y: 0}
@@ -591,6 +624,39 @@ CanvasRenderer:
591624
m_PrefabAsset: {fileID: 0}
592625
m_GameObject: {fileID: 1268012516}
593626
m_CullTransparentMesh: 0
627+
--- !u!114 &1268012522
628+
MonoBehaviour:
629+
m_ObjectHideFlags: 0
630+
m_CorrespondingSourceObject: {fileID: 0}
631+
m_PrefabInstance: {fileID: 0}
632+
m_PrefabAsset: {fileID: 0}
633+
m_GameObject: {fileID: 1268012516}
634+
m_Enabled: 1
635+
m_EditorHideFlags: 0
636+
m_Script: {fileID: 11500000, guid: 145a5a333d6e14379ae91956c0b3373e, type: 3}
637+
m_Name:
638+
m_EditorClassIdentifier:
639+
cameraManager: {fileID: 506235976}
640+
viewMode: 0
641+
focusMode: 0
642+
exposureMode: 0
643+
zoomMode: 0
644+
OnPresent:
645+
m_PersistentCalls:
646+
m_Calls: []
647+
--- !u!114 &1268012523
648+
MonoBehaviour:
649+
m_ObjectHideFlags: 0
650+
m_CorrespondingSourceObject: {fileID: 0}
651+
m_PrefabInstance: {fileID: 0}
652+
m_PrefabAsset: {fileID: 0}
653+
m_GameObject: {fileID: 1268012516}
654+
m_Enabled: 1
655+
m_EditorHideFlags: 0
656+
m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3}
657+
m_Name:
658+
m_EditorClassIdentifier:
659+
m_Delegates: []
594660
--- !u!1 &1319831350
595661
GameObject:
596662
m_ObjectHideFlags: 0
@@ -667,7 +733,9 @@ Canvas:
667733
m_OverrideSorting: 0
668734
m_OverridePixelPerfect: 0
669735
m_SortingBucketNormalizedSize: 0
736+
m_VertexColorAlwaysGammaSpace: 0
670737
m_AdditionalShaderChannelsFlag: 0
738+
m_UpdateRectTransformForStandalone: 0
671739
m_SortingLayerID: 0
672740
m_SortingOrder: 0
673741
m_TargetDisplay: 0
@@ -686,10 +754,18 @@ RectTransform:
686754
- {fileID: 1268012517}
687755
- {fileID: 710204225}
688756
m_Father: {fileID: 0}
689-
m_RootOrder: 2
690757
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
691758
m_AnchorMin: {x: 0, y: 0}
692759
m_AnchorMax: {x: 0, y: 0}
693760
m_AnchoredPosition: {x: 0, y: 0}
694761
m_SizeDelta: {x: 0, y: 0}
695762
m_Pivot: {x: 0, y: 0}
763+
--- !u!1660057539 &9223372036854775807
764+
SceneRoots:
765+
m_ObjectHideFlags: 0
766+
m_Roots:
767+
- {fileID: 923077377}
768+
- {fileID: 332366268}
769+
- {fileID: 1319831354}
770+
- {fileID: 727484549}
771+
- {fileID: 506235975}

0 commit comments

Comments
 (0)