Cómo NDSm como datos de elevación para la segmentación semántica

prefacio

Hay una corriente puntuaciones de clasificación de imágenes de detección remotas basadas en la profundidad de aprendizaje de los siguientes problemas: a los datos de imagen limitada de banda alta, la información espectral no es rico, el límite rico de la característica de modelo de aprendizaje, en cierta medida, lo que resulta en la precisión de clasificación bajo imagen; 2. hay una característica interna fenómeno errores de clasificación y función de frontera incompleto y otras cuestiones.
Para resolver los problemas anteriores, la presente Bowen, describe un método para dividir los datos de elevación de unión semántica. cifras normalizadas muestran que el modelo (normalizado modelo de superficie digital, NDSM) registros incluyen todos los datos relativos a la altura por encima de la planta baja de la información, para reflejar la verdadera altura de características de la superficie. Esta información tiene un papel importante distinguir diferentes tipos de función (por ejemplo, la construcción y el suelo, los árboles y la vegetación baja, etc.) en la clasificación de imágenes.

El dataloader unión NDSM (pytorch)

La idea principal de la primera sección con el DSM y se calcula restando el NDSM DTM, en forma de numpy Guardar y, a continuación, superpone a los datos de vídeo como una cuarta banda, y a continuación, una serie de operaciones para la mejora de datos. La visualización de datos pertinente, el efecto es el siguiente:
imagen
máscara
NDSm

class RSDataset(torch.utils.data.Dataset):
    """Dataset to concate multiple input images stored in slippy map format.
    """

    def __init__(self, inputs, inputs_ndsm, target, debug = False,test = False):
        super().__init__()

        self.test = test
        if debug == False:
            self.inputs =  Path(inputs).files()
            self.inputs_ndsm = Path(inputs_ndsm).files()
            if self.test == False:
                self.target = Path(target).files()
        else:
            self.inputs =  Path(inputs).files()[:1000]
            self.inputs_ndsm = Path(inputs_ndsm).files()[:1000]
            if self.test == False:
                self.target =  Path(target).files()
        self.test_transform =Compose([ImageToTensor()])
        self.transform1 = iaa.SomeOf((1,4),[
                             iaa.Crop(px=(0, 16)),
                             iaa.Sharpen((0.0, 1.0)),
                             iaa.Fliplr(0.5),
                             iaa.Flipud(0.5),
                             iaa.Affine(rotate=(-90, 90)),  # rotate by -45 to 45 degrees (affects segmaps)
                        ], random_order=True)
        self.transform = JointCompose(
            [
                JointTransform(ImageToTensor(), MaskToTensor())
            ]
        )

    def __len__(self):
#         return len(self.target)
        return len(self.inputs)

    def __getitem__(self, i):
        # at this point all transformations are applied and we expect to work with raw tensors
        images = np.array(io.imread(self.inputs[i]),dtype=np.float32)
        ndsm = np.load(self.inputs_ndsm[i]).astype(np.float32)
        ndsm = (ndsm+1.5)/22*255

        h, w, c = images.shape
        temp = np.zeros((h, w, c + 1))
        temp[:, :, :3] = images
        temp[:, :, 3] = ndsm
        images = temp

        if self.test == False:
            mask = np.array(Image.open(self.target[i]).convert("L"))/255
            mask = np.reshape(mask,(h, w, 1))
            seq_det = self.transform1.to_deterministic()  #
            segmap = ia.SegmentationMapOnImage(mask, shape=mask.shape, nb_classes=2)
            images = seq_det.augment_image(images)
            mask = seq_det.augment_segmentation_maps([segmap])[0].get_arr_int().astype(np.uint8)

            mask = np.reshape(mask,(h, w))
            images, mask = images.copy(), mask.copy()

            images, mask = self.transform(images, mask)
            return images, mask
        else:
            return self.test_transform(images)

Sobre la revisión de la capa de red

Es por lo general la primera capa de la red de cuatro canales de tres canales cambió, el enfoque específico puede referirse a otro de mi entrada en el blog .

material de referencia

Xu Huimin, Qi Hua, Ke Sur, y así sucesivamente. Imagen de alta resolución Clasificación estudio en profundidad de la unión NDSm [J]. Topografía y Cartografía de 2019 (8): 63-67. DOI: 10.13474 / j. CNKI. 11- 2246.2019.0253.

Publicado 33 artículos originales · ganado elogios 3 · Vistas 5545

Supongo que te gusta

Origin blog.csdn.net/weixin_42990464/article/details/104338928
Recomendado
Clasificación