python协程 读取文件_使用python的OpenCV读取文件花费的时间太长了-问答-阿里云开发者社区-阿里云...

系统:ubuntu 18.04 LTS Python: 3.6.8 OpenCV 3.4.4: cpu:英特尔i5-7300HQ cpu@2.50ghz,4核 gpu:nvidia GTX 1050 mobile (4gb) 我尝试使用PyTorch(1.3.1)训练一个简单的图像分类神经网络模型 我在一个文件夹中存储了一堆图片(35.000张照片,175.6mb)。 我走过所有的路:

def _get_imgs_paths(path):

_, _, imgs_paths = list(os.walk(path))[0]

return imgs_paths

在我调用另一个加载所有照片的函数后:

def _get_xys(path):

imgs_paths = DataSet._get_imgs_paths(path)

imgs_paths = sorted(imgs_paths)

cats_paths = list(filter(lambda path: 'cat' in path, imgs_paths))

dogs_paths = list(filter(lambda path: 'dog' in path, imgs_paths))

noise_paths = list(filter(lambda path: 'noise' in path, imgs_paths))

balanced_paths = []

for i in range(len(imgs_paths)):

if i % 3 == 0:

balanced_paths.append(cats_paths.pop())

elif i % 3 == 1:

balanced_paths.append(dogs_paths.pop())

else:

balanced_paths.append(noise_paths.pop())

xs = []

ys = []

**

for img_path in balanced_paths:

if 'cat' in img_path:

y = global_config.dataset.CAT

elif 'dog' in img_path:

y = global_config.dataset.DOG

elif 'noise' in img_path:

y = global_config.dataset.NOISE

else:

raise Exception('No such class')

ys.append(y)

// seems like this call causes the slowdown

img = cv2.imread(os.path.join(path, img_path))

r, g, b = cv2.split(img)

img = np.stack([r, g, b])

xs.append(img)

**

return xs, ys

现在开始:将图像写入内存的过程需要5分钟。这很荒谬,因为几天前一切都很快。有一天,我刚睡醒,开始检查夜间训练的结果,在什么再次启动了学习过程之后,我注意到这个巨大的减速。我不知道发生了什么。我点击Ctrl+C,得到以下回溯:

我做了好几次,它一直在这里。我打开htop,注意到: LMAO。我只是试图重现这个问题,令人惊讶的是,它做的一切都很完美,例如:相当快:

但是我停止了,再次运行,得到了我所说的问题。Htop: 谷歌说红色的D代表“不间断的睡眠”。 所以,问题是:这里发生了什么,为什么会发生? 问题来源StackOverflow 地址:/questions/59378710/reading-files-usin-pythons-opencv-takes-too-long

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值