Resolve WES-131-Feedback-REfactor
This commit is contained in:
committed by
Dries Van Schuylenbergh
parent
b955d2164c
commit
a808e73a29
@@ -141,6 +141,8 @@ namespace Mediapipe.Unity.Tutorial
|
||||
/// </summary>
|
||||
private Tensor inputTensor;
|
||||
|
||||
public List<Listener> listeners = new List<Listener>();
|
||||
|
||||
/// <summary>
|
||||
/// Google Mediapipe setup & run
|
||||
/// </summary>
|
||||
@@ -159,6 +161,7 @@ namespace Mediapipe.Unity.Tutorial
|
||||
|
||||
webcamTexture.Play();
|
||||
|
||||
|
||||
yield return new WaitUntil(() => webcamTexture.width > 16);
|
||||
|
||||
// Set webcam aspect ratio
|
||||
@@ -167,63 +170,63 @@ namespace Mediapipe.Unity.Tutorial
|
||||
float webcamAspect = (float)webcamTexture.width / (float)webcamTexture.height;
|
||||
screen.rectTransform.sizeDelta = new Vector2(screen.rectTransform.sizeDelta.y * webcamAspect, (screen.rectTransform.sizeDelta.y));
|
||||
screen.texture = webcamTexture;
|
||||
if(screen2 != null)
|
||||
if (screen2 != null)
|
||||
{
|
||||
screen2.rectTransform.sizeDelta = new Vector2(screen2.rectTransform.sizeDelta.y * webcamAspect, (screen2.rectTransform.sizeDelta.y));
|
||||
}
|
||||
|
||||
// TODO this method is kinda meh you should use
|
||||
inputTexture = new Texture2D(width, height, TextureFormat.RGBA32, false);
|
||||
pixelData = new Color32[width * height];
|
||||
|
||||
if (!resourceManagerIsInitialized)
|
||||
if (modelList.GetCurrentModel() != null)
|
||||
{
|
||||
resourceManager = new StreamingAssetsResourceManager();
|
||||
yield return resourceManager.PrepareAssetAsync("pose_detection.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("pose_landmark_full.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("face_landmark.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("hand_landmark_full.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("face_detection_short_range.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("hand_recrop.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("handedness.txt");
|
||||
resourceManagerIsInitialized = true;
|
||||
// TODO this method is kinda meh you should use
|
||||
inputTexture = new Texture2D(width, height, TextureFormat.RGBA32, false);
|
||||
pixelData = new Color32[width * height];
|
||||
|
||||
if (!resourceManagerIsInitialized)
|
||||
{
|
||||
resourceManager = new StreamingAssetsResourceManager();
|
||||
yield return resourceManager.PrepareAssetAsync("pose_detection.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("pose_landmark_full.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("face_landmark.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("hand_landmark_full.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("face_detection_short_range.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("hand_recrop.bytes");
|
||||
yield return resourceManager.PrepareAssetAsync("handedness.txt");
|
||||
resourceManagerIsInitialized = true;
|
||||
}
|
||||
|
||||
stopwatch = new Stopwatch();
|
||||
|
||||
// Setting up the graph
|
||||
graph = new CalculatorGraph(configAsset.text);
|
||||
|
||||
posestream = new OutputStream<NormalizedLandmarkListPacket, NormalizedLandmarkList>(graph, "pose_landmarks", "pose_landmarks_presence");
|
||||
leftstream = new OutputStream<NormalizedLandmarkListPacket, NormalizedLandmarkList>(graph, "left_hand_landmarks", "left_hand_landmarks_presence");
|
||||
rightstream = new OutputStream<NormalizedLandmarkListPacket, NormalizedLandmarkList>(graph, "right_hand_landmarks", "right_hand_landmarks_presence");
|
||||
|
||||
posestream.StartPolling().AssertOk();
|
||||
leftstream.StartPolling().AssertOk();
|
||||
rightstream.StartPolling().AssertOk();
|
||||
|
||||
graph.StartRun().AssertOk();
|
||||
stopwatch.Start();
|
||||
|
||||
|
||||
keypointManager = new KeypointManager(modelInfoFile);
|
||||
// check if model exists at path
|
||||
//var model = ModelLoader.Load(Resources.Load<NNModel>("Models/Fingerspelling/model_A-L"));
|
||||
worker = modelList.GetCurrentModel().CreateWorker();
|
||||
|
||||
StartCoroutine(SignRecognitionCoroutine());
|
||||
StartCoroutine(MediapipeCoroutine());
|
||||
}
|
||||
|
||||
stopwatch = new Stopwatch();
|
||||
|
||||
// Setting up the graph
|
||||
graph = new CalculatorGraph(configAsset.text);
|
||||
|
||||
posestream = new OutputStream<NormalizedLandmarkListPacket, NormalizedLandmarkList>(graph, "pose_landmarks", "pose_landmarks_presence");
|
||||
leftstream = new OutputStream<NormalizedLandmarkListPacket, NormalizedLandmarkList>(graph, "left_hand_landmarks", "left_hand_landmarks_presence");
|
||||
rightstream = new OutputStream<NormalizedLandmarkListPacket, NormalizedLandmarkList>(graph, "right_hand_landmarks", "right_hand_landmarks_presence");
|
||||
|
||||
posestream.StartPolling().AssertOk();
|
||||
leftstream.StartPolling().AssertOk();
|
||||
rightstream.StartPolling().AssertOk();
|
||||
|
||||
graph.StartRun().AssertOk();
|
||||
stopwatch.Start();
|
||||
|
||||
|
||||
keypointManager = new KeypointManager(modelInfoFile);
|
||||
|
||||
// check if model exists at path
|
||||
//var model = ModelLoader.Load(Resources.Load<NNModel>("Models/Fingerspelling/model_A-L"));
|
||||
worker = modelList.GetCurrentModel().CreateWorker();
|
||||
|
||||
StartCoroutine(SignRecognitionCoroutine());
|
||||
StartCoroutine(MediapipeCoroutine());
|
||||
}
|
||||
|
||||
public void ChangeModel(ModelIndex index)
|
||||
/// <summary>
|
||||
/// Called at the start of course/Minigame, will set the model before the start of SIgnPredictor is called.
|
||||
/// </summary>
|
||||
/// <param name="index">The index of the model to be used</param>
|
||||
public void SetModel(ModelIndex index)
|
||||
{
|
||||
this.modelList.SetCurrentModel(index);
|
||||
// If a worker already existed, we throw it out
|
||||
worker?.Dispose();
|
||||
|
||||
// Add a new worker for the new model
|
||||
worker = modelList.GetCurrentModel().CreateWorker();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -325,6 +328,10 @@ namespace Mediapipe.Unity.Tutorial
|
||||
learnableProbabilities.Add(((char)(i + 65)).ToString(), softmaxedOutput2[i]);
|
||||
}
|
||||
//Debug.Log($"prob = [{learnableProbabilities.Aggregate(" ", (t, kv) => $"{t}{kv.Key}:{kv.Value} ")}]");
|
||||
foreach(Listener listener in listeners)
|
||||
{
|
||||
yield return listener.ProcessIncomingCall();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user