static GameObject SetupCamera(IdLabelConfig config, KeypointTemplate template, Action <int, List <KeypointLabeler.KeypointEntry> > computeListener, RenderTexture renderTexture = null) { var cameraObject = new GameObject(); cameraObject.SetActive(false); var camera = cameraObject.AddComponent <Camera>(); camera.orthographic = false; camera.fieldOfView = 60; camera.nearClipPlane = 0.3f; camera.farClipPlane = 1000; camera.transform.position = new Vector3(0, 0, -10); if (renderTexture) { camera.targetTexture = renderTexture; } var perceptionCamera = cameraObject.AddComponent <PerceptionCamera>(); perceptionCamera.captureRgbImages = false; var keyPointLabeler = new KeypointLabeler(config, template); if (computeListener != null) { keyPointLabeler.KeypointsComputed += computeListener; } perceptionCamera.AddLabeler(keyPointLabeler); return(cameraObject); }
static GameObject SetupCamera(IdLabelConfig config, Action <int, List <BoundingBox3DLabeler.BoxData> > computeListener) { var cameraObject = new GameObject(); cameraObject.SetActive(false); var camera = cameraObject.AddComponent <Camera>(); camera.orthographic = false; camera.fieldOfView = 60; camera.nearClipPlane = 0.3f; camera.farClipPlane = 1000; var perceptionCamera = cameraObject.AddComponent <PerceptionCamera>(); perceptionCamera.captureRgbImages = false; var bboxLabeler = new BoundingBox3DLabeler(config); if (computeListener != null) { bboxLabeler.BoundingBoxComputed += computeListener; } perceptionCamera.AddLabeler(bboxLabeler); return(cameraObject); }
public IEnumerator TryGet_ReturnsFalse_ForNonMatchingLabel_WithOtherMatches() { var label = "label"; //only way to guarantee registration order is to run frames. //We want to ensure labeledPlane is registered before labeledPlane2 so that the cache does not early out var labeledPlane = TestHelper.CreateLabeledPlane(label: "foo"); AddTestObjectForCleanup(labeledPlane); yield return(null); var labeledPlane2 = TestHelper.CreateLabeledPlane(label: label); AddTestObjectForCleanup(labeledPlane2); var config = new IdLabelConfig(); config.Init(new[] { new IdLabelEntry() { id = 1, label = label }, }); using (var cache = new LabelEntryMatchCache(config)) { //allow label to be registered yield return(null); Assert.IsFalse(cache.TryGetLabelEntryFromInstanceId(labeledPlane.GetComponent <Labeling>().instanceId, out var labelEntry, out var index)); Assert.AreEqual(-1, index); Assert.AreEqual(default(IdLabelEntry), labelEntry); } }
public IEnumerator TryGet_ReturnsTrue_ForMatchingLabel() { var label = "label"; var labeledPlane = TestHelper.CreateLabeledPlane(label: label); AddTestObjectForCleanup(labeledPlane); var config = new IdLabelConfig(); config.Init(new[] { new IdLabelEntry() { id = 1, label = label }, }); using (var cache = new LabelEntryMatchCache(config)) { //allow label to be registered yield return(null); Assert.IsTrue(cache.TryGetLabelEntryFromInstanceId(labeledPlane.GetComponent <Labeling>().instanceId, out var labelEntry, out var index)); Assert.AreEqual(0, index); Assert.AreEqual(config.labelEntries[0], labelEntry); } }
public void TryGet_ReturnsFalse_ForInvalidInstanceId() { var config = new IdLabelConfig(); using (var cache = new LabelEntryMatchCache(config)) { Assert.IsFalse(cache.TryGetLabelEntryFromInstanceId(100, out var labelEntry, out var index)); Assert.AreEqual(-1, index); Assert.AreEqual(default(IdLabelEntry), labelEntry); } }
protected override void OnAwake() { m_ForegroundObjectPlacementMetricDefinition = DatasetCapture.RegisterMetricDefinition("Per Frame Foreground Object Placement Info", $"Reports the world position, scale, rotation, and label id of objects carrying a {nameof(ForegroundObjectMetricReporterTag)} component.", new Guid(k_LayerOneForegroundObjectPlacementInfoMetricGuid)); m_LabelingComponentsCache = new Dictionary <GameObject, Labeling>(); if (labelConfigForObjectPlacementMetrics == null) { var perceptionCamera = Object.FindObjectOfType <PerceptionCamera>(); if (perceptionCamera && perceptionCamera.labelers.Count > 0 && perceptionCamera.labelers[0] is BoundingBox2DLabeler boundingBox2DLabeler) { labelConfigForObjectPlacementMetrics = boundingBox2DLabeler.idLabelConfig; } } }
public PlacementStatics(int maxFrames, int maxForegroundObjectsPerFrame, float scalingMin, float scalingSize, float occludingHueMaxOffset, float backgroundObjectInForegroundChance, GameObject[] foreground, GameObject[] backgroundPrefabs, Texture2D[] backgroundImages, NativeArray <Quaternion> inPlaneRot, NativeArray <Quaternion> outPlaneRot, NativeArray <float> scaleFactors, IdLabelConfig idLabelConfig) { MaxFrames = maxFrames; ForegroundPrefabs = foreground; BackgroundPrefabs = backgroundPrefabs; InPlaneRotations = inPlaneRot; OutOfPlaneRotations = outPlaneRot; ScaleFactors = scaleFactors; IdLabelConfig = idLabelConfig; ScalingMin = scalingMin; ScalingSize = scalingSize; OccludingHueMaxOffset = occludingHueMaxOffset; BackgroundObjectInForegroundChance = backgroundObjectInForegroundChance; MaxForegroundObjectsPerFrame = maxForegroundObjectsPerFrame; BackgroundImages = backgroundImages; }
public IEnumerator TryGet_ReturnsFalse_ForNonMatchingLabel() { var label = "label"; var labeledPlane = TestHelper.CreateLabeledPlane(label: label); AddTestObjectForCleanup(labeledPlane); var config = new IdLabelConfig(); using (var cache = new LabelEntryMatchCache(config)) { //allow label to be registered yield return(null); Assert.IsFalse(cache.TryGetLabelEntryFromInstanceId(labeledPlane.GetComponent <Labeling>().instanceId, out var labelEntry, out var index)); Assert.AreEqual(-1, index); Assert.AreEqual(default(IdLabelEntry), labelEntry); } }
private GameObject SetupCameraBoundingBox2D(Action <BoundingBox2DLabeler.BoundingBoxesCalculatedEventArgs> onBoundingBoxesCalculated, IdLabelConfig idLabelConfig) { var cameraObject = SetupCamera(camera => { camera.showVisualizations = false; var boundingBox2DLabeler = new BoundingBox2DLabeler(idLabelConfig); boundingBox2DLabeler.boundingBoxesCalculated += onBoundingBoxesCalculated; camera.AddLabeler(boundingBox2DLabeler); }); return(cameraObject); }