• deeplab实现自己遥感地质分割数据集


    1. 数据集下载

    image图像
    mask图像
    label图像

    下载链接
    提取码:2022
    数据集文件夹中存放了样例image和label,可以查看他们的通道等信息,方便处理自己的数据集。

    2. 数据集预处理

    参考另一篇文章:图像预处理

    1. 数据集image
      1. 是24位深度
      2. 3通道RGB图像
    2. 数据集label
      1. 是8位深度
      2. 标签取值为0,1,2,…(有n类取值就到n-1)

    如果您的数据集标签取值为255,需要转化为0,1,2,等(视自己情况而定
    例如:

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    如果显存不够,可以裁剪图像为256大小,对应代码如下:
    裁剪后的图像保存在image和label中

    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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    3. 模型下载

    下载链接

    4. 检查数据

    1. 数据准备完成之后,首先运行voc_annotation.py文件,生成数据列表,运行命令:python voc_annotation.py,此处一般不会报错,如果报错可以按照下面的方式检查:
      1. 检查标签是否是8位深度,如果不是,运行下面的代码:

        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)
        
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
      2. 检查标签中是否有其他值,比如说类别为3,那么标签中的取值只能是0,1,2,如果出现其他值,就可能会报错;即便此处不报错,也可能在训练中出现问题,所以如果有这个问题,一定要记得修改。如果这种值不是特别多,可以直接设为0;如果特别多,那就需要检查是哪一步造成这个问题,如果找不到建议换数据集吧。

    5. 训练模型

    1. 修改train.py代码
      图像的尺寸(重要)
      在这里插入图片描述
      图像类别(重要)
      在这里插入图片描述
      batch_size等其他参数视情况而定
      在这里插入图片描述
    2. 运行python train.py来训练
      在这里插入图片描述

    6. 模型评估

    1. 修改deeplab.py内容,分别是训练好的模型。类别数(包括背景在内)。图像尺寸
      在这里插入图片描述
    2. 修改get_miou.py内容
      在这里插入图片描述
    3. 运行python get_miou.py命令
      在这里插入图片描述

    7. 模型预测

    1. 修改deeplab.py内容,分别是训练好的模型。类别数(包括背景在内)。图像尺寸
      在这里插入图片描述
    2. 修改predict.py内容。name_classes表示每个类别对应的名称
      在这里插入图片描述
    3. 运行python predict.py命令
      在这里插入图片描述
  • 相关阅读:
    BlueToolFixup.kext2.6.5(所有蓝牙部分驱动)
    Java - ScheduledExecutorService接口介绍(1)(可实现Timer定时器)
    Vue详解知识概括
    ApacheDBUtils的使用
    k8s--基础--27.2--企业级devops平台--安装jenkins
    【学习笔记】4、组合逻辑电路(下)
    tensorflow-卷积神经网络-图像分类入门demo
    东北林业大学计算机考研资料汇总
    智慧工地:让工地可视化、数字化、智能化
    PCA9535模块移植
  • 原文地址:https://blog.csdn.net/weixin_44669966/article/details/126030416