@@ -31,6 +31,9 @@ namespace Tensorflow | |||||
public Optimizer AdamOptimizer(float learning_rate, string name = "Adam") | public Optimizer AdamOptimizer(float learning_rate, string name = "Adam") | ||||
=> new AdamOptimizer(learning_rate, name: name); | => new AdamOptimizer(learning_rate, name: name); | ||||
public object ExponentialMovingAverage(float decay) | |||||
=> new ExponentialMovingAverage(decay); | |||||
public Saver Saver(VariableV1[] var_list = null) => new Saver(var_list: var_list); | public Saver Saver(VariableV1[] var_list = null) => new Saver(var_list: var_list); | ||||
public string write_graph(Graph graph, string logdir, string name, bool as_text = true) | public string write_graph(Graph graph, string logdir, string name, bool as_text = true) |
@@ -17,10 +17,10 @@ | |||||
<PackageTags>TensorFlow, NumSharp, SciSharp, MachineLearning, TensorFlow.NET, C#</PackageTags> | <PackageTags>TensorFlow, NumSharp, SciSharp, MachineLearning, TensorFlow.NET, C#</PackageTags> | ||||
<Description>Google's TensorFlow full binding in .NET Standard. | <Description>Google's TensorFlow full binding in .NET Standard. | ||||
Docs: https://tensorflownet.readthedocs.io</Description> | Docs: https://tensorflownet.readthedocs.io</Description> | ||||
<AssemblyVersion>0.11.10.0</AssemblyVersion> | |||||
<AssemblyVersion>0.11.0.0</AssemblyVersion> | |||||
<PackageReleaseNotes>Changes since v0.10.0:</PackageReleaseNotes> | <PackageReleaseNotes>Changes since v0.10.0:</PackageReleaseNotes> | ||||
<LangVersion>7.3</LangVersion> | <LangVersion>7.3</LangVersion> | ||||
<FileVersion>0.11.10.0</FileVersion> | |||||
<FileVersion>0.11.0.0</FileVersion> | |||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | <PackageLicenseFile>LICENSE</PackageLicenseFile> | ||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | ||||
<SignAssembly>true</SignAssembly> | <SignAssembly>true</SignAssembly> | ||||
@@ -0,0 +1,36 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace Tensorflow.Train | |||||
{ | |||||
public class ExponentialMovingAverage | |||||
{ | |||||
float _decay; | |||||
int? _num_updates; | |||||
bool _zero_debias; | |||||
string _name; | |||||
public string name => _name; | |||||
public ExponentialMovingAverage(float decay, int? num_updates = null, bool zero_debias = false, | |||||
string name = "ExponentialMovingAverage") | |||||
{ | |||||
_decay = decay; | |||||
_num_updates = num_updates; | |||||
_zero_debias = zero_debias; | |||||
_name = name; | |||||
} | |||||
/// <summary> | |||||
/// Maintains moving averages of variables. | |||||
/// </summary> | |||||
/// <param name="var_list"></param> | |||||
/// <returns></returns> | |||||
public Operation apply(VariableV1[] var_list = null) | |||||
{ | |||||
throw new NotImplementedException(""); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,103 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.IO; | |||||
using System.Text; | |||||
using Tensorflow; | |||||
using static Tensorflow.Binding; | |||||
namespace TensorFlowNET.Examples.ImageProcessing.YOLO | |||||
{ | |||||
/// <summary> | |||||
/// Implementation of YOLO v3 object detector in Tensorflow | |||||
/// https://github.com/YunYang1994/tensorflow-yolov3 | |||||
/// </summary> | |||||
public class Main : IExample | |||||
{ | |||||
public bool Enabled { get; set; } = true; | |||||
public bool IsImportingGraph { get; set; } = false; | |||||
public string Name => "YOLOv3"; | |||||
Dictionary<int, string> classes; | |||||
Config config; | |||||
Tensor input_data; | |||||
Tensor label_sbbox; | |||||
Tensor label_mbbox; | |||||
Tensor label_lbbox; | |||||
Tensor true_sbboxes; | |||||
Tensor true_mbboxes; | |||||
Tensor true_lbboxes; | |||||
Tensor trainable; | |||||
public bool Run() | |||||
{ | |||||
PrepareData(); | |||||
var graph = IsImportingGraph ? ImportGraph() : BuildGraph(); | |||||
using (var sess = tf.Session(graph)) | |||||
{ | |||||
Train(sess); | |||||
} | |||||
return true; | |||||
} | |||||
public void Train(Session sess) | |||||
{ | |||||
} | |||||
public void Test(Session sess) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public Graph BuildGraph() | |||||
{ | |||||
var graph = new Graph().as_default(); | |||||
tf_with(tf.name_scope("define_input"), scope => | |||||
{ | |||||
input_data = tf.placeholder(dtype: tf.float32, name: "input_data"); | |||||
label_sbbox = tf.placeholder(dtype: tf.float32, name: "label_sbbox"); | |||||
label_mbbox = tf.placeholder(dtype: tf.float32, name: "label_mbbox"); | |||||
label_lbbox = tf.placeholder(dtype: tf.float32, name: "label_lbbox"); | |||||
true_sbboxes = tf.placeholder(dtype: tf.float32, name: "sbboxes"); | |||||
true_mbboxes = tf.placeholder(dtype: tf.float32, name: "mbboxes"); | |||||
true_lbboxes = tf.placeholder(dtype: tf.float32, name: "lbboxes"); | |||||
trainable = tf.placeholder(dtype: tf.@bool, name: "training"); | |||||
}); | |||||
tf_with(tf.name_scope("define_loss"), scope => | |||||
{ | |||||
//model = new YOLOv3(input_data, trainable); | |||||
}); | |||||
return graph; | |||||
} | |||||
public Graph ImportGraph() | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public void Predict(Session sess) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public void PrepareData() | |||||
{ | |||||
config = new Config(Name); | |||||
string dataDir = Path.Combine(Name, "data"); | |||||
Directory.CreateDirectory(dataDir); | |||||
classes = new Dictionary<int, string>(); | |||||
foreach (var line in File.ReadAllLines(config.CLASSES)) | |||||
classes[classes.Count] = line; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,10 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace TensorFlowNET.Examples.ImageProcessing.YOLO | |||||
{ | |||||
public class YOLOv3 | |||||
{ | |||||
} | |||||
} |
@@ -0,0 +1,19 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.IO; | |||||
using System.Text; | |||||
namespace TensorFlowNET.Examples.ImageProcessing.YOLO | |||||
{ | |||||
public class Config | |||||
{ | |||||
string _root; | |||||
public string CLASSES; | |||||
public Config(string root) | |||||
{ | |||||
_root = root; | |||||
CLASSES = Path.Combine(_root, "data", "classes", "coco.names"); | |||||
} | |||||
} | |||||
} |
@@ -6,6 +6,10 @@ | |||||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild> | <GeneratePackageOnBuild>false</GeneratePackageOnBuild> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> | |||||
<DefineConstants>DEBUG;TRACE</DefineConstants> | |||||
</PropertyGroup> | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Colorful.Console" Version="1.2.9" /> | <PackageReference Include="Colorful.Console" Version="1.2.9" /> | ||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> | <PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> | ||||