|
import os |
|
import torchvision.transforms as T |
|
import cv2 |
|
from tqdm import tqdm |
|
import detection.transforms as transforms |
|
from dataloaders import get_direction |
|
|
|
def generate_predictions_bilateral(model,device,testpath_,cor_dict,dset='aiims',preds_folder='preds_new'): |
|
transform = T.Compose([T.ToPILImage(),T.ToTensor()]) |
|
model.eval() |
|
for label in ['mal','ben']: |
|
testpath = os.path.join(testpath_,label) |
|
|
|
testimg = os.path.join(testpath, 'images') |
|
|
|
|
|
os.makedirs(os.path.join(testpath, preds_folder),exist_ok=True) |
|
|
|
if not os.path.exists(os.path.join(testpath,preds_folder)): |
|
os.makedirs(os.path.join(testpath+preds_folder),exist_ok = True) |
|
|
|
for file in tqdm(os.listdir(testimg)): |
|
img1 = cv2.imread(os.path.join(testimg,file)) |
|
img1 = transform(img1) |
|
|
|
if(os.path.join(testimg,file) in cor_dict and os.path.isfile(cor_dict[os.path.join(testimg,file)])): |
|
print('Using Bilateral') |
|
img2 = cv2.imread(cor_dict[os.path.join(testimg,file)]) |
|
img2 = transform(img2) |
|
if(get_direction(dset,file)==1): |
|
img1,_ = transforms.RandomHorizontalFlip(1.0)(img1) |
|
|
|
images = [img1.to(device),img2.to(device)] |
|
output = model([images])[0] |
|
img1,output = transforms.RandomHorizontalFlip(1.0)(img1,output) |
|
else: |
|
img2,_ = transforms.RandomHorizontalFlip(1.0)(img2) |
|
|
|
images = [img1.to(device),img2.to(device)] |
|
output = model([images])[0] |
|
else: |
|
print('Using FRCNN') |
|
output = model.frcnn([img1.to(device)])[0] |
|
|
|
boxes = output['boxes'] |
|
scores = output['scores'] |
|
labels = output['labels'] |
|
f = open(os.path.join(testpath,preds_folder,file[:-4]+'.txt'),'w') |
|
for i in range(len(boxes)): |
|
box = boxes[i].detach().cpu().numpy() |
|
|
|
f.write('{} {} {} {} {}\n'.format(scores[i].item(),box[0],box[1],box[2],box[3])) |
|
|
|
|
|
def generate_predictions(model,device,testpath_,preds_folder='preds_frcnn'): |
|
transform = T.Compose([T.ToPILImage(),T.ToTensor()]) |
|
model.eval() |
|
for label in ['mal','ben']: |
|
testpath = os.path.join(testpath_,label) |
|
|
|
testimg = os.path.join(testpath, 'images') |
|
|
|
|
|
os.makedirs(os.path.join(testpath, preds_folder),exist_ok=True) |
|
|
|
if not os.path.exists(os.path.join(testpath,preds_folder)): |
|
os.makedirs(os.path.join(testpath+preds_folder),exist_ok = True) |
|
|
|
for file in tqdm(os.listdir(testimg)): |
|
im = cv2.imread(os.path.join(testimg,file)) |
|
if file == 'Mass-Training_P_00444_LEFT_CC.png': |
|
print('Test this') |
|
continue |
|
im = transform(im) |
|
|
|
output = model([im.to(device)])[0] |
|
boxes = output['boxes'] |
|
scores = output['scores'] |
|
labels = output['labels'] |
|
f = open(os.path.join(testpath,preds_folder,file[:-4]+'.txt'),'w') |
|
for i in range(len(boxes)): |
|
box = boxes[i].detach().cpu().numpy() |
|
f.write('{} {} {} {} {}\n'.format(scores[i].item(),box[0],box[1],box[2],box[3])) |
|
|