Spaces:
Sleeping
Sleeping
| import os | |
| import shutil | |
| from sklearn.model_selection import train_test_split | |
| def split_dataset(images_dir, labels_dir, val_images_dir, val_labels_dir, val_ratio=0.2): | |
| """ | |
| Divide o conjunto de dados em treino e validação, excluindo imagens "_rotated". | |
| :param images_dir: Diretório das imagens originais. | |
| :param labels_dir: Diretório das labels originais. | |
| :param val_images_dir: Diretório para salvar imagens de validação. | |
| :param val_labels_dir: Diretório para salvar labels de validação. | |
| :param val_ratio: Proporção de imagens a serem usadas na validação. | |
| """ | |
| # Cria pastas de validação, se não existirem | |
| os.makedirs(val_images_dir, exist_ok=True) | |
| os.makedirs(val_labels_dir, exist_ok=True) | |
| # Lista de imagens normais (sem _rotated) | |
| normal_images = [f for f in os.listdir(images_dir) if f.endswith(".jpg") and "_rotated" not in f] | |
| # Associa labels existentes | |
| normal_images = [f for f in normal_images if os.path.exists(os.path.join(labels_dir, f.replace(".jpg", ".txt")))] | |
| # Divide em treino e validação | |
| train_images, val_images = train_test_split(normal_images, test_size=val_ratio, random_state=42) | |
| # Move as imagens e labels para o diretório de validação | |
| for image in val_images: | |
| label = image.replace(".jpg", ".txt") | |
| # Move a imagem | |
| shutil.move(os.path.join(images_dir, image), os.path.join(val_images_dir, image)) | |
| # Move a label | |
| shutil.move(os.path.join(labels_dir, label), os.path.join(val_labels_dir, label)) | |
| print(f"Divisão concluída! {len(val_images)} imagens movidas para validação.") | |
| # Exemplos de uso | |
| split_dataset( | |
| images_dir="dataset/images/train", | |
| labels_dir="dataset/labels/train", | |
| val_images_dir="dataset/images/val", | |
| val_labels_dir="dataset/labels/val", | |
| val_ratio=0.2 | |
| ) | |