using ZeroLevel.Services.Serialization; namespace ZeroLevel.NN.Models { public class YoloPrediction : IBinarySerializable { public int Class { get; set; } public float Cx { get; set; } public float Cy { get; set; } public float W { get; set; } public float H { get; set; } public float Score { get; set; } public string Label { get; set; } public float X { get { return Cx - W / 2.0f; } } public float Y { get { return Cy - W / 2.0f; } } public float Area { get { return W * H; } } public string Description { get { return $"{Label} ({(int)(Score * 100)} %)"; } } public float this[int index] { get { switch (index) { case 0: return Cx; case 1: return Cy; case 2: return Cx + W; case 3: return Cy + H; } return 0; } } public void Deserialize(IBinaryReader reader) { this.Cx = reader.ReadFloat(); this.Cy = reader.ReadFloat(); this.W = reader.ReadFloat(); this.H = reader.ReadFloat(); this.Class = reader.ReadInt32(); this.Score = reader.ReadFloat(); this.Label = reader.ReadString(); } public void Serialize(IBinaryWriter writer) { writer.WriteFloat(this.Cx); writer.WriteFloat(this.Cy); writer.WriteFloat(this.W); writer.WriteFloat(this.H); writer.WriteInt32(this.Class); writer.WriteFloat(this.Score); writer.WriteString(this.Label); } } }