OpenEB é o projeto de código aberto associado ao Metavision SDK
Ele permite que qualquer pessoa compreenda melhor a visão baseada em eventos, interaja diretamente com eventos e crie seus próprios aplicativos ou plug-ins de câmera. Como fabricante de câmeras, garanta que seus clientes se beneficiem do pacote de software baseado em eventos mais avançado disponível, criando seu próprio plug-in. Como criador, cientista, acadêmico, junte-se e contribua para a comunidade de visão baseada em eventos em rápido crescimento.
OpenEB é composto pelos módulos Open do Metavision SDK:
HAL: Camada de abstração de hardware para operar qualquer dispositivo de visão baseado em eventos.
Base: Fundamentos e definições comuns de aplicativos baseados em eventos.
Núcleo: Algoritmos genéricos para visualização, manipulação de fluxo de eventos.
Core ML: funções genéricas para pipelines de aprendizado de máquina, event_to_video e video_to_event.
Stream: Abstração de alto nível construída sobre HAL para interagir facilmente com câmeras baseadas em eventos.
UI: Visualizador e controladores de exibição para dados baseados em eventos.
OpenEB também contém o código-fonte dos plug-ins de câmera Prophesee, permitindo transmitir dados de nossas câmeras baseadas em eventos e ler gravações de dados baseados em eventos. As câmeras suportadas são:
EVK2-HD
EVK3 - VGA/320/HD
EVK4-HD
Este documento descreve como compilar e instalar a base de código OpenEB. Para mais informações, consulte nossa documentação online onde você encontrará alguns tutoriais para começar em C++ ou Python, alguns exemplos para descobrir como usar nossa API e uma descrição mais detalhada de nossos módulos e pacotes.
A compilação e a execução foram testadas em plataformas que atendem aos seguintes requisitos:
Linux: Ubuntu 22.04 ou 24.04 de 64 bits
Arquitetura: amd64 (também conhecido como x64)
Placa gráfica com suporte mínimo de OpenGL 3.0
CPU com suporte de AVX2
A compilação em outras plataformas (distribuições alternativas do Linux, diferentes versões do Ubuntu, arquitetura de processador ARM etc.) não foi testada. Para essas plataformas podem ser necessários alguns ajustes neste guia ou no próprio código.
Se você estiver atualizando o OpenEB de uma versão anterior, você deve primeiro ler atentamente as Notas de Lançamento, pois algumas alterações podem afetar o uso do nosso SDK (por exemplo, atualizações de API) e câmeras (por exemplo, atualização de firmware pode ser necessária).
Então, você precisa limpar seu sistema do software Prophesee instalado anteriormente. Se após uma compilação anterior você optar por implantar os arquivos Metavision no caminho do sistema, vá para a pasta build
no diretório do código-fonte e execute o seguinte comando para remover esses arquivos:
sudo make desinstalar
Além disso, faça uma verificação global nos caminhos do sistema ( /usr/lib
, /usr/local/lib
, /usr/include
, /usr/local/include
) e nas variáveis de ambiente ( PATH
, PYTHONPATH
e LD_LIBRARY_PATH
) para remover ocorrências de arquivos Prophesee ou Metavision.
Para recuperar o código-fonte do OpenEB, basta clonar o repositório GitHub:
clone do git https://github.com/prophesee-ai/openeb.git --branch 5.0.0
Nas seções a seguir, o caminho absoluto para este diretório é denominado OPENEB_SRC_DIR
Se você optar por baixar um arquivo do OpenEB do GitHub em vez de clonar o repositório, será necessário selecionar um arquivo Full.Source.Code.*
em vez de usar os arquivos Source.Code.*
gerados automaticamente. Isso ocorre porque estes últimos não incluem um submódulo necessário.
Instale as seguintes dependências:
atualização do sudo apt sudo apt -y install apt-utils build-essential software-properties-common wget descompacte curl git cmake sudo apt -y instalar libopencv-dev libboost-all-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler sudo apt -y instalar libhdf5-dev hdf5-tools libglew-dev libglfw3-dev libcanberra-gtk-module ffmpeg
Opcionalmente, caso queira executar os testes, é necessário instalar os pacotes Google Gtest e Gmock. Para obter mais detalhes, consulte o Guia do usuário do teste do Google:
sudo apt -y instalar libgtest-dev libgmock-dev
Para a API Python, você precisará do Python e de algumas bibliotecas adicionais. Oferecemos suporte a Python 3.9 e 3.10 no Ubuntu 22.04 e Python 3.11 e 3.12 no Ubuntu 24.04.
Recomendamos usar Python com virtualenv para evitar conflitos com outros pacotes Python instalados. Então, primeiro instale-o junto com algumas ferramentas de desenvolvimento Python:
sudo apt -y install python3.x-venv python3.x-dev# onde "x" é 9, 10, 11 ou 12 dependendo da sua versão do Python
A seguir, crie um ambiente virtual e instale as dependências necessárias:
python3 -m venv /tmp/prophesee/py3venv --system-site-packages /tmp/prophesee/py3venv/bin/python -m pip install pip --upgrade /tmp/prophesee/py3venv/bin/python -m pip install -r OPENEB_SRC_DIR/utils/python/python_requirements/requirements_openeb.txt
Observe que ao criar o ambiente virtual, é necessário utilizar a opção --system-site-packages
para garantir que os pacotes SDK instalados nos diretórios do sistema estejam acessíveis. No entanto, esta opção também torna os pacotes de sites do usuário local (normalmente encontrados em ~/.local/lib/pythonX.Y/site-packages
) visíveis por padrão. Para evitar isso e manter um ambiente virtual mais limpo, você pode definir a variável de ambiente PYTHONNOUSERSITE
como true.
Opcionalmente, você pode executar o comando activate
( source /tmp/prophesee/py3venv/bin/activate
) para modificar as variáveis de ambiente do seu shell, definindo o interpretador Python e os scripts do ambiente virtual como padrão para sua sessão atual. Isso permite que você use comandos simples como python
sem precisar especificar o caminho completo todas as vezes.
As ligações Python da API C++ dependem da biblioteca pybind11, especificamente da versão 2.11.0.
Observe que pybind11 é necessário apenas se você quiser usar as ligações Python da API C++. Você pode optar por não criar essas ligações passando o argumento -DCOMPILE_PYTHON3_BINDINGS=OFF
na etapa 3 durante a compilação (veja abaixo). Nesse caso, você não precisará instalar o pybind11, mas não poderá usar nossa interface Python para a API C++.
Infelizmente, não existe uma versão pré-compilada do pybind11 disponível, então você precisa instalá-lo manualmente:
wget https://github.com/pybind/pybind11/archive/v2.11.0.zip descompacte v2.11.0.zipcd pybind11-2.11.0/ compilação mkdir && compilação cd cmake .. -DPYBIND11_TEST = DESLIGADO cmake --build .sudo cmake --build . --target instalar
Para usar os recursos de Machine Learning, você precisa instalar algumas dependências adicionais.
Primeiro, se você tiver algum hardware Nvidia com GPUs, poderá instalar opcionalmente CUDA (11.6 ou 11.7) e cuDNN para aproveitá-los com pytorch e libtorch.
Certifique-se de instalar uma versão do CUDA que seja compatível com suas GPUs, verificando a página de compatibilidade da Nvidia.
Observe que, no momento, não oferecemos suporte a GPUs OpenCL e AMD.
Crie e abra o diretório de construção OPENEB_SRC_DIR
: mkdir build && cd build
Gere os makefiles usando CMake: cmake .. -DBUILD_TESTING=OFF
. Se você deseja especificar qual versão do Python considerar, você deve usar a opção -DPython3_EXECUTABLE=<path_to_python_to_use>
. Isso é útil, por exemplo, quando você tem uma versão mais recente do Python instalada em seu sistema do que aquelas que oferecemos suporte. Nesse caso, cmake o selecionaria e a compilação poderia falhar.
Compilar: cmake --build . --config Release -- -j 4
Assim que a compilação for concluída, você terá duas opções: você pode optar por trabalhar diretamente na pasta build
ou pode implantar os arquivos OpenEB no caminho do sistema ( /usr/local/lib
, /usr/local/include
...) .
Opção 1 – trabalhando a partir da pasta build
Para usar o OpenEB diretamente da pasta build
, você precisa atualizar algumas variáveis de ambiente usando este script (que você pode adicionar ao seu ~/.bashrc
para torná-lo permanente):
fonte utilitários/scripts/setup_env.sh
Os plug-ins de câmera Prophesee estão incluídos no OpenEB, mas você ainda precisa copiar os arquivos de regras do udev no caminho do sistema e recarregá-los para que sua câmera seja detectada com este comando:
sudo cp <OPENEB_SRC_DIR>/hal_psee_plugins/resources/rules/*.rules /etc/udev/rules.d sudo udevadm control --reload-rules gatilho sudo udevadm
Opção 2 – implantação no caminho do sistema
Para implantar o OpenEB, execute o seguinte comando:
sudocmake --build. --target instalar
Observe que você também pode implantar os arquivos OpenEB (aplicativos, amostras, bibliotecas etc.) em um diretório de sua escolha usando a variável CMAKE_INSTALL_PREFIX
( -DCMAKE_INSTALL_PREFIX=<OPENEB_INSTALL_DIR>
) ao gerar os makefiles na etapa 2. Da mesma forma, você pode configurar o diretório onde os pacotes Python serão implantados usando a variável PYTHON3_SITE_PACKAGES
( -DPYTHON3_SITE_PACKAGES=<PYTHON3_PACKAGES_INSTALL_DIR>
).
você também precisa atualizar LD_LIBRARY_PATH
e HDF5_PLUGIN_PATH
(que você pode adicionar ao seu ~/.bashrc
para torná-lo permanente):
exportar LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libexport HDF5_PLUGIN_PATH=$HDF5_PLUGIN_PATH:/usr/local/hdf5/lib/plugin # No Ubuntu 22.04export HDF5_PLUGIN_PATH=$HDF5_PLUGIN_PATH:/usr/local/lib/hdf5/plugin # No Ubuntu 24.04
Observe que se você estiver usando uma câmera de terceiros, será necessário instalar o plug-in fornecido pelo fornecedor da câmera e especificar a localização do plug-in usando a variável de ambiente MV_HAL_PLUGIN_PATH
.
Para começar a usar o OpenEB, você pode baixar algumas gravações de amostra e visualizá-las com metavision_viewer ou pode transmitir dados de sua câmera baseada em eventos compatível com Prophesee.
Executar o conjunto de testes é uma maneira infalível de garantir que você fez tudo bem no processo de compilação e instalação.
Baixe os arquivos necessários para executar os testes. Clique em Download
na pasta superior direita. Cuidado com o tamanho do arquivo obtido que pesa cerca de 1,5 Gb.
Extraia e coloque o conteúdo deste arquivo em <OPENEB_SRC_DIR>/datasets
. Por exemplo, o caminho correto da sequência gen31_timer.raw
deve ser <OPENEB_SRC_DIR>/datasets/openeb/gen31_timer.raw
.
Gere novamente os makefiles com as opções de teste habilitadas:
cd<OPENEB_SRC_DIR>/compilação cmake.. -DBUILD_TESTING=ON
Compile novamente. cmake --build . --config Release -- -j 4
Finalmente, execute o conjunto de testes: ctest --verbose
Atualmente, oferecemos suporte apenas ao Windows 10. A compilação em outras versões do Windows não foi testada. Para essas plataformas podem ser necessários alguns ajustes neste guia ou no próprio código.
Se você estiver atualizando o OpenEB de uma versão anterior, você deve primeiro ler atentamente as Notas de Lançamento, pois algumas alterações podem afetar o uso do nosso SDK (por exemplo, atualizações de API) e câmeras (por exemplo, atualização de firmware pode ser necessária).
Então, se você já instalou algum software do Prophesee, você precisará desinstalá-lo primeiro. Remova as pastas onde você instalou os artefatos do Metavision (verifique a pasta build
do código-fonte e C:Program FilesProphesee
que é o caminho de instalação padrão da etapa de implantação).
Para recuperar o código-fonte do OpenEB, basta clonar o repositório GitHub:
clone do git https://github.com/prophesee-ai/openeb.git --branch 5.0.0
Nas seções a seguir, o caminho absoluto para este diretório é denominado OPENEB_SRC_DIR
Se você optar por baixar um arquivo do OpenEB do GitHub em vez de clonar o repositório, será necessário selecionar um arquivo Full.Source.Code.*
em vez de usar os arquivos Source.Code.*
gerados automaticamente. Isso ocorre porque estes últimos não incluem um submódulo necessário.
Algumas etapas deste procedimento não funcionam no sistema de arquivos FAT32 e exFAT. Portanto, certifique-se de estar usando um sistema de arquivos NTFS antes de prosseguir.
Você deve habilitar o suporte para caminhos longos:
Pressione a tecla Windows, digite gpedit.msc e pressione Enter
Navegue até Política do computador local > Configuração do computador > Modelos administrativos > Sistema > Sistema de arquivos
Clique duas vezes na opção "Ativar caminhos longos do Win32", selecione a opção "Ativado" e clique em "OK"
Para compilar o OpenEB, você precisará instalar algumas ferramentas extras:
instalar o git
instale o CMake 3.26
instale o compilador Microsoft C++ (64 bits). Você pode escolher uma das seguintes soluções:
Baixe e execute o instalador "Ferramentas de compilação para Visual Studio 2022"
Selecione "Ferramentas de compilação C++", certifique-se de que o SDK do Windows 10 esteja marcado e adicione o English Language Pack
Apenas para construção, você pode instalar o MS Build Tools (gratuito, parte do pacote SDK do Windows 10)
Para desenvolvimento, você também pode baixar e executar o Visual Studio Installer
instale o vcpkg que será usado para instalar dependências:
baixe e extraia o vcpkg versão 2024.04.26 em uma pasta que chamaremos de VCPKG_SRC_DIR
cd <VCPKG_SRC_DIR>
bootstrap-vcpkg.bat
vcpkg update
copie o arquivo vcpkg-openeb.json
localizado no código-fonte OpenEB em utils/windows
para VCPKG_SRC_DIR
e renomeie-o para vcpkg.json
instale as bibliotecas executando:
vcpkg install --triplet x64-windows --x-install-root installed
Por fim, baixe e instale o ffmpeg e adicione o diretório bin
ao seu PATH.
Observe que se você estiver usando o vcpkg em vários projetos ou versões do OpenEB, é benéfico simplificar o número de instalações do vcpkg que você gerencia. Para conseguir isso, você precisará das versões específicas das bibliotecas necessárias. Você pode encontrar essas versões cruzando nosso arquivo vcpkg.json
com o repositório vcpkg oficial, mas para sua conveniência, nós as listamos abaixo:
libusb: 1.0.27
impulso: 1.78.0
opencv: 4.8.0
direto: 1.24.0
teste g: 1.14.0
pybind11: 2.12.0
brilhou: 2.2.0
glfw3: 3.4.0
hdf5: 1.14.2
protobuf: 3.21.12
Baixe o "instalador executável do Windows x86-64" para uma destas versões do Python:
Pitão 3.9
Pitão 3.10
Pitão 3.11
Pitão 3.12
Adicione diretórios de instalação e script do Python em seu PATH
e certifique-se de que eles estejam listados antes da pasta WindowsApps
que contém um alias do Python para iniciar a Microsoft Store. Portanto, se você instalou o Python 3.9 no caminho padrão, seu usuário PATH
deverá conter essas três linhas nesta ordem:
%USERPROFILE%AppDataLocalProgramasPythonPython39 %USERPROFILE%AppDataLocalProgramasPythonPython39Scripts %USERPROFILE%AppDataLocalMicrosoftWindowsApps
Recomendamos usar Python com virtualenv para evitar conflitos com outros pacotes Python instalados.
Crie um ambiente virtual e instale as dependências necessárias:
python -m venv C:tmppropheseepy3venv --system-site-packages C:tmppropheseepy3venvScriptspython -m pip install pip --upgrade C:tmppropheseepy3venvScriptspython -m pip install -r OPENEB_SRC_DIRutilspythonpython_requirementsrequirements_openeb.txt
Ao criar o ambiente virtual, é necessário utilizar a opção --system-site-packages
para garantir que os pacotes SDK instalados nos diretórios do sistema estejam acessíveis. No entanto, esta opção também torna os pacotes de sites do usuário local visíveis por padrão. Para evitar isso e manter um ambiente virtual mais limpo, você pode definir a variável de ambiente PYTHONNOUSERSITE
como true.
Opcionalmente, você pode executar o comando activate
( C:tmppropheseepy3venvScriptsactivate
) para modificar as variáveis de ambiente do seu shell, definindo o interpretador Python e os scripts do ambiente virtual como padrão para sua sessão atual. Isso permite que você use comandos simples como python
sem precisar especificar o caminho completo todas as vezes.
Para usar os recursos de Machine Learning, você precisa instalar algumas dependências adicionais.
Primeiro, se você tiver algum hardware Nvidia com GPUs, poderá instalar opcionalmente CUDA (11.6 ou 11.7) e cuDNN para aproveitá-los com pytorch e libtorch.
Abra um prompt de comando dentro da pasta OPENEB_SRC_DIR
:
Crie e abra o diretório build, onde os arquivos temporários serão criados: mkdir build && cd build
Gere os makefiles usando CMake: cmake .. -A x64 -DCMAKE_TOOLCHAIN_FILE=<OPENEB_SRC_DIR>cmaketoolchainsvcpkg.cmake -DVCPKG_DIRECTORY=<VCPKG_SRC_DIR>
. Observe que o valor passado para o parâmetro -DCMAKE_TOOLCHAIN_FILE
deve ser um caminho absoluto e não relativo.
Compilar: cmake --build . --config Release --parallel 4
Depois de concluída a compilação, você tem duas opções: pode optar por trabalhar diretamente da pasta build
ou pode implantar os arquivos OpenEB (aplicativos, amostras, bibliotecas etc.) em um diretório de sua escolha.
Opção 1 – trabalhando a partir da pasta build
Para usar o OpenEB diretamente da pasta build
, você precisa atualizar algumas variáveis de ambiente usando este script:
utilitáriosscriptssetup_env.bat
Opção 2 – implantando em um diretório de sua escolha
anexe <OPENEB_INSTALL_DIR>bin
a PATH
( C:Program FilesPropheseebin
se você usou a configuração padrão)
anexe <OPENEB_INSTALL_DIR>libmetavisionhalplugins
a MV_HAL_PLUGIN_PATH
( C:Program FilesPropheseelibmetavisionhalplugins
se você usou a configuração padrão)
anexe <OPENEB_INSTALL_DIR>libhdf5plugin
a HDF5_PLUGIN_PATH
( C:Program FilesPropheseelibhdf5plugin
se você usou a configuração padrão)
anexe <PYTHON3_PACKAGES_INSTALL_DIR>
a PYTHONPATH
(não é necessário se você usou a configuração padrão)
Para implantar o OpenEB na pasta padrão ( C:Program FilesProphesee
), execute este comando (seu console deve ser iniciado como administrador):
cmake --construir. --config Liberação --target instalar
Para implantar o OpenEB em outra pasta, você deve gerar a solução novamente (etapa 2 acima) com a variável adicional CMAKE_INSTALL_PREFIX
tendo o valor da sua pasta de destino ( OPENEB_INSTALL_DIR
).
Da mesma forma, para especificar onde os pacotes Python serão implantados ( PYTHON3_PACKAGES_INSTALL_DIR
), você deve usar a variável PYTHON3_SITE_PACKAGES
.
Aqui está um exemplo de um comando que personaliza essas duas pastas:
cmake. -DPYTHON3_SITE_PACKAGES=<PYTHON3_PACKAGES_INSTALL_DIR> -DBUILD_TESTING=DESLIGADO
Após este comando, você deve iniciar a compilação e instalação propriamente dita do OpenEB (seu console deve ser iniciado como administrador):
cmake --construir. --config Liberação --parallel 4 cmake --construir. --config Liberação --target instalar
Você também precisa editar manualmente algumas variáveis de ambiente:
Abra um prompt de comando dentro da pasta OPENEB_SRC_DIR
:
Crie e abra o diretório build, onde os arquivos temporários serão criados: mkdir build && cd build
Gere os arquivos do Visual Studio usando CMake: cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE=<OPENEB_SRC_DIR>cmaketoolchainsvcpkg.cmake -DVCPKG_DIRECTORY=<VCPKG_SRC_DIR>
(adaptar-se à sua versão do Visual Studio) . Observe que o valor passado para o parâmetro -DCMAKE_TOOLCHAIN_FILE
deve ser um caminho absoluto e não relativo.
Abra o arquivo de solução metavision.sln
, selecione a configuração Release
e construa o projeto ALL_BUILD
.
Assim que a compilação estiver concluída, você pode optar por trabalhar diretamente na pasta build
ou implantar os arquivos OpenEB (aplicativos, amostras, bibliotecas etc.) em um diretório de sua escolha.
Opção 1 - trabalhando a partir da pasta build
Para usar o OpenEB diretamente da pasta build
, você precisa atualizar as variáveis de ambiente conforme feito no script utilsscriptssetup_env.bat
Opção 2 – implantando OpenEB
Para implantar o OpenEB, você precisa construir o projeto INSTALL
. Por padrão, os arquivos serão implantados em C:Program FilesProphesee
Os plug-ins de câmera Prophesee estão incluídos no OpenEB, mas você precisa instalar os drivers para que as câmeras estejam disponíveis no Windows. Para fazer isso, siga este procedimento:
baixe wdi-simple.exe do nosso servidor de arquivos
execute os seguintes comandos em um prompt de comando iniciado como administrador:
wdi-simple.exe -n "EVK" -m "Profetizado" -v 0x04b4 -p 0x00f4 wdi-simple.exe -n "EVK" -m "Profetizado" -v 0x04b4 -p 0x00f5 wdi-simple.exe -n "EVK" -m "Profetizado" -v 0x04b4 -p 0x00f3
Se você possui um EVK2 ou RDK2, há algumas etapas adicionais a serem concluídas, detalhadas em nossa documentação on-line na seção Camera Plugin do guia de instalação do OpenEB.
Se estiver usando uma câmera de terceiros, você precisará seguir as instruções fornecidas pelo fornecedor da câmera para instalar o driver e o plug-in da câmera. Certifique-se de fazer referência ao local do plug-in na variável de ambiente MV_HAL_PLUGIN_PATH
.
Para começar a usar o OpenEB, você pode baixar algumas gravações de amostra e visualizá-las com metavision_viewer ou pode transmitir dados de sua câmera baseada em eventos compatível com Prophesee.
Executar o conjunto de testes é uma maneira infalível de garantir que você fez tudo bem no processo de compilação e instalação.
Baixe os arquivos necessários para executar os testes. Clique em Download
na pasta superior direita. Cuidado com o tamanho do arquivo obtido que pesa cerca de 1,5 Gb.
Extraia e coloque o conteúdo deste arquivo em <OPENEB_SRC_DIR>/datasets
. Por exemplo, o caminho correto da sequência gen31_timer.raw
deve ser <OPENEB_SRC_DIR>/datasets/openeb/gen31_timer.raw
.
Para executar o conjunto de testes você precisa reconfigurar seu ambiente de construção usando CMake e recompilar
Compilação usando MS Visual Studio
Compilação usando CMake
Gere os arquivos do Visual Studio usando CMake (adapte o comando à sua versão do Visual Studio e observe que -DCMAKE_TOOLCHAIN_FILE
deve ser um caminho absoluto, não relativo):
cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE=<OPENEB_SRC_DIR>cmaketoolchainsvcpkg.cmake -DVCPKG_DIRECTORY=<VCPKG_SRC_DIR> -DBUILD_TESTING=ON
Abra o arquivo de solução metavision.sln
, selecione a configuração Release
e construa o projeto ALL_BUILD
.
Gere novamente a compilação usando CMake (observe que -DCMAKE_TOOLCHAIN_FILE
deve ser um caminho absoluto, não relativo)::
cd <OPENEB_SRC_DIR>/build cmake .. -A x64 -DCMAKE_TOOLCHAIN_FILE=<OPENEB_SRC_DIR>cmaketoolchainsvcpkg.cmake -DVCPKG_DIRECTORY=<VCPKG_SRC_DIR> -DBUILD_TESTING=ON
Compilar: cmake --build . --config Release --parallel 4
Executar o conjunto de testes é simplesmente ctest -C Release