浏览代码

CameraSensor and CameraSensorComponent tests (#3513)

/asymm-envs
GitHub 5 年前
当前提交
734bad58
共有 5 个文件被更改,包括 116 次插入2 次删除
  1. 18
      com.unity.ml-agents/Runtime/Sensor/CameraSensor.cs
  2. 44
      com.unity.ml-agents/Tests/Editor/Sensor/CameraSensorComponentTest.cs
  3. 11
      com.unity.ml-agents/Tests/Editor/Sensor/CameraSensorComponentTest.cs.meta
  4. 34
      com.unity.ml-agents/Tests/Editor/Sensor/CameraSensorTest.cs
  5. 11
      com.unity.ml-agents/Tests/Editor/Sensor/CameraSensorTest.cs.meta

18
com.unity.ml-agents/Runtime/Sensor/CameraSensor.cs


var texture = ObservationToTexture(m_Camera, m_Width, m_Height);
// TODO support more types here, e.g. JPG
var compressed = texture.EncodeToPNG();
UnityEngine.Object.Destroy(texture);
DestroyTexture(texture);
return compressed;
}
}

{
var texture = ObservationToTexture(m_Camera, m_Width, m_Height);
var numWritten = Utilities.TextureToTensorProxy(texture, adapter, m_Grayscale);
UnityEngine.Object.Destroy(texture);
DestroyTexture(texture);
return numWritten;
}
}

internal static int[] GenerateShape(int width, int height, bool grayscale)
{
return new[] { height, width, grayscale ? 1 : 3 };
}
static void DestroyTexture(Texture2D texture)
{
if (Application.isEditor)
{
// Edit Mode tests complain if we use Destroy()
// TODO move to extension methods for UnityEngine.Object?
UnityEngine.Object.DestroyImmediate(texture);
}
else
{
UnityEngine.Object.Destroy(texture);
}
}
}
}

44
com.unity.ml-agents/Tests/Editor/Sensor/CameraSensorComponentTest.cs


using System;
using NUnit.Framework;
using UnityEngine;
using MLAgents.Sensors;
namespace MLAgents.Tests
{
[TestFixture]
public class CameraSensorComponentTest
{
[Test]
public void TestCameraSensorComponent()
{
foreach (var grayscale in new[] { true, false })
{
foreach (SensorCompressionType compression in Enum.GetValues(typeof(SensorCompressionType)))
{
var width = 24;
var height = 16;
var camera = Camera.main;
var agentGameObj = new GameObject("agent");
var cameraComponent = agentGameObj.AddComponent<CameraSensorComponent>();
cameraComponent.camera = camera;
cameraComponent.height = height;
cameraComponent.width = width;
cameraComponent.grayscale = grayscale;
cameraComponent.compression = compression;
var expectedShape = new[] { height, width, grayscale ? 1 : 3 };
Assert.AreEqual(expectedShape, cameraComponent.GetObservationShape());
Assert.IsTrue(cameraComponent.IsVisual());
Assert.IsFalse(cameraComponent.IsVector());
var sensor = cameraComponent.CreateSensor();
Assert.AreEqual(expectedShape, sensor.GetObservationShape());
Assert.AreEqual(typeof(CameraSensor), sensor.GetType());
}
}
}
}
}

11
com.unity.ml-agents/Tests/Editor/Sensor/CameraSensorComponentTest.cs.meta


fileFormatVersion: 2
guid: 4c0b188faef38407e82223854fc8eaf5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

34
com.unity.ml-agents/Tests/Editor/Sensor/CameraSensorTest.cs


using System;
using NUnit.Framework;
using UnityEngine;
using MLAgents.Sensors;
namespace MLAgents.Tests
{
[TestFixture]
public class CameraSensorTest
{
[Test]
public void TestCameraSensor()
{
foreach (var grayscale in new[] { true, false })
{
foreach (SensorCompressionType compression in Enum.GetValues(typeof(SensorCompressionType)))
{
var width = 24;
var height = 16;
var camera = Camera.main;
var sensor = new CameraSensor(camera, width, height, grayscale, "TestCameraSensor", compression);
var writeAdapter = new WriteAdapter();
var obs = sensor.GetObservationProto(writeAdapter);
Assert.AreEqual((int) compression, (int) obs.CompressionType);
var expectedShape = new[] { height, width, grayscale ? 1 : 3 };
Assert.AreEqual(expectedShape, obs.Shape);
}
}
}
}
}

11
com.unity.ml-agents/Tests/Editor/Sensor/CameraSensorTest.cs.meta


fileFormatVersion: 2
guid: ccdfc5b4015c9465cb1e811375be971c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存