post_p_thre=args.thre, gpu_id=0, imageH=960, imageW=480) img_folder = pathlib.Path(args.input_folder) for img_path in tqdm(get_file_list(args.input_folder, p_postfix=['.jpg'])): img = cv2.imread(img_path) # if img.shape[0] /img.shape[1] > 2 or img.shape[1]/img.shape[0] > 2: # continue preds, boxes_list, score_list, t = model.predict( img_path, is_output_polygon=args.polygon, runtime='trt') print('time cost: {}s'.format(t)) crops = crop_bbox(img[:, :, ::-1], boxes_list) img = draw_bbox(img[:, :, ::-1], boxes_list) if args.show: show_img(preds) show_img(img, title=os.path.basename(img_path)) plt.show() # 保存结果到路径 os.makedirs(args.output_folder, exist_ok=True) img_path = pathlib.Path(img_path) output_path = os.path.join(args.output_folder, img_path.stem + '_result.jpg') pred_path = os.path.join(args.output_folder, img_path.stem + '_pred.jpg') cv2.imwrite(output_path, img[:, :, ::-1]) cv2.imwrite(pred_path, preds * 255) for i, crop in enumerate(crops): cv2.imwrite( os.path.join(args.output_folder, img_path.stem + '_text_{:02d}.jpg'.format(i)),
tensor = tensor.unsqueeze_(0) tensor = tensor.to(self.device) with torch.no_grad(): start = time.time() preds = self.net(tensor)[0] preds[:2] = torch.sigmoid(preds[:2]) preds = preds.cpu().numpy() t = time.time() - start return preds, t if __name__ == '__main__': import matplotlib.pyplot as plt from utils.util import show_img os.environ['CUDA_VISIBLE_DEVICES'] = str('2') model_path = 'output/PAN_resnet18/checkpoint/model_best.pth' # model_path = 'output/psenet_icd2015_new_loss/final.pth' img_id = 10 img_path = '/data1/ocr/icdar2015/test/img/img_{}.jpg'.format(img_id) # 初始化网络 show_img(cv2.imread(img_path)[:, :, ::-1], color=True) model = Pytorch_model(model_path, gpu_id=0) preds, t = model.predict(img_path) show_img(preds) plt.show()
import matplotlib.pyplot as plt from torchvision import transforms train_data = ImageDataset(data_list=[ (r'E:/zj/dataset/icdar2015/train/img/img_15.jpg', 'E:/zj/dataset/icdar2015/train/gt/gt_img_15.txt') ], input_size=640, img_channel=3, shrink_ratio=0.5, transform=transforms.ToTensor()) train_loader = DataLoader(dataset=train_data, batch_size=1, shuffle=False, num_workers=0) pbar = tqdm(total=len(train_loader)) for i, (img, shrink_label_map, threshold_label_map) in enumerate(train_loader): print(shrink_label_map.shape, shrink_label_map[0][0].max()) print(img.shape) print(shrink_label_map[0][-1].sum()) # pbar.update(1) show_img((img[0].to(torch.float)).numpy().transpose(1, 2, 0), color=True) show_img((shrink_label_map[0].to(torch.float)).numpy(), color=False) show_img((threshold_label_map[0].to(torch.float)).numpy(), color=False) plt.show() pbar.close()
torch.cuda.synchronize(self.device) box_list, score_list = self.post_process(batch, preds) box_list, score_list = box_list[0], score_list[0] if len(box_list) > 0: idx = box_list.reshape(box_list.shape[0], -1).sum(axis=1) > 0 box_list, score_list = box_list[idx], score_list[idx] else: box_list, score_list = [], [] t = time.time() - start return preds[0, 0, :, :].detach().cpu().numpy(), box_list, t if __name__ == '__main__': import matplotlib.pyplot as plt from utils.util import show_img, draw_bbox os.environ['CUDA_VISIBLE_DEVICES'] = str('0') model_path = '../output/DBNet_resnet18_FPN_DBHead/checkpoint/DBNet_latest.pth' img_id = 10 img_path = 'E:/zj/dataset/icdar2015/test/img/img_{}.jpg'.format(img_id) # 初始化网络 model = Pytorch_model(model_path, gpu_id=0) preds, boxes_list, t = model.predict(img_path) show_img(preds) img = draw_bbox(cv2.imread(img_path)[:, :, ::-1], boxes_list) show_img(img) plt.show()
if __name__ == '__main__': import torch from utils.util import show_img from tqdm import tqdm import matplotlib.pyplot as plt from torchvision import transforms train_data = ImageDataset( data_list=[ (r'/data1/zj/ocr/icdar2015/train/img/img_713.jpg', '/data1/zj/ocr/icdar2015/train/gt/gt_img_713.txt')], input_size=640, img_channel=3, shrink_ratio=0.5, transform=transforms.ToTensor() ) train_loader = DataLoader(dataset=train_data, batch_size=1, shuffle=False, num_workers=0) pbar = tqdm(total=len(train_loader)) for i, (img, label, mask) in enumerate(train_loader): print(label.shape, label[0][0].max()) print(img.shape) print(label[0][-1].sum()) print(mask[0].shape) # pbar.update(1) show_img((img[0] * mask[0].to(torch.float)).numpy().transpose(1, 2, 0), color=True) show_img(label[0]) show_img(mask[0]) plt.show() pbar.close()
with torch.no_grad(): start = time.time() preds = self.net(tensor)[0] print('net time:', time.time() - start) preds, boxes_list = decode(preds) scale = (preds.shape[1] / w, preds.shape[0] / h) if len(boxes_list): boxes_list = boxes_list / scale t = time.time() - start return preds, boxes_list, t if __name__ == '__main__': import matplotlib.pyplot as plt from utils.util import show_img, draw_bbox os.environ['CUDA_VISIBLE_DEVICES'] = str('0') model_path = 'output/PAN_pred_mask_resnet50/checkpoint/model_best.pth' img_id = 10 img_path = 'E:/zj/dataset/icdar2015/test/img/img_{}.jpg'.format(img_id) # 初始化网络 model = Pytorch_model(model_path, gpu_id=None) preds, boxes_list, t = model.predict(img_path) show_img(preds) img = draw_bbox(cv2.imread(img_path)[:, :, ::-1], boxes_list) show_img(img, color=True) plt.show()
train_data = ImageDataset( data_list=[ (r'/home1/surfzjy/data/ic13/train_images/100.jpg', '/home1/surfzjy/data/ic13/train_gts/100.txt')], input_size=640, img_channel=3, shrink_ratio=0.4, transform=transforms.ToTensor() ) train_loader = DataLoader(dataset=train_data, batch_size=1, shuffle=False, num_workers=0) pbar = tqdm(total=len(train_loader)) for i, (img, label, mask, G_d) in enumerate(train_loader): print('==========shape=============') print(img.shape) print(label.shape) print(mask.shape) print(G_d.shape) print('AAAAAAAAAAAAAAAAAAAAAAAAAAAA') print(label.shape, label[0][0].max()) # torch.Size([1, 2, 640, 640]) tensor(1.) print(img.shape) # torch.Size([1, 3, 640, 640]) print(label[0][-1].sum()) print(mask[0].shape) # pbar.update(1) show_img(label[0]) # show_img(mask[0] * 255) show_img(G_d[0] * 255) plt.show() pbar.close()
start = time.time() preds = self.net(tensor)[0] if str(self.device).__contains__('cuda'): torch.cuda.synchronize(self.device) preds, boxes_list = decode(preds) scale = (preds.shape[1] / w, preds.shape[0] / h) if len(boxes_list): boxes_list = boxes_list / scale t = time.time() - start return preds, boxes_list, t if __name__ == '__main__': import matplotlib.pyplot as plt from utils.util import show_img, draw_bbox os.environ['CUDA_VISIBLE_DEVICES'] = str('0') model_path = 'output/PAN_shufflenetv2_FPEM_FFM.pth' img_path = "/big_disk/evjeny/data/perimetry_cut_circles/0.jpg" # 初始化网络 model = Pytorch_model(model_path, gpu_id=0) preds, boxes_list, t = model.predict(img_path) show_img(preds) img = draw_bbox(cv2.imread(img_path)[:, :, ::-1], boxes_list) # show_img(img, color=True) # plt.show() cv2.imwrite("result.jpg", img)