python - 在 Caffe 中的单独线程中预取数据

标签 python multithreading caffe prefetch pycaffe

目前我正在使用 Python 中的 Caffe 处理 3D 体积数据。我总共有 25 卷,我必须从每一卷中提取子卷,并通过卷积网络将它们输入。问题是可能有数千个这样的卷,目前我将它们保存在 hdf5 文件中,它工作正常,但使用大量硬盘。另外,我计划即时进行一些数据增强,因此我认为最好使用预取技术,以便在单独的线程中加载数据而不阻塞训练。我想要这样的东西:

dataqueue=Queue
pool = Pool(processes=3)

#here I want to do this in groups of say 3 because each volume is very big

for idx,namepatient in enumerate(patients):
    pool.apply_async(workerv1,args=(idx,namepatient,path_patients,volsz,destres,samplesperpatient,dirname))

for i in xrange(iterations):
  net.blobs['data'].data[0:sizebatch,...] =dataqueue.get()
  solver.step(1)

所以基本上我想要一些线程不断向队列提供数据,但不会阻塞主线程进行训练。在馈送数据线程中,如果可能的话,我应该进行子体积采样和增强。有人可以指导我如何实现这一点吗? 我检查过这个例子https://github.com/rbgirshick/py-faster-rcnn/blob/master/lib/roi_data_layer/layer.py但它只加载一张图像并将其放入队列中。提前致谢。

最佳答案

如果您希望同时处理多个子卷,则可以启动一个单独的线程进行尝试,并启动一个单独的多用途池来进行数据预取和扩充。我的解释可能有点简洁。您可能想看看LRCN Video Data如果你想详细了解它是如何完成的。

关于python - 在 Caffe 中的单独线程中预取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150575/

相关文章:

python - pyAudio中生成的声音在Pygame中不起作用

python - 队列和多处理

image - 平均图像减法是如何工作的?

linux - 如何避免 cmake 读取其 "system cache"$HOME/.cmake/

neural-network - 与 caffe 相比,pycaffe 的训练有多好?

python - 如何使用 Paramiko 获取 SSH 返回码?

python - 混合模式 CSV 导入 Pyspark

python - 在调用函数时如何防止 GUI 卡住? (PyQT4, Python3)

multithreading - JBoss netty : How can I integrate a Telnet connection in a separate thread?

python - 在保留属性的同时使用 lxml.objectify 替换节点文本