Pular para o conteúdo principal

Detecção de objetos em tempo real com YOLO usando reCamera baseada em Cpp

Este documento demonstra como implementar captura de fotos em tempo real, detecção de objetos com YOLO e acesso aos resultados via HTTP com C++ baseado em compilação cruzada em terminais reCamera. Esta abordagem evita problemas de superaquecimento encontrados ao usar Node-RED na reCamera. Você pode consultar este documento para modificar o código em C++ para aplicações personalizadas de visão computacional.

Preparação do Ambiente

Pré-compilação

Primeiro, você precisa consultar o documento "Develop with C/C++" para configurar o ambiente de compilação cruzada no seu Linux. Observação: Reconfigure o caminho após cada inicialização:

export SG200X_SDK_PATH=$HOME/recamera/sg2002_recamera_emmc/
export PATH=$HOME/recamera/host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH

Em seguida, faça o download do projeto Realtime_detection_http e compile-o.​

cd Realtime_detection_http/
mkdir build && cd build
cmake ..
make

A presença do arquivo executável verde Realtime_detection_http no diretório de build indica compilação bem-sucedida:

Em seguida, abra o terminal da reCamera e copie o arquivo executável para o diretório do terminal reCamera.​

 sudo scp Realtime_detection_http [email protected]:/home/recamera/

Preparação da reCamera

1.Faça o download do YOLOv11 que já foi implantado em On Device Models e copie o arquivo .cvimodel do modelo para o terminal da sua reCamera: /home/recamera/. 2.Antes de executar o código, acesse o workspace da reCamera para encerrar o processo (consulte Develop with c/c++) a fim de evitar consumo de memória. 3.Em seguida, navegue até /etc/init.d/, copie as pastas S93sscma-supervisor e S91sscma-node para /home/recamera/ ou outro local para backup, e exclua as pastas originais S93sscma-supervisor e S91sscma-node para evitar consumo de memória e ocupação do programa.​

cd /etc/init.d/
sudo scp S93sscma-supervisor /home/recamera/
sudo scp S91sscma-node /home/recamera/
sudo rm -r S93sscma-supervisor
sudo rm -r S91sscma-node

Executar o programa

Execute o programa como administrador em /home/recamera/ no terminal da reCamera​:

sudo ./Realtime_detection_http

Resultados

O terminal exibirá o seguinte, indicando operação normal do programa:

Você pode acessar http://192.168.42.1/modeldetector via navegador ou Postman. A reCamera irá capturar uma foto imediatamente e retornar os objetos detectados pelo YOLOv11.​ Navegador:

Postman:

As informações retornadas incluem os seguintes dados:​​

  • Code:1 (Em execução)
  • Msg: Mensagens de erro
  • Initialize_camera_duration: A duração da inicialização da câmera é exibida apenas durante o primeiro acesso.​
  • Initialize_model_duration: A duração da inicialização do modelo é exibida apenas durante o primeiro acesso.​
  • Data:
    • Score: Pontuação de confiança da detecção (0-1)
    • Target: Nome do objeto detectado
    • Box:[x1, y1, x2, y2]​: Coordenadas da caixa de detecção (em pixels representando as bordas [esquerda, superior, direita, inferior])
    • Center:[x, y]​: Posição central normalizada da caixa de detecção (proporção em relação à largura/altura da imagem)
    • Size:[w, h]​: Largura e altura normalizadas da caixa de detecção (proporção em relação às dimensões da imagem)
    • Release_duration: Tempo gasto para limpar o cache da câmera (ms)
    • Capture_duration: Duração da aquisição da imagem (ms)
    • Image_preprocessing_duration: Duração da preparação da imagem antes da inferência (ms)
    • Detection_duration: Duração da detecção do modelo (ms) (Incluindo Preprocessing, Inference, Postprocessing)
  • Duration: Tempo total de execução do programa (ms)
  • Timestamp: Carimbo de data/hora Unix

O terminal exibirá:​

  • Parâmetros de inicialização da câmera​:
    • Resolução: 1920×1080
    • Taxa de quadros: 5 fps
    • Canal de captura: Canal 2
  • Tamanho da imagem capturada (por exemplo, Jpeg size: 216149 (pixels))
  • ​Uso de memória (MB) durante diferentes etapas:
    • Pré-captura (Memory usage)
    • Liberação (Memory usage_during_)
    • Pós-captura (Memory usage_after)
    • Após o pré-processamento da imagem (Memory usage_before_model)
    • Após a detecção do modelo (Memory usage_after_model)
  • Duração da detecção do modelo (ms)
    • Pré-processamento (por exemplo, pre: 9ms)
    • Inferência (por exemplo, infer: 40ms)
    • Pós-processamento (por exemplo, post:395ms)

No terminal da reCamera, as imagens detectadas podem ser salvas automaticamente:​

Você pode acessá-la continuamente com o seu dispositivo para obter resultados de detecção em tempo real para aplicações como segurança inteligente e vigilância.

Você pode modificar o formato da mensagem retornada em registerModelDetector() (Realtime_detection_http/src/http.cpp) e model_detector() (Realtime_detection_http/src/model_detector.cpp). Você também pode usar o seu próprio modelo implantado ao chamar initialize_model(const std::string& model_path) em registerModelDetector(), e modificar as configurações de inicialização da câmera em initialize_camera()(Realtime_detection_http/src/model_detector.cpp):

Após a detecção, você pode pressionar Ctrl+C para encerrar a operação.​O programa irá parar a câmera.​

Para mais detalhes, consulte nosso repositório GitHub.


Suporte Técnico & Discussão sobre o Produto

Agradecemos por escolher nossos produtos! Estamos aqui para oferecer diferentes formas de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...