stm32-modelzoo-app / download_datasets.py
EC2 Default User
First commit: Host stm32ai modelzoo
ca291e1
# /*---------------------------------------------------------------------------------------------
# * Copyright (c) 2024 STMicroelectronics.
# * All rights reserved.
# *
# * This software is licensed under terms that can be found in the LICENSE file in
# * the root directory of this software component.
# * If no LICENSE file comes with this software, it is provided AS-IS.
# *--------------------------------------------------------------------------------------------*/
import os
import requests
import tarfile
import zipfile
def download_and_extract(url, dest_path, rename_to=None):
if not os.path.exists(dest_path):
os.makedirs(dest_path)
filename = url.split('/')[-1]
filepath = os.path.join(dest_path, filename)
try:
with requests.get(url, stream=True) as r:
r.raise_for_status()
with open(filepath, 'wb') as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
print(f"Downloaded {filename} successfully.")
extracted_folder = None
if filepath.endswith('.tar.gz') or filepath.endswith('.tgz'):
with tarfile.open(filepath, 'r:gz') as tar:
tar.extractall(path=dest_path)
extracted_folder = tar.getnames()[0].split('/')[0]
print(f"Extracted {filename} successfully.")
elif filepath.endswith('.zip'):
with zipfile.ZipFile(filepath, 'r') as zip_ref:
zip_ref.extractall(dest_path)
extracted_folder = zip_ref.namelist()[0].split('/')[0]
print(f"Extracted {filename} successfully.")
os.remove(filepath)
print(f"Removed {filename} successfully.")
if rename_to and extracted_folder:
extracted_folder_path = os.path.join(dest_path, extracted_folder)
new_folder = os.path.join(dest_path, rename_to)
if os.path.exists(extracted_folder_path):
os.rename(extracted_folder_path, new_folder)
print(f"Renamed {extracted_folder_path} to {new_folder} successfully.")
else:
print(f"Extracted folder {extracted_folder_path} does not exist.")
except Exception as e:
print(f"An error occurred: {e}")
datasets = {
'image_classification': 'http://download.tensorflow.org/example_images/flower_photos.tgz',
'human_activity_recognition': 'https://www.cis.fordham.edu/wisdm/includes/datasets/latest/WISDM_ar_latest.tar.gz',
'hand_posture': 'https://raw.githubusercontent.com/STMicroelectronics/stm32ai-modelzoo-services/main/hand_posture/datasets/ST_VL53L8CX_handposture_dataset.zip', # Updated URL
'audio_event_detection': 'https://github.com/karolpiczak/ESC-50/archive/master.zip'
}
for dataset, url in datasets.items():
print(f"Processing {dataset}...")
if dataset == 'audio_event_detection':
download_and_extract(url, f'/home/appuser/datasets/{dataset}', rename_to='ESC-50')
else:
download_and_extract(url, f'/home/appuser/datasets/{dataset}')
print(f"Finished processing {dataset}.")