Sapphire-356's picture
Change to the CPU version
aa34300
# import os
#
# os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
# os.environ["CUDA_VISIBLE_DEVICES"] = "1"
#
# import numpy as np
# from tqdm import tqdm
#
# from SPPE.src.main_fast_inference import *
# from dataloader import ImageLoader, DetectionLoader, DetectionProcessor, DataWriter, Mscoco
# from fn import getTime
# from opt import opt
# from pPose_nms import write_json
# from in_the_wild_data import split_frame
#
#
# def main(args):
# inputpath = args.inputpath
# inputlist = args.inputlist
# mode = args.mode
# if not os.path.exists(args.outputpath):
# os.makedirs(args.outputpath, exist_ok=True)
#
# if len(inputlist):
# im_names = open(inputlist, 'r').readlines()
# elif len(inputpath) and inputpath != '/':
# for root, dirs, files in os.walk(inputpath):
# im_names = [f for f in files if 'png' in f or 'jpg' in f]
# else:
# raise IOError('Error: must contain either --indir/--list')
#
# # Load input images
# data_loader = ImageLoader(im_names, batchSize=args.detbatch, format='yolo').start()
#
# # Load detection loader
# print('Loading YOLO model..')
# sys.stdout.flush()
# det_loader = DetectionLoader(data_loader, batchSize=args.detbatch).start()
# det_processor = DetectionProcessor(det_loader).start()
#
# # Load pose model
# pose_dataset = Mscoco()
# if args.fast_inference:
# pose_model = InferenNet_fast(4 * 1 + 1, pose_dataset)
# else:
# pose_model = InferenNet(4 * 1 + 1, pose_dataset)
# pose_model
# pose_model.eval()
#
# runtime_profile = {
# 'dt': [],
# 'pt': [],
# 'pn': []
# }
#
# # Init data writer
# writer = DataWriter(args.save_video).start()
#
# data_len = data_loader.length()
# im_names_desc = tqdm(range(data_len))
#
# batchSize = args.posebatch
# for i in im_names_desc:
# start_time = getTime()
# with torch.no_grad():
# (inps, orig_img, im_name, boxes, scores, pt1, pt2) = det_processor.read()
# if boxes is None or boxes.nelement() == 0:
# writer.save(None, None, None, None, None, orig_img, im_name.split('/')[-1])
# continue
#
# ckpt_time, det_time = getTime(start_time)
# runtime_profile['dt'].append(det_time)
# # Pose Estimation
#
# datalen = inps.size(0)
# leftover = 0
# if (datalen) % batchSize:
# leftover = 1
# num_batches = datalen // batchSize + leftover
# hm = []
# for j in range(num_batches):
# inps_j = inps[j * batchSize:min((j + 1) * batchSize, datalen)]
# hm_j = pose_model(inps_j)
# hm.append(hm_j)
# hm = torch.cat(hm)
# ckpt_time, pose_time = getTime(ckpt_time)
# runtime_profile['pt'].append(pose_time)
# hm = hm.cpu()
# writer.save(boxes, scores, hm, pt1, pt2, orig_img, im_name.split('/')[-1])
#
# ckpt_time, post_time = getTime(ckpt_time)
# runtime_profile['pn'].append(post_time)
#
# if args.profile:
# # TQDM
# im_names_desc.set_description(
# 'det time: {dt:.3f} | pose time: {pt:.2f} | post processing: {pn:.4f}'.format(
# dt=np.mean(runtime_profile['dt']), pt=np.mean(runtime_profile['pt']), pn=np.mean(runtime_profile['pn']))
# )
#
# print('===========================> Finish Model Running.')
# if (args.save_img or args.save_video) and not args.vis_fast:
# print('===========================> Rendering remaining images in the queue...')
# print('===========================> If this step takes too long, you can enable the --vis_fast flag to use fast rendering (real-time).')
# while writer.running():
# pass
# writer.stop()
# final_result = writer.results()
# write_json(final_result, args.outputpath)
#
#
# if __name__ == "__main__":
# args = opt
# args.dataset = 'coco'
# args.sp = True
# if not args.sp:
# torch.multiprocessing.set_start_method('forkserver', force=True)
# torch.multiprocessing.set_sharing_strategy('file_system')
#
# video_name = 'kobe'
#
# args.inputpath = f'../in_the_wild_data/split_{video_name}'
# if not os.listdir(args.inputpath):
# split_frame.split(f'../in_the_wild_data/{video_name}.mp4')
#
# args.outputpath = f'../in_the_wild_data/alphapose_{video_name}'
# args.save_img = True
#
# args.detbatch = 4
#
# main(args)