dotnet / dotnet/machinelearning-samples
Image Data Normalization
- 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
Assessment
This issue has not been assessed yet.