mirror of
https://github.com/alibaba/EasyCV.git
synced 2025-06-03 14:49:00 +08:00
53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
|
# Copyright (c) Alibaba, Inc. and its affiliates.
|
||
|
import os
|
||
|
|
||
|
from easycv.utils.constant import CACHE_DIR
|
||
|
from .commont import VOC_CFG, check_path_exists, download
|
||
|
|
||
|
|
||
|
# Check whether the data exists
|
||
|
def check_data_exists(name, target_dir, split):
|
||
|
root_path = os.path.join(target_dir, 'VOCdevkit', name.upper())
|
||
|
if os.path.exists(root_path):
|
||
|
return check_path_exists({'path': process_voc(root_path, split=split)})
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
|
||
|
# return abs path
|
||
|
def process_voc(path, split='train'):
|
||
|
if split == 'train':
|
||
|
return os.path.join(path, 'ImageSets/Main/train.txt')
|
||
|
else:
|
||
|
return os.path.join(path, 'ImageSets/Main/val.txt')
|
||
|
|
||
|
|
||
|
# xtract the data
|
||
|
def extract(name, file, target_dir=CACHE_DIR):
|
||
|
cmd = f'tar -xvf {file} -C {target_dir}'
|
||
|
print('begin Unpack.....................')
|
||
|
os.system(cmd)
|
||
|
print('Unpack is finished.....................')
|
||
|
|
||
|
|
||
|
def download_voc(name, split='train', target_dir=CACHE_DIR, **kwargs):
|
||
|
|
||
|
# Declare a global
|
||
|
global cfg
|
||
|
# Use it for testing
|
||
|
if kwargs.get('cfg'):
|
||
|
cfg = kwargs.get('cfg')
|
||
|
else:
|
||
|
cfg = VOC_CFG
|
||
|
|
||
|
if check_data_exists(name, target_dir, split):
|
||
|
return check_data_exists(name, target_dir, split)
|
||
|
|
||
|
# Start the download
|
||
|
file_path = download(cfg.get(name), target_dir=target_dir)
|
||
|
|
||
|
# began to unpack
|
||
|
extract(name, file_path, target_dir=target_dir)
|
||
|
|
||
|
return check_data_exists(name, target_dir, split)
|