Jon Hogins
5 年前
当前提交
46510192
共有 13 个文件被更改,包括 195 次插入 和 54 次删除
-
36com.unity.perception/Tests/Runtime/GroundTruthTests/BoundingBox2DTests.cs
-
6com.unity.perception/Tests/Runtime/GroundTruthTests/Main Camera.prefab
-
4com.unity.perception/Tests/Runtime/GroundTruthTests/ObjectCountTests.cs
-
12com.unity.perception/Tests/Runtime/GroundTruthTests/SimulationManagerTests.cs
-
6com.unity.perception/Tests/Runtime/GroundTruthTests/SimulationManager_SensorSchedulingTests.cs
-
2com.unity.perception/Tests/Runtime/GroundTruthTests/SegmentationGroundTruthTests.cs
-
37com.unity.perception/Tests/Runtime/GroundTruthTests/GroundTruthTestBase.cs
-
112com.unity.perception/Tests/Runtime/GroundTruthTests/PerceptionCameraIntegrationTests.cs
-
3com.unity.perception/Tests/Runtime/GroundTruthTests/PerceptionCameraIntegrationTests.cs.meta
-
31com.unity.perception/Tests/Runtime/GroundTruthTests/PassTestBase.cs
-
0/com.unity.perception/Tests/Runtime/GroundTruthTests/GroundTruthTestBase.cs.meta
-
0/com.unity.perception/Tests/Runtime/GroundTruthTests/SegmentationGroundTruthTests.cs.meta
-
0/com.unity.perception/Tests/Runtime/GroundTruthTests/SegmentationGroundTruthTests.cs
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.IO; |
|||
using NUnit.Framework; |
|||
using Unity.Simulation; |
|||
using UnityEngine; |
|||
using UnityEngine.Perception; |
|||
using Object = UnityEngine.Object; |
|||
|
|||
namespace GroundTruthTests |
|||
{ |
|||
public class GroundTruthTestBase |
|||
{ |
|||
List<GameObject> objectsToDestroy = new List<GameObject>(); |
|||
[TearDown] |
|||
public void TearDown() |
|||
{ |
|||
foreach (var o in objectsToDestroy) |
|||
Object.DestroyImmediate(o); |
|||
|
|||
objectsToDestroy.Clear(); |
|||
|
|||
SimulationManager.ResetSimulation(); |
|||
Time.timeScale = 1; |
|||
if (Directory.Exists(SimulationManager.OutputDirectory)) |
|||
Directory.Delete(SimulationManager.OutputDirectory, true); |
|||
} |
|||
|
|||
public void AddTestObjectForCleanup(GameObject @object) => objectsToDestroy.Add(@object); |
|||
|
|||
public void DestroyTestObject(GameObject @object) |
|||
{ |
|||
Object.DestroyImmediate(@object); |
|||
objectsToDestroy.Remove(@object); |
|||
} |
|||
} |
|||
} |
|
|||
using System; |
|||
using System.Collections; |
|||
using System.Collections.Generic; |
|||
using System.IO; |
|||
using NUnit.Framework; |
|||
using Unity.Collections; |
|||
using UnityEngine; |
|||
using UnityEngine.Perception; |
|||
using UnityEngine.Perception.Sensors; |
|||
using UnityEngine.TestTools; |
|||
using Object = UnityEngine.Object; |
|||
|
|||
namespace GroundTruthTests |
|||
{ |
|||
#if HDRP_PRESENT
|
|||
[Ignore("Ignoring in HDRP because of a rendering issue in the first frame. See issue AISV-455.")] |
|||
#endif
|
|||
public class PerceptionCameraIntegrationTests : GroundTruthTestBase |
|||
{ |
|||
[UnityTest] |
|||
[UnityPlatform(RuntimePlatform.LinuxPlayer, RuntimePlatform.WindowsPlayer)] |
|||
public IEnumerator EnableBoundingBoxes_GeneratesCorrectDataset() |
|||
{ |
|||
//set resolution to ensure we don't have rounding in rendering leading to bounding boxes to change height/width
|
|||
Screen.SetResolution(400, 400, false); |
|||
//give the screen a chance to resize
|
|||
yield return null; |
|||
|
|||
var jsonExpected = $@" {{
|
|||
""label_id"": 0, |
|||
""label_name"": ""label"", |
|||
""instance_id"": 1, |
|||
""x"": 0.0, |
|||
""y"": {Screen.height / 4:F1}, |
|||
""width"": {Screen.width:F1}, |
|||
""height"": {Screen.height / 2:F1} |
|||
}}";
|
|||
var labelingConfiguration = CreateLabelingConfiguration(); |
|||
var camera = SetupCamera(labelingConfiguration, pc => |
|||
{ |
|||
pc.produceBoundingBoxAnnotations = true; |
|||
}); |
|||
|
|||
var plane = TestHelper.CreateLabeledPlane(); |
|||
AddTestObjectForCleanup(plane); |
|||
//a plane is 10x10 by default, so scale it down to be 10x1 to cover the center half of the image
|
|||
plane.transform.localScale = new Vector3(10f, -1f, .1f); |
|||
yield return null; |
|||
SimulationManager.ResetSimulation(); |
|||
|
|||
var capturesPath = Path.Combine(SimulationManager.OutputDirectory, "captures_000.json"); |
|||
var capturesJson = File.ReadAllText(capturesPath); |
|||
StringAssert.Contains(jsonExpected, capturesJson); |
|||
} |
|||
|
|||
[UnityTest] |
|||
public IEnumerator EnableSemanticSegmentation_GeneratesCorrectDataset() |
|||
{ |
|||
var labelingConfiguration = CreateLabelingConfiguration(); |
|||
SetupCamera(labelingConfiguration, pc => pc.produceSegmentationImages = true); |
|||
|
|||
string expectedImageFilename = $"segmentation_{Time.frameCount}.png"; |
|||
|
|||
this.AddTestObjectForCleanup(TestHelper.CreateLabeledPlane()); |
|||
yield return null; |
|||
SimulationManager.ResetSimulation(); |
|||
|
|||
var capturesPath = Path.Combine(SimulationManager.OutputDirectory, "captures_000.json"); |
|||
var capturesJson = File.ReadAllText(capturesPath); |
|||
var imagePath = Path.Combine("SemanticSegmentation", expectedImageFilename).Replace(@"\", @"\\"); |
|||
StringAssert.Contains(imagePath, capturesJson); |
|||
} |
|||
|
|||
static LabelingConfiguration CreateLabelingConfiguration() |
|||
{ |
|||
var label = "label"; |
|||
var labelingConfiguration = ScriptableObject.CreateInstance<LabelingConfiguration>(); |
|||
|
|||
labelingConfiguration.LabelingConfigurations = new List<LabelingConfigurationEntry> |
|||
{ |
|||
new LabelingConfigurationEntry |
|||
{ |
|||
label = label, |
|||
value = 500 |
|||
} |
|||
}; |
|||
return labelingConfiguration; |
|||
} |
|||
|
|||
GameObject SetupCamera(LabelingConfiguration labelingConfiguration, Action<PerceptionCamera> initPerceptionCamera) |
|||
{ |
|||
var cameraObject = new GameObject(); |
|||
cameraObject.SetActive(false); |
|||
var camera = cameraObject.AddComponent<Camera>(); |
|||
camera.orthographic = true; |
|||
camera.orthographicSize = 1; |
|||
|
|||
var perceptionCamera = cameraObject.AddComponent<PerceptionCamera>(); |
|||
perceptionCamera.produceSegmentationImages = false; |
|||
perceptionCamera.produceVisiblePixelsMetric = false; |
|||
perceptionCamera.produceBoundingBoxAnnotations = false; |
|||
perceptionCamera.produceObjectCountAnnotations = false; |
|||
perceptionCamera.captureRgbImages = false; |
|||
perceptionCamera.LabelingConfiguration = labelingConfiguration; |
|||
initPerceptionCamera(perceptionCamera); |
|||
|
|||
cameraObject.SetActive(true); |
|||
AddTestObjectForCleanup(cameraObject); |
|||
return cameraObject; |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: f83408fe81fd4168a740139c98a38cfe |
|||
timeCreated: 1586791038 |
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using NUnit.Framework; |
|||
using UnityEngine; |
|||
using UnityEngine.Perception; |
|||
using Object = UnityEngine.Object; |
|||
|
|||
namespace GroundTruthTests |
|||
{ |
|||
public class PassTestBase |
|||
{ |
|||
List<GameObject> objectsToDestroy = new List<GameObject>(); |
|||
[TearDown] |
|||
public void TearDown() |
|||
{ |
|||
foreach (var o in objectsToDestroy) |
|||
Object.DestroyImmediate(o); |
|||
|
|||
objectsToDestroy.Clear(); |
|||
SimulationManager.ResetSimulation(); |
|||
} |
|||
|
|||
public void AddTestObjectForCleanup(GameObject @object) => objectsToDestroy.Add(@object); |
|||
|
|||
public void DestroyTestObject(GameObject @object) |
|||
{ |
|||
Object.DestroyImmediate(@object); |
|||
objectsToDestroy.Remove(@object); |
|||
} |
|||
} |
|||
} |
撰写
预览
正在加载...
取消
保存
Reference in new issue