dotnet / dotnet/machinelearning-samples

Image Data Normalization

Open
#911 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
PowerShell
Stars
4.7k
Forks
2.7k
Avg merge
2d 22h
Merged PRs (30d)
1

Description

I built onnx model by pytorch, and use the model like as follow code in python.
I want load the onnx model in ML.NET, but I do not know how to normalize image data.
To undestand ML.NET, I read as follow tutorial and writing code as follow in ML.NET.

https://docs.microsoft.com/ja-jp/dotnet/machine-learning/tutorials/

As follow code in ML.NET, image data is not normalized.
Are there any idea to normalize in ML.NET ?

//Python
'''
PRED_MODEL = onnx.load(".//onnxfile//pytorch.onnx")
PRED_CONTENT = PRED_MODEL.SerializeToString()
PRED_SESS = onnxruntime.InferenceSession(PRED_CONTENT)

mean = (0.485,0.456,0.406)
std = (0.229,0.224,0.225)
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize(mean, std)])
img3 = Image.fromarray(img2) #img2 is 3D image data of numpy
img_transform = transform(img3).unsqueeze(0)
x1 = img_transform.cpu().numpy()

predict = PRED_SESS.run([session_output[0].name], {session_input[0].name:x1})[0]
'''

//ML.NET
'''
var imageLoader = _ml.Transforms.LoadImages(_inputColumnNames[0], string.Empty, nameof(ImageInputData.ImagePath));
var imageResizer = _ml.Transforms.ResizeImages(_inputColumnNames[0], imageWidth, imageHeight);
var pixelExtractor = _ml.Transforms.ExtractPixels(_inputColumnNames[0], interleavePixelColors: True, colorsToExtract: ImagePixelExtractingEstimator.ColorBits.Red, scaleImage: 1);
var onnxEstimator = _ml.Transforms.ApplyOnnxModel(_outputColumnNames, _inputColumnNames, onnxModelPath);
var data = _ml.Data.LoadFromEnumerable(new List());
var pipeline = imageLoader.Append(imageResizer).Append(pixelExtractor).Append(onnxEstimator);
model = pipeline.Fit(data);
'''

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.