hyhmrright
2019-05-31 e65c915e5bdbcca56b37aa13bcff4911beffbe37
change py2 to  py3
5个文件已添加
9个文件已修改
89 ■■■■ 已修改文件
code/test_alexnet.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code/test_hopenet.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code/test_on_video.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code/test_on_video_dlib.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code/test_on_video_dockerface.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code/test_resnet50_regression.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code/train_alexnet.py 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code/train_hopenet.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code/train_resnet50_regression.py 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
demo.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/mmod_human_face_detector.dat 补丁 | 查看 | 原始文档 | blame | 历史
snapshots/hopenet_alpha1.pkl 补丁 | 查看 | 原始文档 | blame | 历史
snapshots/hopenet_alpha2.pkl 补丁 | 查看 | 原始文档 | blame | 历史
snapshots/hopenet_robust_alpha1.pkl 补丁 | 查看 | 原始文档 | blame | 历史
code/test_alexnet.py
@@ -45,12 +45,12 @@
    model = hopenet.AlexNet(66)
    print 'Loading snapshot.'
    print('Loading snapshot.')
    # Load snapshot
    saved_state_dict = torch.load(snapshot_path)
    model.load_state_dict(saved_state_dict)
    print 'Loading data.'
    print('Loading data.')
    transformations = transforms.Compose([transforms.Scale(224),
    transforms.CenterCrop(224), transforms.ToTensor(),
@@ -73,7 +73,7 @@
    elif args.dataset == 'AFW':
        pose_dataset = datasets.AFW(args.data_dir, args.filename_list, transformations)
    else:
        print 'Error: not a valid dataset name'
        print('Error: not a valid dataset name')
        sys.exit()
    test_loader = torch.utils.data.DataLoader(dataset=pose_dataset,
                                               batch_size=args.batch_size,
@@ -81,7 +81,7 @@
    model.cuda(gpu)
    print 'Ready to test network.'
    print ('Ready to test network.')
    # Test the Model
    model.eval()  # Change model to 'eval' mode (BN uses moving mean/var).
code/test_hopenet.py
@@ -46,12 +46,12 @@
    # ResNet50 structure
    model = hopenet.Hopenet(torchvision.models.resnet.Bottleneck, [3, 4, 6, 3], 66)
    print 'Loading snapshot.'
    print('Loading snapshot.')
    # Load snapshot
    saved_state_dict = torch.load(snapshot_path)
    model.load_state_dict(saved_state_dict)
    print 'Loading data.'
    print('Loading data.')
    transformations = transforms.Compose([transforms.Scale(224),
    transforms.CenterCrop(224), transforms.ToTensor(),
@@ -74,7 +74,7 @@
    elif args.dataset == 'AFW':
        pose_dataset = datasets.AFW(args.data_dir, args.filename_list, transformations)
    else:
        print 'Error: not a valid dataset name'
        print('Error: not a valid dataset name')
        sys.exit()
    test_loader = torch.utils.data.DataLoader(dataset=pose_dataset,
                                               batch_size=args.batch_size,
@@ -82,7 +82,7 @@
    model.cuda(gpu)
    print 'Ready to test network.'
    print('Ready to test network.')
    # Test the Model
    model.eval()  # Change model to 'eval' mode (BN uses moving mean/var).
code/test_on_video.py
@@ -51,12 +51,12 @@
    # ResNet50 structure
    model = hopenet.Hopenet(torchvision.models.resnet.Bottleneck, [3, 4, 6, 3], 66)
    print 'Loading snapshot.'
    print('Loading snapshot.')
    # Load snapshot
    saved_state_dict = torch.load(snapshot_path)
    model.load_state_dict(saved_state_dict)
    print 'Loading data.'
    print('Loading data.')
    transformations = transforms.Compose([transforms.Scale(224),
    transforms.CenterCrop(224), transforms.ToTensor(),
@@ -64,7 +64,7 @@
    model.cuda(gpu)
    print 'Ready to test network.'
    print('Ready to test network.')
    # Test the Model
    model.eval()  # Change model to 'eval' mode (BN uses moving mean/var).
@@ -105,7 +105,7 @@
        line = line.split(' ')
        det_frame_num = int(line[0])
        print frame_num
        print(frame_num)
        # Stop at a certain frame number
        if frame_num > args.n_frames:
@@ -165,7 +165,7 @@
            pitch_predicted = torch.sum(pitch_predicted.data[0] * idx_tensor) * 3 - 99
            roll_predicted = torch.sum(roll_predicted.data[0] * idx_tensor) * 3 - 99
            # Print new frame with cube and axis
            # print(new frame with cube and axis
            txt_out.write(str(frame_num) + ' %f %f %f\n' % (yaw_predicted, pitch_predicted, roll_predicted))
            # utils.plot_pose_cube(frame, yaw_predicted, pitch_predicted, roll_predicted, (x_min + x_max) / 2, (y_min + y_max) / 2, size = bbox_width)
            utils.draw_axis(frame, yaw_predicted, pitch_predicted, roll_predicted, tdx = (x_min + x_max) / 2, tdy= (y_min + y_max) / 2, size = bbox_height/2)
@@ -174,7 +174,7 @@
            # Peek next frame detection
            next_frame_num = int(bbox_line_list[idx+1].strip('\n').split(' ')[0])
            # print 'next_frame_num ', next_frame_num
            # print('next_frame_num ', next_frame_num
            if next_frame_num == det_frame_num:
                idx += 1
                line = bbox_line_list[idx].strip('\n').split(' ')
code/test_on_video_dlib.py
@@ -58,12 +58,12 @@
    # Dlib face detection model
    cnn_face_detector = dlib.cnn_face_detection_model_v1(args.face_model)
    print 'Loading snapshot.'
    print('Loading snapshot.')
    # Load snapshot
    saved_state_dict = torch.load(snapshot_path)
    model.load_state_dict(saved_state_dict)
    print 'Loading data.'
    print ('Loading data.')
    transformations = transforms.Compose([transforms.Scale(224),
    transforms.CenterCrop(224), transforms.ToTensor(),
@@ -71,13 +71,13 @@
    model.cuda(gpu)
    print 'Ready to test network.'
    print('Ready to test network.')
    # Test the Model
    model.eval()  # Change model to 'eval' mode (BN uses moving mean/var).
    total = 0
    idx_tensor = [idx for idx in xrange(66)]
    idx_tensor = [idx for idx in range(66)]
    idx_tensor = torch.FloatTensor(idx_tensor).cuda(gpu)
    video = cv2.VideoCapture(video_path)
@@ -103,7 +103,7 @@
    frame_num = 1
    while frame_num <= args.n_frames:
        print frame_num
        print(frame_num)
        ret,frame = video.read()
        if ret == False:
@@ -132,7 +132,7 @@
                x_min = max(x_min, 0); y_min = max(y_min, 0)
                x_max = min(frame.shape[1], x_max); y_max = min(frame.shape[0], y_max)
                # Crop image
                img = cv2_frame[y_min:y_max,x_min:x_max]
                img = cv2_frame[int(y_min):int(y_max),int(x_min):int(x_max)]
                img = Image.fromarray(img)
                # Transform
code/test_on_video_dockerface.py
@@ -51,12 +51,12 @@
    # ResNet50 structure
    model = hopenet.Hopenet(torchvision.models.resnet.Bottleneck, [3, 4, 6, 3], 66)
    print 'Loading snapshot.'
    print('Loading snapshot.')
    # Load snapshot
    saved_state_dict = torch.load(snapshot_path)
    model.load_state_dict(saved_state_dict)
    print 'Loading data.'
    print('Loading data.')
    transformations = transforms.Compose([transforms.Scale(224),
    transforms.CenterCrop(224), transforms.ToTensor(),
@@ -64,7 +64,7 @@
    model.cuda(gpu)
    print 'Ready to test network.'
    print('Ready to test network.')
    # Test the Model
    model.eval()  # Change model to 'eval' mode (BN uses moving mean/var).
@@ -105,7 +105,7 @@
        line = line.split(' ')
        det_frame_num = int(line[0])
        print frame_num
        print(frame_num)
        # Stop at a certain frame number
        if frame_num > args.n_frames:
@@ -166,7 +166,7 @@
                pitch_predicted = torch.sum(pitch_predicted.data[0] * idx_tensor) * 3 - 99
                roll_predicted = torch.sum(roll_predicted.data[0] * idx_tensor) * 3 - 99
                # Print new frame with cube and axis
                # print(new frame with cube and axis
                txt_out.write(str(frame_num) + ' %f %f %f\n' % (yaw_predicted, pitch_predicted, roll_predicted))
                # utils.plot_pose_cube(frame, yaw_predicted, pitch_predicted, roll_predicted, (x_min + x_max) / 2, (y_min + y_max) / 2, size = bbox_width)
                utils.draw_axis(frame, yaw_predicted, pitch_predicted, roll_predicted, tdx = (x_min + x_max) / 2, tdy= (y_min + y_max) / 2, size = bbox_height/2)
@@ -175,7 +175,7 @@
            # Peek next frame detection
            next_frame_num = int(bbox_line_list[idx+1].strip('\n').split(' ')[0])
            # print 'next_frame_num ', next_frame_num
            # print('next_frame_num ', next_frame_num
            if next_frame_num == det_frame_num:
                idx += 1
                line = bbox_line_list[idx].strip('\n').split(' ')
code/test_resnet50_regression.py
@@ -45,12 +45,12 @@
    model = hopenet.ResNet(torchvision.models.resnet.Bottleneck, [3, 4, 6, 3], 3)
    print 'Loading snapshot.'
    print('Loading snapshot.')
    # Load snapshot
    saved_state_dict = torch.load(snapshot_path)
    model.load_state_dict(saved_state_dict)
    print 'Loading data.'
    print('Loading data.')
    transformations = transforms.Compose([transforms.Scale(224),
    transforms.CenterCrop(224), transforms.ToTensor(),
@@ -73,7 +73,7 @@
    elif args.dataset == 'AFW':
        pose_dataset = datasets.AFW(args.data_dir, args.filename_list, transformations)
    else:
        print 'Error: not a valid dataset name'
        print('Error: not a valid dataset name')
        sys.exit()
    test_loader = torch.utils.data.DataLoader(dataset=pose_dataset,
                                               batch_size=args.batch_size,
@@ -81,7 +81,7 @@
    model.cuda(gpu)
    print 'Ready to test network.'
    print('Ready to test network.')
    # Test the Model
    model.eval()  # Change model to 'eval' mode (BN uses moving mean/var).
code/train_alexnet.py
@@ -94,7 +94,7 @@
    model = hopenet.AlexNet(66)
    load_filtered_state_dict(model, model_zoo.load_url(model_urls['alexnet']))
    print 'Loading data.'
    print('Loading data.')
    transformations = transforms.Compose([transforms.Scale(240),
    transforms.RandomCrop(224), transforms.ToTensor(),
@@ -115,7 +115,7 @@
    elif args.dataset == 'AFW':
        pose_dataset = datasets.AFW(args.data_dir, args.filename_list, transformations)
    else:
        print 'Error: not a valid dataset name'
        print('Error: not a valid dataset name')
        sys.exit()
    train_loader = torch.utils.data.DataLoader(dataset=pose_dataset,
                                               batch_size=batch_size,
@@ -137,7 +137,7 @@
                                  {'params': get_fc_params(model), 'lr': args.lr * 5}],
                                   lr = args.lr)
    print 'Ready to train network.'
    print('Ready to train network.')
    for epoch in range(num_epochs):
        for i, (images, labels, cont_labels, name) in enumerate(train_loader):
            images = Variable(images).cuda(gpu)
@@ -184,11 +184,11 @@
            optimizer.step()
            if (i+1) % 100 == 0:
                print ('Epoch [%d/%d], Iter [%d/%d] Losses: Yaw %.4f, Pitch %.4f, Roll %.4f'
                print('Epoch [%d/%d], Iter [%d/%d] Losses: Yaw %.4f, Pitch %.4f, Roll %.4f'
                       %(epoch+1, num_epochs, i+1, len(pose_dataset)//batch_size, loss_yaw.data[0], loss_pitch.data[0], loss_roll.data[0]))
        # Save models at numbered epochs.
        if epoch % 1 == 0 and epoch < num_epochs:
            print 'Taking snapshot...'
            print('Taking snapshot...')
            torch.save(model.state_dict(),
            'output/snapshots/' + args.output_string + '_epoch_'+ str(epoch+1) + '.pkl')
code/train_hopenet.py
@@ -96,7 +96,7 @@
        saved_state_dict = torch.load(args.snapshot)
        model.load_state_dict(saved_state_dict)
    print 'Loading data.'
    print('Loading data.')
    transformations = transforms.Compose([transforms.Scale(240),
    transforms.RandomCrop(224), transforms.ToTensor(),
@@ -119,7 +119,7 @@
    elif args.dataset == 'AFW':
        pose_dataset = datasets.AFW(args.data_dir, args.filename_list, transformations)
    else:
        print 'Error: not a valid dataset name'
        print('Error: not a valid dataset name')
        sys.exit()
    train_loader = torch.utils.data.DataLoader(dataset=pose_dataset,
@@ -142,7 +142,7 @@
                                  {'params': get_fc_params(model), 'lr': args.lr * 5}],
                                   lr = args.lr)
    print 'Ready to train network.'
    print('Ready to train network.')
    for epoch in range(num_epochs):
        for i, (images, labels, cont_labels, name) in enumerate(train_loader):
            images = Variable(images).cuda(gpu)
@@ -195,6 +195,6 @@
        # Save models at numbered epochs.
        if epoch % 1 == 0 and epoch < num_epochs:
            print 'Taking snapshot...'
            print('Taking snapshot...')
            torch.save(model.state_dict(),
            'output/snapshots/' + args.output_string + '_epoch_'+ str(epoch+1) + '.pkl')
code/train_resnet50_regression.py
@@ -87,7 +87,7 @@
    model = hopenet.ResNet(torchvision.models.resnet.Bottleneck, [3, 4, 6, 3], 3)
    load_filtered_state_dict(model, model_zoo.load_url('https://download.pytorch.org/models/resnet50-19c8e357.pth'))
    print 'Loading data.'
    print('Loading data.')
    transformations = transforms.Compose([transforms.Scale(240),
    transforms.RandomCrop(224), transforms.ToTensor(),
@@ -108,7 +108,7 @@
    elif args.dataset == 'AFW':
        pose_dataset = datasets.AFW(args.data_dir, args.filename_list, transformations)
    else:
        print 'Error: not a valid dataset name'
        print('Error: not a valid dataset name')
        sys.exit()
    train_loader = torch.utils.data.DataLoader(dataset=pose_dataset,
                                               batch_size=batch_size,
@@ -123,8 +123,8 @@
                                  {'params': get_fc_params(model), 'lr': args.lr * 5}],
                                   lr = args.lr)
    print 'Ready to train network.'
    print 'First phase of training.'
    print('Ready to train network.')
    print('First phase of training.')
    for epoch in range(num_epochs):
        for i, (images, labels, cont_labels, name) in enumerate(train_loader):
            images = Variable(images).cuda(gpu)
@@ -143,6 +143,6 @@
        # Save models at numbered epochs.
        if epoch % 1 == 0 and epoch < num_epochs:
            print 'Taking snapshot...'
            print('Taking snapshot...')
            torch.save(model.state_dict(),
            'output/snapshots/' + args.output_string + '_epoch_'+ str(epoch+1) + '.pkl')
demo.txt
New file
@@ -0,0 +1 @@
python code/test_on_video_dlib.py  --snapshot ./snapshots/hopenet_robust_alpha1.pkl --face_model ./models/mmod_human_face_detector.dat --video ./videos/out2.mp4 --output_string "something you want to add to the output video name and result file name" --n_frames 500 --fps 30
models/mmod_human_face_detector.dat
Binary files differ
snapshots/hopenet_alpha1.pkl
Binary files differ
snapshots/hopenet_alpha2.pkl
Binary files differ
snapshots/hopenet_robust_alpha1.pkl
Binary files differ