| --- |
| license: cc-by-nc-sa-4.0 |
| pipeline_tag: object-detection |
| tags: |
| - yolov8 |
| - object-detection |
| datasets: |
| - MichalMlodawski/closed-open-eyes |
| language: |
| - en |
| --- |
| |
| **Links to Space:** |
| https://huggingface.co/spaces/MichalMlodawski/closed-open-eyes-detection |
|
|
| **Eval:** |
|
|
| | Epoch | Train Box Loss | Train Cls Loss | Train DFL Loss | Precision (B) | Recall (B) | mAP50 (B) | mAP50-95 (B) | Val Box Loss | Val Cls Loss | Val DFL Loss | LR PG0 | LR PG1 | LR PG2 | |
| |-------|----------------|----------------|----------------|---------------|------------|-----------|--------------|--------------|--------------|--------------|--------|--------|--------| |
| | 100 | 1.0201 | 0.4718 | 0.84219 | 0.95394 | 0.93356 | 0.96767 | 0.66184 | 0.98246 | 0.45574 | 0.83703 | 0.000199 | 0.000199 | 0.000199 | |
|
|
| **Example code to run the model:** |
|
|
| import os |
| from pathlib import Path |
| from ultralytics import YOLO |
| import cv2 |
| import logging |
| import argparse |
| |
| def setup_logging(): |
| logging.basicConfig(level=logging.INFO, |
| format='%(asctime)s - %(levelname)s - %(message)s') |
| |
| def process_images(model_path, test_images_path): |
| try: |
| # Path to the results directory |
| results_path = os.path.join(test_images_path, 'result') |
| |
| # Create the results folder |
| os.makedirs(results_path, exist_ok=True) |
| logging.info(f'Created results directory: {results_path}') |
| |
| # Load the model |
| model = YOLO(model_path) |
| logging.info(f'Loaded model from: {model_path}') |
| |
| # Process images |
| for img_file in Path(test_images_path).glob('*.*'): |
| if img_file.suffix.lower() in ['.jpg', '.jpeg', '.png']: # Supports JPG, JPEG, and PNG formats |
| logging.info(f'Processing file: {img_file}') |
| # Detect objects in the image |
| results = model(img_file) |
| |
| for result in results: |
| # Get the result image with detections drawn |
| result_img = result.plot() |
| |
| # Save the result image to the results_path folder |
| result_image_path = os.path.join(results_path, img_file.name) |
| cv2.imwrite(result_image_path, result_img) |
| logging.info(f'Saved result image to: {result_image_path}') |
| |
| logging.info("Image processing completed.") |
| except Exception as e: |
| logging.error(f'An error occurred: {e}') |
| |
| def main(): |
| parser = argparse.ArgumentParser(description='Process images using YOLO model.') |
| parser.add_argument('model_path', type=str, help='Path to the YOLO model.') |
| parser.add_argument('test_images_path', type=str, help='Path to the directory containing test images.') |
| |
| args = parser.parse_args() |
| setup_logging() |
| |
| process_images(args.model_path, args.test_images_path) |
| |
| if __name__ == "__main__": |
| main() |
| |
| **Command to run the program:** |
|
|
| python script_name.py path/to/your/yolo_model.pt path/to/test/images |
| |