图像分割-编码解码网络的训练-kreas实现

一、数据集加载:

纯手工打造一个函数用来加载数据,数据分别为imagemask

我们所需要的类型:(B数量,长,宽,通道数),只要将数据加载成这样并mask和image对应就行。

第一步:

获取文件中所有的图片文件,并进行排序(mask和label的标签最好对应起来,这样对文件名进行排序就可以自动对齐)

train_mask = sorted(glob.glob('/kaggle/input/image-xy/Train_Label/*.jpg'))
train_image = sorted(glob.glob('/kaggle/input/image-xy/Train_image/*.jpg'))

第二步:

读取图像,图片大小缩到(256,256,3),标签大小缩到(256,256),读取一张mask和label就将它们加入到mask数组和image数组中。

def data_generation(batch_data_img, batch_data_mask):
    images = []
    masks = []
        # 生成数据
    for data_img, data_mask in zip(batch_data_img, batch_data_mask):
            # x_train数据
        image = cv2.imread(data_img,cv2.IMREAD_COLOR)
        image = cv2.resize(image,(256,256))
         
        image = list(image)
        images.append(image)
            # y_train数据
        mask = cv2.imread(data_mask,cv2.IMREAD_GRAYSCALE)
        mask = cv2.resize(mask, (256,256))
        mask = mask / 255.0
        mask = list(mask)
        masks.append(mask)
    return np.array(images), np.array(masks)

第三步:

增加维度,因为神经网络的输出层为(None,256,256,1),所以我们要将标签的通道数加上。

X,Y=data_generation(train_image,train_mask)
Y = Y[:, :, :, np.newaxis] 

查看结果,符合预期

二、模型搭建

模型的搭建在这一节,只不过将其输出通道数改成了1.

纯手工打造编码解码网络-kreas实现

废话不多说,直接上网络架构图

三、模型训练

这里就懒得自定义损失函数了,直接上系统自带的,优化器adam,使用acc作为评估指标。

Batch使用32,计算卡使用p100。

model = En_De()
model.summary()
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
model.fit(X,Y,batch_size=32,epochs=2)

先训练2轮看看效果。

分割效果图就不看了,应该挺差的,毕竟就2个epochs。

后续将改进损失函数,使用交并比等,L1损失或L2损失试试。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 01:10:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 01:10:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 01:10:01       58 阅读
  4. Python语言-面向对象

    2024-07-10 01:10:01       69 阅读

热门阅读

  1. 【7.29-1800】

    2024-07-10 01:10:01       22 阅读
  2. 源码编译构建LAMP

    2024-07-10 01:10:01       16 阅读
  3. 网络安全筑基篇——反序列化漏洞

    2024-07-10 01:10:01       19 阅读
  4. 网络安全主动防御技术与应用

    2024-07-10 01:10:01       20 阅读
  5. 手写Spring MVC中DispatcherServlet与核心组件底层

    2024-07-10 01:10:01       21 阅读
  6. 移动端Vant-list的二次封装,查询参数重置

    2024-07-10 01:10:01       26 阅读
  7. @SpringBootApplication 注解

    2024-07-10 01:10:01       24 阅读
  8. 整车行业APS项目难点(我的APS项目九)

    2024-07-10 01:10:01       22 阅读
  9. 7月07日,每日信息差

    2024-07-10 01:10:01       25 阅读
  10. 定义变量和声明变量、定义类和声明类

    2024-07-10 01:10:01       24 阅读
  11. 2024第三届中国医疗机器人大会第一轮通知

    2024-07-10 01:10:01       16 阅读
  12. 反向业务判断逻辑

    2024-07-10 01:10:01       21 阅读