Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • Issue
  • #16181

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板
已关闭
开放中
Opened 3月 13, 2019 by saxon_zh@saxon_zhGuest

目标检测的数据读取换成其他的数据,占用的内存无限上升

Created by: yeyupiaoling

环境

  • PaddlePaddle 1.2 GPU
  • Ubuntu 16.04
  • Python 3.5

问题

我把目标检测中的VOC数据集换成其他的数据集后:https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleCV/object_detection/reader.py

发现在读取数据的时候占用的内存一直上升,单纯是读取文件数据,我已经把训练的代码注释掉了,可以确认是在读取数据的时候就不断占用内存。

我修改成同步读取数据的方式,还是卡死。

数据的是一个人脸数据集,一直只标记一个人脸位置。其他的我没觉得有什么问题。

以下代码片段是我修改成同步读取数据的方式,同样是读取数据过程中卡死:

def face_dataset(settings, model, file_path):
    def reader():
        with open(file_path, 'r') as f:
            file_list = f.readlines()
        np.random.shuffle(file_list)
        for l in file_list:
            image_path, label, bbox = l.split('\t')

            bboxs = bbox.split(',')
            image_path = os.path.join(settings.data_dir, image_path)
            im = Image.open(image_path)
            if im.mode == 'L':
                im = im.convert('RGB')
            im_width, im_height = im.size
            bbox_labels = []
            bbox_sample = []
            # start from 1
            bbox_sample.append(float(label))
            bbox_sample.append(float(bboxs[0]) / im_width)
            bbox_sample.append(float(bboxs[1]) / im_height)
            bbox_sample.append(float(bboxs[2]) / im_width)
            bbox_sample.append(float(bboxs[3]) / im_height)
            bbox_labels.append(bbox_sample)

            im, sample_labels = preprocess(im, bbox_labels, model, settings)
            im = im.astype('float32')
            if model == 'train' and len(sample_labels) == 0:
                continue
            sample_labels = np.array(sample_labels)
            boxes = sample_labels[:, 1:5]
            lbls = sample_labels[:, 0].astype('int32')

            yield im, boxes, lbls

    return reader


def train(settings, file_list):
    file_path = os.path.join(settings.data_dir, file_list)
    model = 'train'

    return face_dataset(settings, model, file_path)


def test(settings, file_list):
    file_path = os.path.join(settings.data_dir, file_list)
    model = 'test'

    return face_dataset(settings, model, file_path)
指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/Paddle#16181
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7