Browse Source

init commit for YOLOv3.

tags/v0.12
Oceania2018 6 years ago
parent
commit
5e43f4dcab
7 changed files with 177 additions and 2 deletions
  1. +3
    -0
      src/TensorFlowNET.Core/APIs/tf.train.cs
  2. +2
    -2
      src/TensorFlowNET.Core/TensorFlowNET.Core.csproj
  3. +36
    -0
      src/TensorFlowNET.Core/Train/ExponentialMovingAverage.cs
  4. +103
    -0
      test/TensorFlowNET.Examples/ImageProcessing/YOLO/Main.cs
  5. +10
    -0
      test/TensorFlowNET.Examples/ImageProcessing/YOLO/YOLOv3.cs
  6. +19
    -0
      test/TensorFlowNET.Examples/ImageProcessing/YOLO/config.cs
  7. +4
    -0
      test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj

src/TensorFlowNET.Core/Train/tf.optimizers.cs → src/TensorFlowNET.Core/APIs/tf.train.cs View File

@@ -31,6 +31,9 @@ namespace Tensorflow
public Optimizer AdamOptimizer(float learning_rate, string name = "Adam")
=> 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 string write_graph(Graph graph, string logdir, string name, bool as_text = true)

+ 2
- 2
src/TensorFlowNET.Core/TensorFlowNET.Core.csproj View File

@@ -17,10 +17,10 @@
<PackageTags>TensorFlow, NumSharp, SciSharp, MachineLearning, TensorFlow.NET, C#</PackageTags>
<Description>Google's TensorFlow full binding in .NET Standard.
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>
<LangVersion>7.3</LangVersion>
<FileVersion>0.11.10.0</FileVersion>
<FileVersion>0.11.0.0</FileVersion>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<SignAssembly>true</SignAssembly>


+ 36
- 0
src/TensorFlowNET.Core/Train/ExponentialMovingAverage.cs View File

@@ -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("");
}


}
}

+ 103
- 0
test/TensorFlowNET.Examples/ImageProcessing/YOLO/Main.cs View File

@@ -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;
}
}
}

+ 10
- 0
test/TensorFlowNET.Examples/ImageProcessing/YOLO/YOLOv3.cs View File

@@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace TensorFlowNET.Examples.ImageProcessing.YOLO
{
public class YOLOv3
{
}
}

+ 19
- 0
test/TensorFlowNET.Examples/ImageProcessing/YOLO/config.cs View File

@@ -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");
}
}
}

+ 4
- 0
test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj View File

@@ -6,6 +6,10 @@
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Colorful.Console" Version="1.2.9" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />


Loading…
Cancel
Save