Das Ziel des Trainings eines Machine-Learning- oder Deep-Learning-Modells besteht darin, ein „universelles“ Modell zu werden. Dies setzt voraus, dass das Modell nicht zu stark an den Trainingsdatensatz angepasst ist, oder mit anderen Worten, dass unser Modell die unsichtbaren Daten gut versteht. Datenerweiterung ist auch eine von vielen Möglichkeiten, eine Überanpassung zu vermeiden.
Der Prozess der Erweiterung der Datenmenge, die zum Trainieren eines Modells verwendet wird, wird als Datenerweiterung bezeichnet. Indem wir ein Modell mit mehreren Datentypen trainieren, können wir ein „allgemeineres“ Modell erhalten. Was bedeutet „mehrere Datentypen“? In diesem Artikel wird nur die Technologie zur „Bild“-Datenverbesserung erläutert und verschiedene Strategien zur Bilddatenverbesserung nur im Detail vorgestellt. Wir werden uns auch mit PyTorch befassen und Datenerweiterungstechniken implementieren, die hauptsächlich bei Bilddaten oder Computer Vision zum Einsatz kommen.
Weil es eine Datenverbesserungstechnologie einführt. Es reicht also aus, nur ein Bild zu verwenden. Schauen wir uns zunächst den Code des Bildmaterials an. Der folgende Code zeigt, dass wir die Größe des Bildes von seiner Originalgröße auf 224 x 224 ändern möchten.
import PIL.Image as Image import torch from torchvision import transforms import matplotlib.pyplot as plt import numpy as np import warnings def imshow(img_path, transform):
Diese Technik wendet einen Teil eines ausgewählten Bildes auf ein neues Bild an. Verwenden Sie beispielsweise „CenterCrop“, um ein in der Mitte zugeschnittenes Bild zurückzugeben.
path = './kitten.jpeg' transform = transforms.Resize((224, 224)) imshow(path, transform)
Diese Methode kombiniert Zuschneiden und Größenänderung gleichzeitig.
transform = transforms.CenterCrop((224, 224)) imshow(path, transform)
Spiegeln Sie das Bild horizontal oder vertikal. Der folgende Code versucht, eine horizontale Spiegelung auf unser Bild anzuwenden.
transform = transforms.RandomResizedCrop((100, 300)) imshow(path, transform)
Padding besteht aus dem Auffüllen aller Bildränder um einen bestimmten Betrag. Wir füllen jede Kante mit 50 Pixeln.
transform = transforms.RandomHorizontalFlip() imshow(path, transform)
wendet einen zufälligen Rotationswinkel auf das Bild an. Wir stellen diesen Winkel auf 15 Grad ein.
transform = transforms.Pad((50,50,50,50)) imshow(path, transform)
Diese Technik ist eine Transformation, die das Zentrum unverändert lässt. Diese Technik hat einige Parameter:
degrees: Drehwinkel translate: horizontale und vertikale Verschiebungtransform = transforms.RandomRotation(15) imshow(path, transform)
Das Bild wird mit der Gaußschen Unschärfe unscharf gemacht.
transform = transforms.RandomAffine(1, translate=(0.5, 0.5), scale=(1, 1), shear=(1,1), fillcolor=(256,256,256)) imshow(path, transform)
Konvertieren Sie Farbbilder in Graustufen.
transform = transforms.GaussianBlur(7, 3) imshow(path, transform)
Helligkeit
Ändern Sie die Helligkeit des Bildes. Das resultierende Bild wird im Vergleich zum Originalbild dunkler oder heller.
transform = transforms.Grayscale(num_output_channels=3) imshow(path, transform)
Der Grad des Unterschieds zwischen den dunkelsten und hellsten Teilen eines Bildes wird als Kontrast bezeichnet. Zur Verbesserung kann auch der Kontrast des Bildes angepasst werden.
transform = transforms.ColorJitter(cnotallow=2) imshow(path, transform)
Zusammenfassung von 12 häufig verwendeten Bilddatenverbesserungstechniken中颜色的分离被定义为饱和度。
transform = transforms.ColorJitter(saturatinotallow=20) imshow(path, transform)
色调被定义为Zusammenfassung von 12 häufig verwendeten Bilddatenverbesserungstechniken中颜色的深浅。
transform = transforms.ColorJitter(hue=2) imshow(path, transform)
图像本身的变化将有助于模型对未见数据的泛化,从而不会对数据进行过拟合。以上整理的都是我们常见的数据增强技术,torchvision中还包含了很多方法,可以在他的文档中找到:https://pytorch.org/vision/stable/transforms.html
Das obige ist der detaillierte Inhalt vonZusammenfassung von 12 häufig verwendeten Bilddatenverbesserungstechniken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!