[PYTHON] Comment augmenter le nombre d'images de jeux de données d'apprentissage automatique

Importance du remplissage d'image

Un bon ensemble de données de formation est nécessaire pour améliorer la précision de la classification, comme CNN pour l'apprentissage en profondeur. Afin d'assurer l'exactitude, il est nécessaire de concevoir les éléments suivants.

Pour cela, vous avez juste besoin d'un certain nombre de feuilles. Selon le type, le nombre de feuilles peut être biaisé, et il est difficile d'extraire et d'étiqueter le tout à la main.

Par conséquent, nous envisagerons d'augmenter le nombre d'images en traitant les images qui ont été marquées dans une certaine mesure. Voici quelques techniques. L'explication est basée sur l'opinion que Reni Takashiro devrait être utilisé comme échantillon pour le traitement d'image. Utiliser.

Méthode de gonflage

Implémenté dans OpenCV 3.0 Python. Voici une source que vous pouvez réellement utiliser pour le remplissage.

Github

Réglage du contraste

Crée une image avec un contraste amélioré et réduit. Pour accentuer, définissez 0 pour les pixels à faible luminosité en dessous d'un certain niveau et 255 pour les pixels à forte luminosité au-dessus d'un certain niveau, et ajustez ceux avec une luminosité intermédiaire. Inversement, pour le réduire, ajustez la largeur de la luminosité pour qu'elle soit plus petite. Ce chiffre est facile à comprendre. http://livedoor.blogimg.jp/progr-python2/imgs/f/8/f867a2e8.png

#Génération de table de recherche
min_table = 50
max_table = 205
diff_table = max_table - min_table

LUT_HC = np.arange(256, dtype = 'uint8' )
LUT_LC = np.arange(256, dtype = 'uint8' )

#Création de LUT à contraste élevé
for i in range(0, min_table):
    LUT_HC[i] = 0
for i in range(min_table, max_table):
    LUT_HC[i] = 255 * (i - min_table) / diff_table
for i in range(max_table, 255):
    LUT_HC[i] = 255

#Créer une LUT à faible contraste
for i in range(256):
    LUT_LC[i] = min_table + i * (diff_table) / 255

#conversion
src = cv2.imread("reni.jpg ", 1)
high_cont_img = cv2.LUT(src, LUT_HC)
low_cont_img = cv2.LUT(src, LUT_LC)

Contraste accentué reni_takagi_2012_04_15_1.jpg

Contraste réduit reni_takagi_2012_04_15_2.jpg

référence Conversion de la densité d'image avec la courbe des tons

Conversion gamma

Cette conversion est utilisée lors de l'affichage sur un écran et modifie la valeur de luminosité en fonction de la valeur de γ. http://livedoor.blogimg.jp/progr-python2/imgs/0/4/043dfda9.png

Remplacez ici la table de recherche de la source de réglage du contraste.

#Table de recherche de conversion gamma
gamma1 = 0.75
gamma2 = 1.5
for i in range(256):
    LUT_G1[i] = 255 * pow(float(i) / 255, 1.0 / gamma1)
    LUT_G2[i] = 255 * pow(float(i) / 255, 1.0 / gamma2)

Lorsque γ = 1,5 reni_takagi_2012_04_15_3.jpg

Lorsque γ = 0,75 reni_takagi_2012_04_15_2.jpg

référence Table de consultation (exemple de correction gamma)

Lissage

Lissez l'image. Ici, le filtre de moyennage est appliqué.

average_square = (10,10)
src = cv2.imread("reni.jpg ", 1)
blur_img = cv2.blur(src, average_square)

Filtre de moyenne 10x10 reni_takagi_2012_04_15_5.jpg

référence Filtre de lissage (moyenne mobile, gaussien)

Bruit basé sur la distribution gaussienne

Ajoutez du bruit à chaque pixel en ajoutant la valeur générée basée sur la distribution gaussienne.

Bruit gaussien avec σ = 15 reni_takagi_2012_04_15_7.jpg

src = cv2.imread("reni.jpg ", 1)
row,col,ch= src.shape
mean = 0
sigma = 15
gauss = np.random.normal(mean,sigma,(row,col,ch))
gauss = gauss.reshape(row,col,ch)
gauss_img = src + gauss

référence Conversion des informations d'image (données de luminosité)

Bruit sel et poivre

Ça s'appelle ça parce que c'est un bruit comme du sel et du poivre. Il est également appelé bruit impulsionnel.

src = cv2.imread("reni.jpg ", 1)
row,col,ch = src.shape
s_vs_p = 0.5
amount = 0.004
sp_img = src.copy()

#Mode sel
num_salt = np.ceil(amount * src.size * s_vs_p)
coords = [np.random.randint(0, i-1 , int(num_salt)) for i in src.shape]
sp_img[coords[:-1]] = (255,255,255)

#Mode poivre
num_pepper = np.ceil(amount* src.size * (1. - s_vs_p))
coords = [np.random.randint(0, i-1 , int(num_pepper)) for i in src.shape]
sp_img[coords[:-1]] = (0,0,0)

Bruit sur 0,4% de pixels reni_takagi_2012_04_15_8.jpg

Inverser

Retourner à gauche et à droite et retourner de haut en bas.

src = cv2.imread("reni.jpg ", 1)
hflip_img = cv2.flip(src, 1)
vflip_img = cv2.flip(src, 0)

Échelle

Agrandit ou réduit une partie de l'image.

src = cv2.imread("reni.jpg ", 1)
hight = src.shape[0]
width = src.shape[1]
half_img = cv2.resize(src,(hight/2,width/2))

Recommended Posts

Comment augmenter le nombre d'images de jeux de données d'apprentissage automatique
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
Comment augmenter l'axe
Comment connaître le numéro de port du service xinetd
Comment obtenir le nombre de chiffres en Python
Comment augmenter la vitesse de traitement de l'acquisition de la position des sommets
Comment trouver le nombre optimal de clusters pour les k-moyennes
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de régression
Comment lire l'ensemble de données SNLI
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de classification
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
Comment collecter des données d'apprentissage automatique
Les gens mémorisent les connaissances acquises dans le cerveau, comment mémoriser les connaissances acquises dans l'apprentissage automatique
scikit-learn Comment utiliser le résumé (apprentissage automatique)
Comment vérifier la version de Django
Enregistrez les étapes pour comprendre l'apprentissage automatique
Comment profiter de Coursera / Machine Learning (semaine 10)
Le nombre de fermetures de magasins a-t-il augmenté en raison de l'influence du nouveau virus corona?
Comment connaître le nombre de processeurs sans utiliser la commande sar
Comment utiliser l'apprentissage automatique pour le travail? 02_Aperçu du projet de développement AI
Comment mettre un numéro de ligne au début d'un fichier CSV
Signifie mémo lorsque vous essayez de faire de l'apprentissage automatique avec 50 images
Comment lire une vidéo tout en regardant le nombre d'images (Mac)
Comment calculer la volatilité d'une marque
Classification des images de guitare par apprentissage automatique Partie 1
Comment trouver la zone du diagramme de Boronoi
Téléchargez un grand nombre d'images sur Wordpress
À propos du contenu de développement de l'apprentissage automatique (exemple)
Classification des images de guitare par apprentissage automatique, partie 2
Comment identifier le numéro d'appel système ausyscall
Disposition des éléments auto-mentionnés liés à l'apprentissage automatique
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
J'ai essayé de prédire la présence ou l'absence de neige par apprentissage automatique.
Une introduction à l'analyse de données à l'aide de Python - Pour augmenter le nombre de vues vidéo -
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Comment installer le framework d'apprentissage en profondeur Tensorflow 1.0 dans l'environnement Windows Anaconda
Introduction à l'apprentissage automatique
Comptez le nombre de paramètres dans le modèle d'apprentissage en profondeur
Impressions d'avoir obtenu le nano-diplôme Udacity Machine Learning Engineer
La décision de scikit-learn Comment visualiser un modèle en bois
Essayez d'estimer le nombre de likes sur Twitter
Comment afficher plusieurs images d'une galaxie en tuiles
Prédire le sexe des utilisateurs de Twitter grâce à l'apprentissage automatique
[Blender] Comment définir dynamiquement les sélections EnumProperty
Résumé du flux de base de l'apprentissage automatique avec Python
Bilan du premier défi du machine learning avec Keras
[Python] Résumé de la façon de spécifier la couleur de la figure
Comment frapper le document de Magic Function (Line Magic)
Comment accéder à la variable globale du module importé
[Selenium] Comment spécifier le chemin relatif de chromedriver?
Je souhaite augmenter la sécurité de la connexion SSH
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
La première étape de l'apprentissage automatique ~ Pour ceux qui veulent essayer l'implémentation avec python ~
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Introduction à l'apprentissage automatique ~ Montrons le tableau de la méthode du K plus proche voisin ~ (+ gestion des erreurs)
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
Comment créer un ensemble de données d'image de visage utilisé dans l'apprentissage automatique (2: Analyse d'image de la vidéo pour obtenir des images candidates)
[Partie 4] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Ubuntu] Comment supprimer tout le contenu du répertoire
10. Compter le nombre de lignes