diff --git a/.gitignore b/.gitignore index 8ea01fa..8a50008 100644 --- a/.gitignore +++ b/.gitignore @@ -153,4 +153,6 @@ cython_debug/ # dataset 实验七/cache/ -实验七/models/ \ No newline at end of file +实验七/models/ +实验八/cache/ +实验八/models/ \ No newline at end of file diff --git a/实验八/1.get_dataset.py b/实验八/1.get_dataset.py new file mode 100644 index 0000000..cb0d643 --- /dev/null +++ b/实验八/1.get_dataset.py @@ -0,0 +1,77 @@ +import os +import requests +import tqdm +import tarfile + +# 计算大小 +def get_human_readable_size(size_in_bytes): + # 定义单位 + units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB'] + # 计算单位和大小 + index = 0 + while size_in_bytes >= 1024 and index < len(units) - 1: + size_in_bytes /= 1024 + index += 1 + return f"{size_in_bytes:.2f} {units[index]}" + +# 下载与进度条 +def download(url,output_path): + filename = url.split('/')[-1] + download_path = os.path.join(output_path,filename) + + response=requests.get(url,stream=True) + total_size = int(response.headers.get('content-length', 0)) + os.makedirs(output_path,exist_ok=True) + + print("下载 ",filename,' 到 ',output_path,' |大小= ',get_human_readable_size(total_size)) + + # 如已下载,跳过 + if os.path.exists(download_path): + print(filename, ' 已存在,跳过') + return + + with open(download_path,'wb') as file,tqdm.tqdm( + desc='下载进度', + total=total_size, + unit='B', + unit_scale=True, + unit_divisor=1024 + )as bar: + for chunk in response.iter_content(chunk_size=1024): + file.write(chunk) + bar.update(len(chunk)) + + +def decompress(file_path, output_dir): + os.makedirs(output_dir, exist_ok=True) + print('解压 '+file_path.split('/')[-1],' 到 ',output_dir) + with tarfile.open(file_path) as tar: + members = tar.getmembers() + with tqdm.tqdm(total=len(members), desc='解压进度', unit='file') as bar: + for member in members: + # 构建完整路径 + full_path = os.path.join(output_dir, member.name) + + # 因FDDB存在同一路径下存在相同文件的问题,特此跳过 + # 如果文件已存在,跳过解压 + if os.path.exists(full_path): + bar.update(1) + continue + + # 解压文件 + tar.extract(member, path=output_dir) + bar.update(1) + +# 下载人脸数据集 +face_dataset_url='http://vis-www.cs.umass.edu/fddb/originalPics.tar.gz' +face_dataset_path='cache/dataset/face/' +download(face_dataset_url,face_dataset_path) + +# 下载人脸数据标签 +face_label_path='cache/dataset/face/label/' +face_label_url='http://vis-www.cs.umass.edu/fddb/FDDB-folds.tgz' +download(face_label_url,face_label_path) + +# 解压数据集 +decompress(os.path.join(face_dataset_path,face_dataset_url.split('/')[-1]),face_dataset_path) +decompress(os.path.join(face_label_path,face_label_url.split('/')[-1]),face_label_path) diff --git a/实验八/main.py b/实验八/main.py new file mode 100644 index 0000000..eb389a0 --- /dev/null +++ b/实验八/main.py @@ -0,0 +1,16 @@ +# 这是一个示例 Python 脚本。 + +# 按 Shift+F10 执行或将其替换为您的代码。 +# 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。 + + +def print_hi(name): + # 在下面的代码行中使用断点来调试脚本。 + print(f'Hi, {name}') # 按 Ctrl+F8 切换断点。 + + +# 按装订区域中的绿色按钮以运行脚本。 +if __name__ == '__main__': + print_hi('PyCharm') + +# 访问 https://www.jetbrains.com/help/pycharm/ 获取 PyCharm 帮助