현재 Caffe에서 3D 체적 데이터로 작업하고 있습니다. 전체적으로 볼 때 25 권이 있으며, 각 권에서 서브 볼륨을 가져 와서 컨볼 루션 네트워크를 통해 공급해야합니다. 문제는 수천 개의 볼륨이있을 수 있으며 현재 하드 디스크를 많이 사용하는 hdf5 파일에 저장하는 것입니다. 또한 일부 데이터 확장 작업을 수행 할 계획이므로 훈련을 차단하지 않고 별도의 스레드에서 데이터를로드하기 위해 프리 페치 기술을 사용하는 것이 더 좋습니다.Caffe의 별도 스레드에서 데이터를 프리 페치
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입니다. 그러나 하나의 이미지 만로드하여 큐에 넣습니다. 미리 감사드립니다.