deeplab implementa su propio conjunto de datos de segmentación geológica de teledetección

1. Descarga del conjunto de datos

imagen imagen
imagen de máscara
imagen de la etiqueta

Enlace de descarga
Código de extracción: 2022
la imagen de muestra y la etiqueta se almacenan en la carpeta del conjunto de datos, y puede ver sus canales y otra información para facilitar el procesamiento de su propio conjunto de datos.

2. Preprocesamiento de conjuntos de datos

Consulte otro artículo: Preprocesamiento de imágenes

  1. Imagen del conjunto de datos
    1. tiene una profundidad de 24 bits
    2. Imagen RGB de 3 canales
  2. Etiqueta del conjunto de datos
    1. tiene una profundidad de 8 bits
    2. El valor de la etiqueta es 0, 1, 2, ... (n-1 si hay n tipos de valores)

Si el valor de la etiqueta de su conjunto de datos es 255, debe convertirse a 0, 1, 2, etc. ( dependiendo de su propia situación )
. Por ejemplo:

Background [0,0,0]--------------0

Person [192,128,128]--------------1

Bike [0,128,0]----------------------2

Car [128,128,128]----------------- 3

Drone [128,0,0]--------------------4

Boat [0,0,128]--------------------- 5

Animal [192,0,128]---------------- 6

Obstacle [192,0,0]------------------7

Construction [192,128,0]-----------8

Vegetation [0,64,0]-----------------9

Road [128,128,0]-------------------10

Sky [0,128,128]---------------------11

Si la memoria de video no es suficiente, puede recortar la imagen a un tamaño de 256, el código correspondiente es el siguiente:
la imagen recortada se guarda en imagen y etiqueta

import os
import numpy as np
import cv2

images_path = './JPEGImages/'
labels_path = './SegmentationClass/'

image_files = os.listdir(images_path)

for s in image_files:
    image_path = images_path + s
    label_path = labels_path + s[:-4]+'.png'
    image = cv2.imread(image_path)
    label = cv2.imread(label_path)
    #print(image.shape)
    index = 0
    for i in range(4):
        for j in range(4):
            #print(i*256, ((i+1)*256-1), j*256, ((j+1)*256-1))
            new_image = image[i*256 : ((i+1)*256), j*256 : ((j+1)*256), :]
            new_label = label[i*256 : ((i+1)*256), j*256 : ((j+1)*256), :]
            cv2.imwrite('./image/'+ 'b_' + s[:-4] +'_'+ str(index) + '.png', new_image)
            new_label = cv2.cvtColor(new_label, cv2.COLOR_BGR2GRAY)
            cv2.imwrite('./label/'+ 'b_' + s[:-4] +'_'+ str(index) + '.png', new_label)
            index+=1
    print(s)

3. Descarga del modelo

enlace de descarga

4. Verifica los datos

  1. Una vez completada la preparación de datos, primero ejecute voc_annotation.pyel archivo, genere una lista de datos y ejecute el comando:, python voc_annotation.pypor lo general, no se informará ningún error aquí, si se informa un error, puede verificarlo de la siguiente manera:
    1. Compruebe si la etiqueta es 8位深度, si no, ejecute el siguiente código:

      import os
      
      import cv2
      
      file_names = os.listdir('./SegmentationClass/')
      
      for s in file_names:
          image_path = os.path.join('./SegmentationClass/', s)
          image = cv2.imread(image_path)
          image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
          cv2.imwrite('./SegmentationClass/' + s , image)
      
      
    2. Verifique si hay otros valores en la etiqueta. Por ejemplo 类别为3, el valor en la etiqueta solo puede ser 0,1,2. Si hay otros valores, se puede informar un error; incluso si no se informa ningún error aquí, puede haber problemas en entrenamiento, por lo que si hay este problema, debe recordar modificar. Si no hay demasiados valores de este tipo, puede establecerlos directamente en 0; si son demasiados, debe verificar qué paso causó el problema. Si no puede encontrarlo, se recomienda cambiar el conjunto de datos.

5. Entrena al modelo

  1. Modifique el
    tamaño de la imagen del código train.py (importante),
    inserte la descripción de la imagen aquí
    la categoría de la imagen (importante),
    inserte la descripción de la imagen aquí
    el tamaño del lote y otros parámetros, según sea el caso.
    inserte la descripción de la imagen aquí
  2. correr python train.pypara entrenar
    inserte la descripción de la imagen aquí

6. Evaluación del modelo

  1. Modificar el contenido de deeplab.py, que son los modelos entrenados. Número de categorías (incluyendo antecedentes). tamaño de la imagen
    inserte la descripción de la imagen aquí
  2. Modificar el contenido de get_miou.py
    inserte la descripción de la imagen aquí
  3. ejecutar python get_miou.pycomando
    inserte la descripción de la imagen aquí

7. Modelo de predicción

  1. Modificar el contenido de deeplab.py, que son los modelos entrenados. Número de categorías (incluyendo antecedentes). tamaño de la imagen
    inserte la descripción de la imagen aquí
  2. Modificar el contenido de predict.py. name_classes indica el nombre correspondiente a cada categoría
    inserte la descripción de la imagen aquí
  3. ejecutar python predict.pycomando
    inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44669966/article/details/126030416
Recomendado
Clasificación