201 lines
5.1 KiB
Python
201 lines
5.1 KiB
Python
filetree_l = '''
|
|
apps:
|
|
- mocap:
|
|
- run.py
|
|
myeasymocap:
|
|
- datasets:
|
|
- basedata.py
|
|
- mv1p.py
|
|
- sv1p.py
|
|
io:
|
|
- model.py
|
|
- video.py
|
|
- vis.py
|
|
- vis3d.py
|
|
- write.py
|
|
operations:
|
|
- init.py
|
|
- loss.py
|
|
- match.py
|
|
- merge.py
|
|
- optimizer.py
|
|
- select.py
|
|
- smooth.py
|
|
- triangulate.py
|
|
- match_base.py
|
|
- iterative_triangulate.py
|
|
stages:
|
|
- basestage.py
|
|
- collect.py
|
|
backbone:
|
|
- basetopdown.py
|
|
- topdown_keypoints.py
|
|
- yolo:
|
|
- yolo.py
|
|
vitpose:
|
|
- layers.py
|
|
- vit_moe.py
|
|
hrnet:
|
|
- __init__.py
|
|
- modules.py
|
|
- hrnet.py
|
|
- myhrnet.py
|
|
pare:
|
|
- pare.py
|
|
- config.py
|
|
- constants.py
|
|
- backbone:
|
|
- __init__.py
|
|
- resnet.py
|
|
- mobilenet.py
|
|
- hrnet.py
|
|
- utils.py
|
|
head:
|
|
- __init__.py
|
|
- pare_head.py
|
|
- hmr_head.py
|
|
- smpl_head.py
|
|
- smpl_cam_head.py
|
|
layers:
|
|
- __init__.py
|
|
- locallyconnected2d.py
|
|
- interpolate.py
|
|
- nonlocalattention.py
|
|
- keypoint_attention.py
|
|
- coattention.py
|
|
- softargmax.py
|
|
- non_local:
|
|
- __init__.py
|
|
- dot_product.py
|
|
utils:
|
|
- geometry.py
|
|
- kp_utils.py
|
|
mediapipe:
|
|
- hand.py
|
|
hand2d:
|
|
- __init__.py
|
|
- hand2d.py
|
|
- resnet.py
|
|
hmr:
|
|
- __init__.py
|
|
- hmr.py
|
|
- models.py
|
|
- hmr_api.py
|
|
config:
|
|
- datasets:
|
|
- mvimage.yml
|
|
- svimage.yml
|
|
mv1p:
|
|
- detect_triangulate.yml
|
|
- detect_triangulate_fitSMPL.yml
|
|
- detect_hand_triangulate.yml
|
|
- detect_hand_triangulate_fitMANO.yml
|
|
1v1p:
|
|
- hrnet_pare_finetune.yml
|
|
- hand_detect_finetune.yml
|
|
- fixhand.yml
|
|
'''
|
|
|
|
filetree_e = '''
|
|
3rdparty:
|
|
- eigen-3.3.7
|
|
- pybind11
|
|
library:
|
|
- pymatch:
|
|
- setup.py
|
|
- CMakeLists.txt
|
|
- python:
|
|
- __init__.py
|
|
- CMakeLists.txt
|
|
- pymatchlr.cpp
|
|
- include:
|
|
- base.h
|
|
- projfunc.hpp
|
|
- Timer.hpp
|
|
- visualize.hpp
|
|
- matchSVT.hpp
|
|
- pymatchlr:
|
|
- __init__.py
|
|
apps:
|
|
- calibration:
|
|
- vis_camera_by_open3d.py
|
|
easymocap:
|
|
- multistage:
|
|
- gmm.py
|
|
- gmm_08.pkl
|
|
mytools:
|
|
- vis_base.py
|
|
- camera_utils.py
|
|
'''
|
|
|
|
sync_config = {
|
|
'EasyMocap': {
|
|
'src': '../EasyMocapPublic',
|
|
'dst': '.',
|
|
'filetree': filetree_e
|
|
},
|
|
'Learn': {
|
|
'src': '../Learning_EasyMocap',
|
|
'dst': '.',
|
|
'filetree': filetree_l
|
|
}
|
|
}
|
|
import os
|
|
import shutil
|
|
import yaml
|
|
from os.path import join
|
|
from easymocap.mytools.debug_utils import log, mywarn
|
|
|
|
def compare_files(file1, file2):
|
|
with open(file1, 'r') as f1, open(file2, 'r') as f2:
|
|
content1 = f1.read()
|
|
content2 = f2.read()
|
|
if content1 == content2:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
def copy_node(dir, nodes):
|
|
for node in nodes:
|
|
if isinstance(node, str):
|
|
srcname = join(SRC, dir, node)
|
|
dstname = join(DST, dir, node)
|
|
if not os.path.exists(srcname):
|
|
mywarn('Not exists {}'.format(srcname))
|
|
continue
|
|
if os.path.exists(dstname):
|
|
if os.path.isdir(srcname):
|
|
mywarn('Current not support overwrite folders: {}'.format(dstname))
|
|
else:
|
|
if compare_files(srcname, dstname):
|
|
pass
|
|
else:
|
|
mywarn('Overwrite file: {}'.format(dstname))
|
|
shutil.copyfile(srcname, dstname)
|
|
else:
|
|
if os.path.isdir(srcname):
|
|
log('Copy dir: {}'.format(dstname))
|
|
shutil.copytree(srcname, dstname)
|
|
else:
|
|
os.makedirs(join(DST, dir), exist_ok=True)
|
|
log('Copy file: {}'.format(dstname))
|
|
shutil.copyfile(srcname, dstname)
|
|
elif isinstance(node, dict):
|
|
for subdir, subnode in node.items():
|
|
copy_node(join(dir, subdir), subnode)
|
|
|
|
if __name__ == '__main__':
|
|
for cfg_name, cfg in sync_config.items():
|
|
SRC = cfg['src']
|
|
DST = cfg['dst']
|
|
filetree = cfg['filetree']
|
|
filetree = yaml.safe_load(filetree)
|
|
SRC = os.path.abspath(SRC)
|
|
DST = os.path.abspath(DST)
|
|
os.chdir(SRC)
|
|
cmd = 'git pull origin master'
|
|
os.system(cmd)
|
|
os.chdir(DST)
|
|
for dir, files in filetree.items():
|
|
copy_node(dir, files)
|