diff --git a/forwardOnBigImages.py b/forwardOnBigImages.py new file mode 100644 index 0000000..aea5867 --- /dev/null +++ b/forwardOnBigImages.py @@ -0,0 +1,30 @@ +import numpy as np +import networkTraining.cropRoutines as cropRoutines +import torch + +def targetCoords(sourceCoords,validCoords): + cc=sourceCoords + vc=validCoords + tc=[] + for i in range(len(cc)): + tc.append(slice(cc[i].start+vc[i].start,cc[i].start+vc[i].stop)) + return tc + +def processChunk(inChunk,cropSize,marginSize,startDim,net,outChannels=None): + nc=cropRoutines.noCrops(inChunk.shape,cropSize,marginSize,startDim) + size=np.array(inChunk.shape) + if outChannels: + size[1]=outChannels + outChunk=np.zeros(tuple(size)) + net.eval() + for i in range(nc): + cc,vc=cropRoutines.cropCoords(i,cropSize,marginSize,inChunk.shape,startDim) + tc=targetCoords(cc,vc) + crop=inChunk[tuple(cc)] + o=net.forward(torch.from_numpy(crop).cuda()) + print("osize",o.size()) + print("vc",vc) + print("outchunksize",outChunk.shape) + print("tc",tc) + outChunk[tuple(tc)]=o.cpu().data.numpy()[tuple(vc)] + return outChunk diff --git a/myCrop.py b/myCrop.py new file mode 100644 index 0000000..8f98da3 --- /dev/null +++ b/myCrop.py @@ -0,0 +1,18 @@ +import numpy as np + +def myCrop(img,inds,fill=0): + outsize=[] + dstinds=[] + srcinds=[] + for k in range(len(inds)): + srcbeg=max(0,inds[k].start) + srcend=min(img.shape[k],inds[k].stop) + dstbeg=max(0,-inds[k].start) + dstend=dstbeg+srcend-srcbeg + dstinds.append(slice(dstbeg,dstend)) + srcinds.append(slice(srcbeg,srcend)) + outsize.append(inds[k].stop-inds[k].start) + crop=np.full(tuple(outsize),fill,img.dtype) + crop[tuple(dstinds)]=img[tuple(srcinds)] + return crop, dstinds +