| @@ -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" /> | ||||