Skip to content

Manual do Desenvolvedor

Matheus Coelho edited this page Sep 4, 2024 · 17 revisions

Guia de Instalação e Deploy

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.

Pré-requisitos

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.

Pacotes Python

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

Modelos

Modelo personalizado

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.

Modelos YOLOv8

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.

Configuração do Ambiente

Estrutura de Diretório

Organize sua estrutura de diretório da seguinte forma:

seu_projeto/
├── models/
│   └── vedit-std_v1.2.pt
└── rec/

Código

Salve o script Python fornecido como main.py no diretório principal do seu projeto.

Execução do Código

Para executar o aplicativo diretamente no seu sistema local:

  1. Abra o terminal.
  2. Navegue até o diretório do projeto.
  3. 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.

Explicações gerais do código para o Desenvolvedor

Documentação do Código de Detecção de Objetos

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.

Bibliotecas Usadas

  • vidgear: Captura vídeos de diversas fontes.
  • opencv-python (cv2): Processamento de imagens e vídeos.
  • ultralytics YOLO: Modelo de detecção de objetos.

Estrutura do Código

Importações realizadas.

from vidgear.gears import CamGear
import cv2
from ultralytics import YOLO
import numpy as np
from datetime import datetime

Função annotate_bounding_box

Recebe classe, probabilidade e coordenadas para desenhar uma bounding box sobre o frame fornecido.

def annotate_bounding_box(ship_class, prob, dim, frame):
    ...

Função annotate_text

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):
    ...

Função main

É 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():
    ...

Carregando e Trocando Modelos

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

Alterando a Fonte de Vídeo

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: ")

Executando o Script

Para executar o script, simplesmente execute o arquivo .py em um ambiente que suporte as bibliotecas necessárias:

python ship_detect.py

Saída

O vídeo processado é exibido em tempo real, e se a gravação estiver ativada, é salvo na pasta rec.

Diagrama de Componentes

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.

Diagrama de Componentes

Conclusão

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.