def main(): # os.makedirs('sample', exist_ok=True) opt = TestOptions().parse() data_loader = CreateDataLoader(opt) dataset = data_loader.load_data() dataset_size = len(data_loader) print('# Inference images = %d' % dataset_size) model = create_model(opt) print(dataset) for i, data in enumerate(dataset): # add gaussian noise channel # wash the label t_mask = torch.FloatTensor( (data['label'].cpu().numpy() == 7).astype(np.float)) # # data['label'] = data['label'] * (1 - t_mask) + t_mask * 4 mask_clothes = torch.FloatTensor( (data['label'].cpu().numpy() == 4).astype(np.int)) mask_fore = torch.FloatTensor( (data['label'].cpu().numpy() > 0).astype(np.int)) img_fore = data['image'] * mask_fore img_fore_wc = img_fore * mask_fore all_clothes_label = changearm(data['label']) ############## Forward Pass ###################### fake_image, warped_cloth, refined_cloth = model( Variable(data['label'].cuda()), Variable(data['edge'].cuda()), Variable(img_fore.cuda()), Variable(mask_clothes.cuda()), Variable(data['color'].cuda()), Variable(all_clothes_label.cuda()), Variable(data['image'].cuda()), Variable(data['pose'].cuda()), Variable(data['image'].cuda()), Variable(mask_fore.cuda())) # Variable(im_data.cuda(), volatile=True) 처럼 volatile 옵션을 넣어서 기울기 계산을 안할 수 도 있음 # 그러면 메모리가 덜 사용되겠지? # make output folders output_dir = os.path.join(opt.results_dir, opt.phase) fake_image_dir = os.path.join(output_dir, 'try_on') os.makedirs(fake_image_dir, exist_ok=True) warped_cloth_dir = os.path.join(output_dir, 'warped_cloth') os.makedirs(warped_cloth_dir, exist_ok=True) refined_cloth_dir = os.path.join(output_dir, 'refined_cloth') os.makedirs(refined_cloth_dir, exist_ok=True) # save output for j in range(opt.batchSize): print("Saving", data['name'][j]) util.save_tensor_as_image( fake_image[j], os.path.join(fake_image_dir, data['name'][j])) util.save_tensor_as_image( warped_cloth[j], os.path.join(warped_cloth_dir, data['name'][j])) util.save_tensor_as_image( refined_cloth[j], os.path.join(refined_cloth_dir, data['name'][j])) util.save_tensor_as_image( fake_image[j], os.path.join("../static/images/results", data['name'][j]))
def main(): opt = Options().parse() dataset = AlignedDataset(opt) dataloader = DataLoader(dataset, batch_size=opt.batchSize, shuffle=not opt.serial_batches, num_workers=int(opt.nThreads)) dataset_size = len(dataset) print(f'training images = {dataset_size}') model = Inference(opt) model = torch.nn.DataParallel(model, device_ids=opt.gpu_ids) for _, data in enumerate(dataloader): mask_clothes = torch.FloatTensor( (data['label'].cpu().numpy() == 4).astype(np.int)) mask_fore = torch.FloatTensor( (data['label'].cpu().numpy() > 0).astype(np.int)) img_fore = data['image'] * mask_fore all_clothes_label = changearm(data['label']) fake_image, warped_cloth, refined_cloth = model( data['label'].cuda(), data['edge'].cuda(), img_fore.cuda(), mask_clothes.cuda(), data['color'].cuda(), all_clothes_label.cuda(), data['image'].cuda(), data['pose'].cuda(), data['image'].cuda(), mask_fore.cuda()) # make output folders output_dir = os.path.join(opt.results_dir, opt.phase) fake_image_dir = os.path.join(output_dir, 'try-on') os.makedirs(fake_image_dir, exist_ok=True) warped_cloth_dir = os.path.join(output_dir, 'warped_cloth') os.makedirs(warped_cloth_dir, exist_ok=True) refined_cloth_dir = os.path.join(output_dir, 'refined_cloth') os.makedirs(refined_cloth_dir, exist_ok=True) # save output for j in range(opt.batchSize): name = data['path'][j].split('/')[-1] print("Saving", name) util.save_tensor_as_image(fake_image[j], os.path.join(fake_image_dir, name)) util.save_tensor_as_image(warped_cloth[j], os.path.join(warped_cloth_dir, name)) util.save_tensor_as_image(refined_cloth[j], os.path.join(refined_cloth_dir, name))
def main(): opt = Options().parse() dataset = AlignedDataset(opt) data = dataset.transform( '/home/dung/Project/AI/DeepFashion_Try_On/Data_preprocessing/ACGPN_traindata/train_img/000024_0.jpg', '/home/dung/Project/AI/DeepFashion_Try_On/Data_preprocessing/ACGPN_traindata/train_color/000052_1.jpg' ) model = Inference(opt) model = torch.nn.DataParallel(model, device_ids=opt.gpu_ids) mask_clothes = torch.FloatTensor( (data['label'].cpu().numpy() == 4).astype(np.int)) mask_fore = torch.FloatTensor( (data['label'].cpu().numpy() > 0).astype(np.int)) img_fore = data['image'] * mask_fore all_clothes_label = changearm(data['label']) fake_image, warped_cloth, refined_cloth = model( data['label'].cuda(), data['edge'].cuda(), img_fore.cuda(), mask_clothes.cuda(), data['color'].cuda(), all_clothes_label.cuda(), data['image'].cuda(), data['pose'].cuda(), data['image'].cuda(), mask_fore.cuda()) # make output folders output_dir = os.path.join(opt.results_dir, opt.phase) fake_image_dir = os.path.join(output_dir, 'try-on') os.makedirs(fake_image_dir, exist_ok=True) warped_cloth_dir = os.path.join(output_dir, 'warped_cloth') os.makedirs(warped_cloth_dir, exist_ok=True) refined_cloth_dir = os.path.join(output_dir, 'refined_cloth') os.makedirs(refined_cloth_dir, exist_ok=True) # save output for j in range(opt.batchSize): name = data['path'].split('/')[-1] print("Saving", name) util.save_tensor_as_image(fake_image[j], os.path.join(fake_image_dir, name)) util.save_tensor_as_image(warped_cloth[j], os.path.join(warped_cloth_dir, name)) util.save_tensor_as_image(refined_cloth[j], os.path.join(refined_cloth_dir, name))