ckpt下载 deeplabv3_TensorFlow DeepLabV3 训练自己的数据分割模型

本文介绍了如何使用DeepLabV3+进行语义分割,展示了分割效果,并详细讲解了如何从标注数据到生成TFRecords,以及如何调整代码以适应自定义数据集,最后提供了训练模型的步骤。
摘要由CSDN通过智能技术生成

DeepLabV3+

deeplab v3+ 算是目前来说最先进的语义分割算法,尽管现在有精确到头发丝的分割方法:Soft Semantic Segmentation. 但谷歌开源了deeplabv3+,我们可以直接使用不同的backbone和数据集来训练我们自己的分割模型。如果你想做一个分割的应用,那这个方法再合适不过。

在开始之前,让我们看看我们能做到的分割效果:

当然出来cityspcapes数据集之外你也可以放许多其他的数据集。包括我自己的车道线数据集,分割效果也还不错,连左右车道线都能分割出来。接下来就教大家如何制作数据集吧。

数据集制作

首先这个数据集制作有个巨大的问题。假设你用labelme或者其他工具标注了你的数据,你的保存标注可能是polygon的点,也可能是mask。这里我推荐保存polygon,因为deeplab中使用的label是单通道以你的类别的id为像素值的标签,这也非常好理解。这里贴一个核心代码:

1import cv2

2import os

3import numpy as np

4import cv2

5import matplotlib.pyplot as plt

6

7cls_label_map = {

8    'background': 0,

9    'a': 1,

10    's': 2,

11    'f': 3,

12    'd': 4,

13    'j': 5,

14    'k': 6,

15    'l': 7,

16    'g': 8,

17    'p': 9,

18    'q': 10,

19    'o': 11,

20    'w': 12,

21    'h': 13,

22    '3': 14,

23}

24

25

26def gen_mask(polygons, img):

27    mask = np.zeros([img.shape[0], img.shape[1]], np.int32)

28    for p in polygons:

29        # cv2.polylines(img, p, 1, 255)

30        # fill polygon

31        pts = np.array(p[:-1])

32        cv2.fillPoly(mask, pts, cls_label_map[p[-1]])

33    return mask

这样返回就是label的mask。这个mask实际上是黑色的。咋一看like this:

仔细看是可以隐约看到车道线的。并且其实这里的车道先不止一种类别。

关于label

关于label有几点需要注意的,像素值就是label的index,从我的map也能看的出来。

除此之外没了。另外,如果你的类别里面没有ignore_label, 那就直接是idx和0,0就是背景。如果有ignore_l

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值