You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Zero/ZeroLevel.NN/Models/YoloPrediction.cs

67 lines
1.8 KiB

2 years ago
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);
}
}
}

Powered by TurnKey Linux.