首页 PaddleCV 帖子详情
有关PaddleSeg图像分割源码的疑惑
收藏
快速回复
PaddleCV 问答语义分割实例分割 558 2
有关PaddleSeg图像分割源码的疑惑
收藏
快速回复
PaddleCV 问答语义分割实例分割 558 2

有无佬儿讲解一下,PadddleSeg新版及近期的几个版本的源码里的 train.py 文件,具体位置在 PaddleSeg-release-v2.0.0-rc\paddleseg\core\train.py,我看这个文件里定义的 train 函数,在 .py 文件中的大概 120-130 行处,在加载训练集数据的时候对每个 batch 的 data 拆包得到了 3 个元素:images、labels 和 edges,如下图所示。我就有点不明白,为什么图像分割一个批次的数据拆包可以得到 3 个元素呢?不应该是两个元素,一个是 images,另一个是表示 batch 中每个图片各个像素对应位置属于哪一类的 单通道或者多通道整形张量 mask 吗?我说的 mask 和文件中的 labels 与 edges 都分别是什么关系呢?也有可能是我学艺不精,各位佬轻喷。

0
收藏
回复
全部评论(2)
时间顺序
Ronniee
#2 回复于2021-03

图中清晰代码如下:

    timer = Timer()
    avg_loss = 0.0
    iters_per_epoch = len(batch_sampler)
    best_mean_iou = -1.0
    best_model_iter = -1
    train_reader_cost = 0.0
    train_batch_cost = 0.0
    timer.start()

    iter = start_iter
    while iter < iters:
        for data in loader:
            iter += 1
            if iter > iters:
                break
            train_reader_cost += timer.elapsed_time()
            images = data[0]
            labels = data[1].astype('int64')
            edges = None
            if len(data) == 3:
                edges = data[2].astype('int64')

            if nranks > 1:
                logits_list = ddp_model(images)
            else:
                logits_list = model(images)
            loss = loss_computation(
                logits_list=logits_list,
                labels=labels,
                losses=losses,
                edges=edges)
            loss.backward()
0
回复
Ronniee
#3 回复于2021-03

 
 #3inhumanday回复于2021-03-07 22:01:04
已经弄明白了,打扰了(刷积分诀窍get)

(才不是)

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户