ImageEstimatorsCatalog.ConvertToImage Methode

Definition

Erstellen Sie ein VectorToImageConvertingEstimator, das Bild aus den Daten aus der Spalte erstellt, die in inputColumnName einer neuen Spalte angegeben ist: outputColumnName.

public static Microsoft.ML.Transforms.Image.VectorToImageConvertingEstimator ConvertToImage(this Microsoft.ML.TransformsCatalog catalog, int imageHeight, int imageWidth, string outputColumnName, string inputColumnName = default, Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator.ColorBits colorsPresent = Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator+ColorBits.Rgb, Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator.ColorsOrder orderOfColors = Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator+ColorsOrder.ARGB, bool interleavedColors = false, float scaleImage = 1, float offsetImage = 0, int defaultAlpha = 255, int defaultRed = 0, int defaultGreen = 0, int defaultBlue = 0);
static member ConvertToImage : Microsoft.ML.TransformsCatalog * int * int * string * string * Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator.ColorBits * Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator.ColorsOrder * bool * single * single * int * int * int * int -> Microsoft.ML.Transforms.Image.VectorToImageConvertingEstimator
<Extension()>
Public Function ConvertToImage (catalog As TransformsCatalog, imageHeight As Integer, imageWidth As Integer, outputColumnName As String, Optional inputColumnName As String = Nothing, Optional colorsPresent As ImagePixelExtractingEstimator.ColorBits = Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator+ColorBits.Rgb, Optional orderOfColors As ImagePixelExtractingEstimator.ColorsOrder = Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator+ColorsOrder.ARGB, Optional interleavedColors As Boolean = false, Optional scaleImage As Single = 1, Optional offsetImage As Single = 0, Optional defaultAlpha As Integer = 255, Optional defaultRed As Integer = 0, Optional defaultGreen As Integer = 0, Optional defaultBlue As Integer = 0) As VectorToImageConvertingEstimator

Parameter

catalog
TransformsCatalog

Der Katalog der Transformation.

imageHeight
Int32

Die Höhe der Ausgabebilder.

imageWidth
Int32

Die Breite der Ausgabebilder.

outputColumnName
String

Name der Spalte, die sich aus der Transformation von inputColumnName. Der Datentyp dieser Spalte ist MLImage.

inputColumnName
String

Der Name der Spalte mit Daten, die in ein Bild konvertiert werden sollen. Dieser Schätzer arbeitet über den bekannten Vektor von Single, Double und Byte.

colorsPresent
ImagePixelExtractingEstimator.ColorBits

Gibt an, welche ImagePixelExtractingEstimator.ColorBits die Eingabepixelvektoren enthalten. Die Reihenfolge der Farben wird in orderOfColorsangegeben.

orderOfColors
ImagePixelExtractingEstimator.ColorsOrder

Die Reihenfolge, in der Farben im Eingabevektor dargestellt werden.

interleavedColors
Boolean

Gibt an, ob die Pixel interleaviert sind, d. h., ob sie in orderOfColors ordnung sind oder in der planaren Form getrennt sind: alle Werte für eine Farbe für alle Pixel, dann alle Werte für eine andere Farbe usw.

scaleImage
Single

Die Werte werden von diesem Wert skaliert, bevor sie in Pixel konvertiert werden. Auf Vektorwert vor offsetImage.

offsetImage
Single

Der Offset wird subtrahiert, bevor die Werte in Pixel konvertiert werden. Auf Vektorwert angewendet nach scaleImage.

defaultAlpha
Int32

Der Standardwert für Alphafarbe würde überschrieben, wenn colorsPresent er enthält Alpha.

defaultRed
Int32

Der Standardwert für roter Farbe würde überschrieben, wenn colorsPresent enthält Red.

defaultGreen
Int32

Der Standardwert für grüne Farbe würde überschrieben, wenn colorsPresent er enthält Green.

defaultBlue
Int32

Der Standardwert für blauer Farbe würde überschrieben, wenn colorsPresent enthält Blue.

Gibt zurück

Beispiele

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic
{
    public static class ConvertToImage
    {
        private const int imageHeight = 224;
        private const int imageWidth = 224;
        private const int numberOfChannels = 3;
        private const int inputSize = imageHeight * imageWidth * numberOfChannels;

        // Sample that shows how an input array (of doubles) can be used to interop
        // with image related estimators in ML.NET.
        public static void Example()
        {
            // Create a new ML context, for ML.NET operations. It can be used for
            // exception tracking and logging, as well as the source of randomness.
            var mlContext = new MLContext();

            // Create a list of training data points.
            var dataPoints = GenerateRandomDataPoints(4);

            // Convert the list of data points to an IDataView object, which is
            // consumable by ML.NET API.
            var data = mlContext.Data.LoadFromEnumerable(dataPoints);

            // Image loading pipeline.
            var pipeline = mlContext.Transforms.ConvertToImage(imageHeight,
                imageWidth, "Image", "Features")
                .Append(mlContext.Transforms.ExtractPixels("Pixels", "Image"));

            var transformedData = pipeline.Fit(data).Transform(data);

            // Preview the transformedData.
            PrintColumns(transformedData);

            // Features                 Image                    Pixels
            // 185,209,196,142,52...    {Width=224, Height=224}  185,209,196,142,52...
            // 182,235,84,23,87...      {Width=224, Height=224}  182,235,84,23,87...
            // 192,214,247,22,38...     {Width=224, Height=224}  192,214,247,22,38...
            // 242,161,141,223,192...   {Width=224, Height=224}  242,161,141,223,192...
        }

        private static void PrintColumns(IDataView transformedData)
        {
            Console.WriteLine("{0, -25} {1, -25} {2, -25}", "Features", "Image",
                "Pixels");

            using (var cursor = transformedData.GetRowCursor(transformedData
                .Schema))
            {
                // Note that it is best to get the getters and values *before*
                // iteration, so as to facilitate buffer sharing (if applicable), and
                // column -type validation once, rather than many times.
                VBuffer<float> features = default;
                VBuffer<float> pixels = default;
                MLImage imageObject = null;

                var featuresGetter = cursor.GetGetter<VBuffer<float>>(cursor.Schema[
                    "Features"]);

                var pixelsGetter = cursor.GetGetter<VBuffer<float>>(cursor.Schema[
                    "Pixels"]);

                var imageGetter = cursor.GetGetter<MLImage>(cursor.Schema["Image"]);
                while (cursor.MoveNext())
                {

                    featuresGetter(ref features);
                    pixelsGetter(ref pixels);
                    imageGetter(ref imageObject);

                    Console.WriteLine("{0, -25} {1, -25} {2, -25}", string.Join(",",
                        features.DenseValues().Take(5)) + "...",
                        $"Width={imageObject.Width}, Height={imageObject.Height}",
                        string.Join(",", pixels.DenseValues().Take(5)) + "...");
                }

                // Dispose the image.
                imageObject.Dispose();
            }
        }

        private class DataPoint
        {
            [VectorType(inputSize)]
            public float[] Features { get; set; }
        }

        private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count,
            int seed = 0)
        {
            var random = new Random(seed);

            for (int i = 0; i < count; i++)
                yield return new DataPoint
                {
                    Features = Enumerable.Repeat(0,
                    inputSize).Select(x => (float)random.Next(0, 256)).ToArray()
                };
        }
    }
}

Gilt für: