PaddleSeg图像分割源码疑问
inhumanday 发布于2021-03 浏览:1271 回复:2
0
收藏

有无佬儿讲解一下,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条回复 最后由inhumanday回复于2021-03
#3inhumanday回复于2021-03

已经弄明白了,打扰了

 

0
#2inhumanday回复于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
TOP
切换版块