{"id":24880110,"url":"https://github.com/zviniicius/ml_yolodetection","last_synced_at":"2025-08-23T03:15:07.690Z","repository":{"id":270431003,"uuid":"910362695","full_name":"zViniicius/ML_YoloDetection","owner":"zViniicius","description":"Este projeto utiliza o modelo YOLOv5 para detecção de objetos em imagens","archived":false,"fork":false,"pushed_at":"2024-12-31T04:47:54.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T10:19:04.936Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zViniicius.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-31T04:42:25.000Z","updated_at":"2024-12-31T04:48:25.000Z","dependencies_parsed_at":"2024-12-31T05:27:15.181Z","dependency_job_id":"47725482-d60c-4a01-b195-43137a7c1420","html_url":"https://github.com/zViniicius/ML_YoloDetection","commit_stats":null,"previous_names":["zviniicius/ml_yolodetection"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zViniicius%2FML_YoloDetection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zViniicius%2FML_YoloDetection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zViniicius%2FML_YoloDetection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zViniicius%2FML_YoloDetection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zViniicius","download_url":"https://codeload.github.com/zViniicius/ML_YoloDetection/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245785818,"owners_count":20671634,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-01T10:18:53.370Z","updated_at":"2025-03-27T05:16:26.896Z","avatar_url":"https://github.com/zViniicius.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Detector de Objetos YOLOv5 com PyTorch\n\nEste projeto utiliza o modelo YOLOv5 para detecção de objetos em imagens. Ele é implementado em Python com a biblioteca PyTorch e pode ser executado facilmente em um ambiente como o Google Colab.\n\n## Funcionalidades\n\n- Realizar a detecção de objetos usando o modelo YOLOv5.\n- Exibir e salvar os resultados com caixas delimitadoras ao redor dos objetos detectados.\n- Registrar as classes de objetos detectados e suas contagens.\n\n## Como Usar no Google Colab\n\n### 1. Preparar o Ambiente\n\nPrimeiramente, abra o Google Colab e crie um novo notebook.\n\nEm seguida, instale as dependências necessárias executando a célula abaixo:\n\n```python\n# Instale as bibliotecas necessárias\n!pip install torch torchvision opencv-python matplotlib PyYAML\n```\n\n### 2. Carregar o Código\n\nCopie e cole o código abaixo em uma célula do seu notebook para importar as bibliotecas e definir a classe `ObjectDetector`.\n\n```python\n# Importar bibliotecas necessárias\nimport torch\nimport cv2\nimport matplotlib.pyplot as plt\nfrom pathlib import Path\nfrom typing import Union, Tuple\nimport logging\nimport yaml\nfrom datetime import datetime\nimport numpy as np\n\n# Definir a classe ObjectDetector aqui (como descrito no código acima)\n```\n\n### 3. Configuração de Parâmetros\n\nConfigure os parâmetros de entrada, como o caminho para a imagem de entrada e o diretório de saída para os resultados da detecção. Você pode configurar os valores diretamente no código ou carregar imagens do seu Google Drive ou de uma URL.\n\n```python\n# Configurar parâmetros\nconfig = {\n    'input_path': 'image.jpg',  # Substitua pelo caminho da sua imagem\n    'output_dir': 'detection_out',\n    'model_name': 'yolov5s',\n    'confidence': 0.5\n}\n```\n\nCaso queira carregar imagens do seu Google Drive, basta usar o seguinte código:\n\n```python\nfrom google.colab import drive\ndrive.mount('/content/drive')\n\n# Caminho para a imagem no seu Google Drive\nconfig['input_path'] = '/content/drive/MyDrive/images/image.jpg'\n```\n\n### 4. Inicializar o Detector\n\nAgora, crie uma instância do detector de objetos, passando o nome do modelo (por exemplo, `yolov5s` para a versão pequena do modelo YOLOv5) e o valor de confiança desejado (padrão é 0.5, mas você pode ajustar).\n\n```python\n# Criar instância do detector\ndetector = ObjectDetector(model_name=config['model_name'], \n                        confidence=config['confidence'])\n```\n\n### 5. Carregar e Processar Imagem\n\nEm seguida, carregue a imagem de entrada e execute a detecção de objetos.\n\n```python\n# Carregar imagem\nsuccess, image = detector.load_image(config['input_path'])\nif not success:\n    print(\"Falha ao carregar a imagem.\")\nelse:\n    # Realizar detecção\n    results = detector.detect_objects(image)\n    \n    # Gerar caminho de saída com timestamp\n    timestamp = datetime.now().strftime('%d-%m-%Y_%H-%M-%S')\n    detection_path = Path(config['output_dir']) / f'detections_{timestamp}_{Path(config[\"input_path\"]).name}'\n    \n    # Salvar resultados\n    detector.save_detections(results, detection_path)\n```\n\n### 6. Analisar os Resultados\n\nApós a detecção, você pode analisar as classes de objetos detectados e suas contagens. O código exibe as classes detectadas e quantas vezes cada uma aparece.\n\n```python\n# Exibir resumo da detecção\nif 'results' in locals():\n    print(\"\\nResumo da detecção:\")\n    print(f\"Total de objetos detectados: {len(results.pred[0])}\")\n    \n    # Exibir classes detectadas e suas contagens\n    classes = results.pred[0][:, -1].cpu().numpy()\n    unique_classes, counts = np.unique(classes, return_counts=True)\n    \n    print(\"\\nClasses detectadas:\")\n    for class_idx, count in zip(unique_classes, counts):\n        class_name = results.names[int(class_idx)]\n        print(f\"{class_name}: {count}\")\n```\n\n## Como Funciona\n\n1. **Inicialização do Modelo**: O modelo YOLOv5 é carregado usando o PyTorch a partir do repositório oficial da Ultralytics. O modelo é carregado para o dispositivo (GPU ou CPU), e a confiança mínima para as detecções é configurada.\n   \n2. **Carregamento da Imagem**: A função `load_image` carrega a imagem a partir de um caminho especificado, retornando a imagem como um array NumPy.\n\n3. **Detecção de Objetos**: A função `detect_objects` executa a detecção utilizando o modelo YOLOv5, que retorna os resultados em forma de tensores.\n\n4. **Renderização dos Resultados**: Após a detecção, a função `save_detections` desenha as caixas delimitadoras e rótulos dos objetos na imagem e a salva no diretório de saída.\n\n5. **Exibição de Resultados**: O código também permite visualizar a imagem com as caixas delimitadoras e exibir um resumo das classes detectadas e suas quantidades.\n\n## Estrutura do Projeto\n\n```\nDetector YOLOv5\n│\n├── detector.py          # Código principal com a classe ObjectDetector\n├── detection_out/       # Diretório de saída para imagens com detecção\n│   └── detections_01-01-2024_14-30-45_image.jpg  # Imagem com objetos detectados\n├── image.jpg            # Imagem de entrada para detecção\n└── README.md            # Este arquivo\n```\n\n## Considerações Finais\n\nEste projeto pode ser facilmente adaptado para diferentes tipos de modelos e cenários de detecção. Você pode mudar o modelo YOLOv5 para uma versão maior (como `yolov5m` ou `yolov5l`) para obter resultados mais precisos ou alterar os parâmetros de entrada e saída conforme necessário.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzviniicius%2Fml_yolodetection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzviniicius%2Fml_yolodetection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzviniicius%2Fml_yolodetection/lists"}