ImageEstimatorsCatalog.ConvertToImage Methode

Definition

Erstellen Sie ein VectorToImageConvertingEstimator-Element, das ein Image aus den Daten der in inputColumnName angegebenen Spalte in einer neuen Spalte erstellt: 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 inputColumnNameergibt. Der Datentyp dieser Spalte ist MLImage.

inputColumnName
String

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

colorsPresent
ImagePixelExtractingEstimator.ColorBits

Gibt an, welche ImagePixelExtractingEstimator.ColorBits in den Eingabepixelvektoren vorhanden sind. Die Reihenfolge der Farben wird in orderOfColorsangegeben.

orderOfColors
ImagePixelExtractingEstimator.ColorsOrder

Die Reihenfolge, in der Farben im Eingabevektor dargestellt werden.

interleavedColors
Boolean

Ob die Pixel ineinander verschachtelt sind, d. h., ob sie in orderOfColors ordnung 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 um diesen Wert skaliert, bevor sie in Pixel konvertiert werden. Wird auf den Vektorwert vor offsetImageangewendet.

offsetImage
Single

Der Offset wird subtrahiert, bevor die Werte in Pixel konvertiert werden. Wird auf den Vektorwert nach scaleImageangewendet.

defaultAlpha
Int32

Der Standardwert für die Alphafarbe wird überschrieben, wenn colorsPresent enthält Alpha.

defaultRed
Int32

Der Standardwert für die rote Farbe wird überschrieben, wenn colorsPresent enthält Red.

defaultGreen
Int32

Der Standardwert für die grüne Farbe wird überschrieben, wenn colorsPresent enthält Green.

defaultBlue
Int32

Der Standardwert für die blaue Farbe wird ü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: