| import pathlib |
| from pathlib import Path |
| pathlib.PosixPath = pathlib.WindowsPath |
| import sys |
| import os |
|
|
| |
| BASE_DIR = Path(__file__).resolve().parent |
| YOLOV5_DIR = BASE_DIR / "yolov5" |
| sys.path.append(str(YOLOV5_DIR)) |
|
|
| from yolov5.train import main, parse_opt |
|
|
| |
| MODEL_PATH = BASE_DIR / "models/models--keizer77--samyolo2/snapshots/74c8cb12ae448ff0b8bae9ef522b54ec09b47c20/best.pt" |
| DATA_YAML_PATH = BASE_DIR / "labelid_image/data.yaml" |
| OUTPUT_DIR = BASE_DIR / "weights" |
|
|
| def clear_cache(data_path): |
| """ |
| Supprime les fichiers de cache de labels pour s'assurer que YOLOv5 |
| recrée les caches à partir des fichiers d'annotation actuels. |
| """ |
| subfolders = ['train', 'valid', 'test'] |
| for folder in subfolders: |
| cache_file = os.path.join(data_path, folder, 'labels.cache') |
| if os.path.exists(cache_file): |
| print(f"Suppression du cache : {cache_file}") |
| os.remove(cache_file) |
|
|
| def train_yolo_direct(): |
| |
| clear_cache("labelid_image") |
|
|
| |
| opt = parse_opt() |
| opt.imgsz = 640 |
| opt.batch_size = 8 |
| opt.epochs = 10 |
| opt.data = str(DATA_YAML_PATH) |
| opt.weights = str(MODEL_PATH) |
| opt.project = str(OUTPUT_DIR) |
| opt.name = "custom_model" |
| opt.device = "cpu" |
|
|
| print("Lancement de l'entraînement YOLOv5...") |
| main(opt) |
|
|
| if __name__ == "__main__": |
| try: |
| train_yolo_direct() |
| except Exception as e: |
| print(f"Erreur lors de l'exécution de l'entraînement : {e}") |
|
|