-
Notifications
You must be signed in to change notification settings - Fork 1
Manual do Desenvolvedor
Este guia fornece todas as instruções necessárias para configurar o ambiente de desenvolvimento e executar a aplicação de detecção de objetos com o YoLo e VidGear diretamente na máquina local.
Antes de iniciar, É necessário que se tenha Python instalado e utilize um programa para rodar com êxito. No caso, foi utilizado o VSCode pela familiaridade com o projeto.
Caso não tenha, faça as instruções abaixo.
Instale os seguintes pacotes via pip:
pip install opencv-python vidgear numpy torch torchvision
ou utilize o arquivo requirements.txt
para instalar as dependências:
pip install -r requirements.txt
Atualmente, o projeto utiliza o modelo vedit-std_v1.2.pt
como padrão para realizar a detecção dos navios. Você pode encontra-lo para baixar clicando aqui. Para utiliza-lo, é necessário apenas mover o modelo para pasta \models
. Tentar executar o script sem o modelo estar disponível resultara em erro.
Caso deseje trocar o modelo utilizado pelo script, basta trocar o nome do modelo dentro da função YOLO('models/vedit-std_v1.2.pt')
para um dos outro modelo suportado pelo YOLOv8. Vale ressaltar que, principalmente por diferenças na numeração das classes, trocar o modelo atual provavelmente resultara em erros dentro do script.
Anteriormente, utilizava-se o modelo 'Yolov8m' como o padrão para o projeto. Não é recomendado, mas ainda é possível utilizar este modelo com o projeto, mas necessitará de tratamento para garantir sua compatibilidade com o script.
Organize sua estrutura de diretório da seguinte forma:
seu_projeto/
├── models/
│ └── vedit-std_v1.2.pt
└── rec/
Salve o script Python fornecido como main.py
no diretório principal do seu projeto.
Para executar o aplicativo diretamente no seu sistema local:
- Abra o terminal.
- Navegue até o diretório do projeto.
- Execute o script com:
python main.py
Pronto! O código está pronto para uso. Para alterar, basta ir em camgear e utilizar-se de outro vídeo. No nosso caso, faremos uso do Youtube.
Este código utiliza as bibliotecas vidgear, opencv-python (cv2) e ultralytics YOLO para realizar detecção de objetos em vídeos ao vivo. A explicação do que foi utilizado está abaixo.
- vidgear: Captura vídeos de diversas fontes.
- opencv-python (cv2): Processamento de imagens e vídeos.
- ultralytics YOLO: Modelo de detecção de objetos.
from vidgear.gears import CamGear
import cv2
from ultralytics import YOLO
import numpy as np
from datetime import datetime
Recebe classe, probabilidade e coordenadas para desenhar uma bounding box sobre o frame fornecido.
def annotate_bounding_box(ship_class, prob, dim, frame):
...
Adiciona texto sobreposto ao vídeo para mostrar informações como o número de navios detectados e o número do quadro atual.
def annotate_text(text, frame, pos_x, pos_y, font_size):
...
É o ponto de entrada principal do script. Executa a captura de vídeo, detecção de objeto e exibição dos resultados. No nosso caso, o vídeo utilizado mostrará em tempo real as informações.
def main():
...
Para carregar um modelo diferente, substitua a linha de instância do modelo no início da função main
:
model = YOLO('models/vedit-std_v1.2.pt') # Modelo atual
Para usar outro modelo, altere o caminho do arquivo:
model = YOLO('models/meu_outro_modelo.pt') # Um modelo de sua escolha
O script pode capturar vídeos de URLs do YouTube ou outras fontes compatíveis. Para alterar a fonte de vídeo, o usuário será solicitado a inserir a URL no início da execução da função main
. No caso, o vídeo será alterado no input abaixo, onde deverá ser alterado a parte que fica entre " ".
stream_url = input("Insira url do video/stream a ser analisado: ")
Para executar o script, simplesmente execute o arquivo .py em um ambiente que suporte as bibliotecas necessárias:
python ship_detect.py
O vídeo processado é exibido em tempo real, e se a gravação estiver ativada, é salvo na pasta rec
.
No nosso caso, não existem muitos componentes e também não há a necessidade de desenvolvimento de um diagrama. Foi realizado, portanto, um diagrama simplificando mostrando alguns documentos e sua comunicação com o sistema.
Este guia deve fornecer todas as informações necessárias para um novo desenvolvedor configurar e executar a aplicação de detecção de objetos diretamente no localhost de forma eficaz e eficiente.