MaxPixels=340000*4# Max pixel in batch can have (to keep oom out of memory problems) if the image larger it will be resized.
#----------------------------------------Create reader for data set--------------------------------------------------------------------------------------------------------------
Reader=Reader.Reader(ImageDir=ImageDir,GTDir=GTDir,PredDir=PredDir,MaxSize=MaxSize,MaxPixels=MaxPixels, AnnotationFileType="png", ImageFileType="jpg", TrainingMode=True)
#---------------------Create and Initiate net and create optimizer------------------------------------------------------------------------------------
Net=NET_FCN.Net(NumClasses=2) # Create net and load pretrained encoder path
Net.load_state_dict(torch.load(Trained_model_path))
Net=Net.cuda()
Net.eval()
#--------------------------- Create logs files for saving loss during training----------------------------------------------------------------------------------------------------------
#..............Start Training loop: Main Training....................................................................
AVGLoss=-1# running average loss
DifIOU=[]
PredIOU=[]
RefinIOU=[]
for itr in range(1, np.min([9000, Reader.FileList.__len__()])):
    Imgs, GTMask, PredMask, IOU, IsThing = Reader.LoadSingleClean()
    print(IOU)
  #  if GTMask.mean()<0.05:continue
    if IOU[0]<0.25: continue
    Prob, Lb = Net.forward(Images=Imgs, InMask=PredMask)  # Run net inference and get prediction
    RefinePred=Prob[:,1,:,:].data.cpu().numpy()
    RefinePred=(RefinePred>0.5).astype(np.float32)
    InIOU=getIOU(GTMask,PredMask)
    OutIOU = getIOU(GTMask, RefinePred)
    RefinIOU.append(OutIOU)
    PredIOU.append(InIOU)
    DifIOU.append(OutIOU-InIOU)
    print("InMean=" + str(np.mean(PredIOU)) + " OutMean=" + str(np.mean(RefinIOU)) + str("  DifMean=") + str(np.mean(DifIOU)))
    print("InMedian=" + str(np.median(PredIOU)) + " OutMedian=" + str(np.median(RefinIOU)) + str("  DifMedian=") + str(np.median(DifIOU)))
#--------------------------
    # Imgs[:,:,:,0] *=1 - PredMask