前提・実現したいこと
論文の再現実験を行っている際に,python3系を使わないといけない宣言が出てきました.
Githubに上がっている推奨環境はpython2系だったので,python2.7とcudaとtensorflowのバージョンが推奨環境にあっている物をdockerhubから取ってきて,docker内で作業をしています.
新しくpython3系をdocker内に入れることは可能でしょうか.
homebrew等が使えず,よくネットに上がっているものでは解決策が見当たりません.
docker等に関して完全な初心者なので,教えていただきたいです.
(\url:https://github.com/JunweiLiang/next-prediction/tree/master/code/prepare_data)
発生している問題・エラーメッセージ
$ ls anno_person_box/*/* |while read line;do videoname=$(basename $line .p); \ python3 deep-high-resolution-net.pytorch/tools/test.py --cfg \ deep-high-resolution-net.pytorch/experiments/coco/hrnet/w48_384x288_adam_lr1e-3.yaml \ TEST.MODEL_FILE pose_hrnet_w48_384x288.pth OUTPUT_DIR hrnet_kp_out/${videoname} \ VIDEONAME ${videoname} FRAMEPATH actev_all_video_frames/ TEST.USE_GT_BBOX False \ COCO_JSON person_keypoints_val2017.json TEST.COCO_BBOX_FILE \ anno_person_box_json/${videoname}.json TEST.BATCH_SIZE_PER_GPU 32 \ GPUS "(0,)" CHECK_IMG True;done
ここでのpython3は推奨環境ではなかったので,初めから混在させる必要があったみたいです.
該当のソースコード
python
1from __future__ import absolute_import 2from __future__ import division 3from __future__ import print_function 4 5import argparse 6import os 7import pprint 8 9import torch 10import torch.nn.parallel 11import torch.backends.cudnn as cudnn 12import torch.optim 13import torch.utils.data 14import torch.utils.data.distributed 15import torchvision.transforms as transforms 16 17import _init_paths 18from config import cfg 19from config import update_config 20from core.loss import JointsMSELoss 21from core.function import validate 22from utils.utils import create_logger 23 24import dataset 25import models 26 27def parse_args(): 28 parser = argparse.ArgumentParser(description='Train keypoints network') 29 # general 30 parser.add_argument('--cfg', 31 help='experiment configure file name', 32 required=True, 33 type=str) 34 35 parser.add_argument('opts', 36 help="Modify config options using the command-line", 37 default=None, 38 nargs=argparse.REMAINDER) 39 40 parser.add_argument('--modelDir', 41 help='model directory', 42 type=str, 43 default='') 44 parser.add_argument('--logDir', 45 help='log directory', 46 type=str, 47 default='') 48 parser.add_argument('--dataDir', 49 help='data directory', 50 type=str, 51 default='') 52 parser.add_argument('--prevModelDir', 53 help='prev Model directory', 54 type=str, 55 default='') 56 57 args = parser.parse_args() 58 return args 59 60def main(): 61 args = parse_args() 62 update_config(cfg, args) 63 64 logger, final_output_dir, tb_log_dir = create_logger( 65 cfg, args.cfg, 'valid') 66 67 logger.info(pprint.pformat(args)) 68 logger.info(cfg) 69 70 # cudnn related setting 71 cudnn.benchmark = cfg.CUDNN.BENCHMARK 72 torch.backends.cudnn.deterministic = cfg.CUDNN.DETERMINISTIC 73 torch.backends.cudnn.enabled = cfg.CUDNN.ENABLED 74 75 model = eval('models.'+cfg.MODEL.NAME+'.get_pose_net')( 76 cfg, is_train=False 77 ) 78 79 if cfg.TEST.MODEL_FILE: 80 logger.info('=> loading model from {}'.format(cfg.TEST.MODEL_FILE)) 81 model.load_state_dict(torch.load(cfg.TEST.MODEL_FILE), strict=False) 82 else: 83 model_state_file = os.path.join( 84 final_output_dir, 'final_state.pth' 85 ) 86 logger.info('=> loading model from {}'.format(model_state_file)) 87 model.load_state_dict(torch.load(model_state_file)) 88 89 model = torch.nn.DataParallel(model, device_ids=cfg.GPUS).cuda() 90 91 # define loss function (criterion) and optimizer 92 criterion = JointsMSELoss( 93 use_target_weight=cfg.LOSS.USE_TARGET_WEIGHT 94 ).cuda() 95 96 # Data loading code 97 normalize = transforms.Normalize( 98 mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225] 99 ) 100 valid_dataset = eval('dataset.'+cfg.DATASET.DATASET)( 101 cfg, cfg.DATASET.ROOT, cfg.DATASET.TEST_SET, False, 102 transforms.Compose([ 103 transforms.ToTensor(), 104 normalize, 105 ]) 106 ) 107 valid_loader = torch.utils.data.DataLoader( 108 valid_dataset, 109 batch_size=cfg.TEST.BATCH_SIZE_PER_GPU*len(cfg.GPUS), 110 shuffle=False, 111 num_workers=cfg.WORKERS, 112 pin_memory=True 113 ) 114 115 # evaluate on validation set 116 validate(cfg, valid_loader, valid_dataset, model, criterion, 117 final_output_dir, tb_log_dir) 118 119 120if __name__ == '__main__': 121 main() 122
試したこと
brewが使えないのでinstallの方法がわかりません,,
補足情報(FW/ツールのバージョンなど)
論文著者のGithubで推奨環境とされていたのは,python2.7,tensorflow1.10です.
tensorflowに合わせてcudaのバージョンも変えました.
docker imageのURL:https://hub.docker.com/r/juliojj/cuda10.0-keras-tf-py2-gpu
あなたの回答
tips
プレビュー