v4.7.0¶
v4.7.0 é uma versão de grande dimensão centrada na NPU e no ROMFS, construída sobre o Qt Creator 14.0.2. Introduz um fluxo de trabalho com sistema de ficheiros ROM no dispositivo com compiladores de modelos ARM Ethos-U (Vela) e ST Edge AI integrados, adiciona programação de fábrica baseada no STM32CubeProgrammer para o OpenMV N6, e inclui o firmware OpenMV 4.7.0 em todas as placas. Note que a atualização de qualquer câmara de um firmware anterior a 4.7.0 força agora um apagamento do sistema de ficheiros FAT e um reset do ROMFS, o que elimina os ficheiros armazenados na flash interna do dispositivo; consulte Alterações incompatíveis abaixo.
Destaques¶
O fluxo de trabalho do Sistema de Ficheiros ROM permite criar, editar, atualizar via flash e reiniciar um sistema de ficheiros apenas de leitura no dispositivo, de modo a que os modelos de ML possam ser armazenados na câmara, com integração nos bootloaders DFU, IMX, Bossac, Picotool e Arduino-DFU. (efcc52fd8, f2cbcc802, a7e52424a, 60b05326d, 7140fc2aa)
Os compiladores de modelos ARM Ethos-U Vela e ST Edge AI estão agora integrados, pelo que os modelos
.tflite/.onnxsão automaticamente compilados para a NPU ao serem carregados em placas Ethos-U55 (OpenMV AE3) ou Neural-ART (OpenMV N6). (411f708ea, 3064411ad)O STM32CubeProgrammer é agora incluído para permitir a programação de fábrica do bootloader do OpenMV N6 (STM32N657) através de um ficheiro
FlashLayout.tsv. (334b04dbd, 54fea4d57, 28cc94a6e)O browser do Model Zoo recebe uma caixa de verificação «Filtrar modelos por tipo de placa», acionada por uma nova tabela
models/index.csvque oculta os modelos incompatíveis com a placa ligada. (80adb2079)Alinhamento ROMFS por extensão: o editor de imagens ROMFS ordena agora os ficheiros alfabeticamente e empacota-os utilizando regras de alinhamento em bytes definidas em
settings.json(p. ex., modelos.tflitealinhados a 16 bytes). (e87b2bf06)Firmware incluído atualizado para 4.7.0 em todas as placas OpenMV e Arduino. (6d04b1b50, d0bbb1fe7, d7d3120b3)
Novas funcionalidades¶
O submenu do Sistema de Ficheiros ROM (
New/Open/Edit ROMFS on OpenMV Cam/Reset ROMFS on OpenMV Cam) substitui a antiga açãoEdit ROM File System. (0bc275a0a, 958f732b5)Abrir o browser do Model Zoo com estado de modelo selecionado persistente e pré-visualização ao mudar a seleção, incluindo bibliotecas de modelos STMicroelectronics, Qualcomm, DeGirum, Edge Impulse e Google integradas. (58033c5df, 2a1fb071a, 48c5b96fe, c0959833c)
O item de menu Converter Modelo para NPU em
Machine Vision Toolscompila um modelo TensorFlow Lite (.tflite) ou ONNX (.onnx) para o acelerador NPU da placa (Vela para Ethos-U.tflite, ST Edge AI para N6 Neural-ART.tflite/.onnx) e guarda o modelo convertido em disco ou na câmara. (3913f5b8b)A ferramenta Copiar/Converter Ficheiro Python copia um script Python para a câmara ou disco e, opcionalmente, compila-o em cruzamento para bytecode MicroPython
.mpyviampy-cross; está disponível num novo submenuMicroPython ToolsemTools. (e9d7fa143, 47188c0e3)Foram adicionados botões de alternância Moldar Texto ao terminal série OpenMV e ao painel de saída
General Messages; ambos ativam a quebra automática de texto e memorizam a definição entre sessões. (8c052845a, 51d3e1ad6)A compilação cruzada mpy-cross para ROMFS com flags de arquitetura por placa (
armv7emsp/armv7emdp) permite congelar scripts MicroPython em imagens ROMFS. (8c71548df)O diálogo de firmware do bootloader aceita agora ficheiros ROMFS
*.imga par de*.bine*.dfu, valida as extensões por bootloader e desativa a caixa de verificaçãoReset ROMFS file systemexistente ao carregar um ficheiro*.img. (79f348b36)As atualizações de versões anteriores a 4.7.0 forçam agora a ativação das caixas de verificação de apagamento FAT e reset/atualização de ROMFS e avisam que a atualização obriga ao apagamento do sistema de ficheiros FAT. (f6f3355b0)
Outras alterações e melhorias¶
O zoo de modelos Qualcomm incluído foi reorganizado em pastas por tarefa (
image_classification,object_detection,pose_estimation,semantic_segmentation,depth_estimation), foram removidos modelos grandes não suportados (YOLOv7, YOLOv8, deeplabv3, mobilenet_v2) e foram adicionadosresnet18edensenet_121(com compatibilidade mais alargada), além defacemap_3dmmeFFNet_40S(apenas AE3/N6). (300ce2fc2)Foi adicionado um novo fornecedor de modelos Edge Impulse (modelo de deteção de faces FOMO) e novos modelos Google (
micro_speech,mnist_lstm,person_detection) ao zoo de modelos incluído, e foi adicionada uma açãoView/Editao menu de contexto do editor ROMFS. (80adb2079)Limpeza de ligações do zoo de modelos: foi adicionado o modelo Qualcomm
face_attrib_net(AE3/N6), removida a entrada YOLO-NAS com erro e corrigidos os filtros de compatibilidade de placa para vários modelos de deteção de objetos STMicroelectronics. (fd639bda0)Foram adicionadas mais etiquetas de modelos, alterada a configuração do acelerador NPU de um modelo de
staiparastedgeai, e alargado o filtro de compatibilidade de placast_yolo_x(inclui agora também OPENMV_RT1060, OPENMV4P, ARDUINO_GIGA, PORTENTA_H7 e NICLA_VISION, além de AE3/N6). (1515631ce)Ao adicionar um modelo
.tfliteao ROMFS, a compilação Vela/Ethos-U é agora ignorada se o modelo já estiver compilado para Ethos-U (é simplesmente copiado), e a ação do diálogo foi renomeada deAdd ModelparaModel Zoo. (9c0b178fa)A compilação ST Edge AI ignora a conversão para modelos já no formato
NBIN. (3064411ad)O diálogo do compilador Vela analisa o uso de SRAM reportado pelo modelo face ao tamanho de heap configurado de cada placa e mostra uma percentagem com avisos/erros quando o modelo excede 90% ou 100% da heap disponível. (7140fc2aa)
O compilador Vela reporta agora um erro claro de «não suportado nesta plataforma» em vez de falhar silenciosamente, e arrastar um modelo para o zoo de modelos já não requer a presença do Vela. (c736dd54d, 0ad7fd705)
O compilador Vela Ethos-U é agora executado através do runtime Python embebido incluído (
python -m ethosu.vela) em vez de um binário independente. (52f9b8820)Os diálogos de compilação de modelos ST Edge AI e Vela, que demoram mais tempo, mostram agora um aviso «Este comando demora algum tempo a executar. Por favor, aguarde.». (fc9ac2ab5)
A abertura de exemplos ou novos scripts em sensores PAG7936 (N6/AE3) e PS5520 incrementa agora automaticamente
sensor.set_framesize(QVGA)paraVGApara os sensores de maior resolução. (dfc27dd25)Foi adicionada a correção automática de scripts de exemplo para câmaras térmicas FLIR Boson 320/640, PixArt PAG7920/PAJ6100, FROGEYE2020 e câmara de eventos Prophesee GENX320. (1f54ad01b)
Os recursos transferíveis do IDE (firmware/modelos/documentação) são agora instalados num diretório de dados de aplicação partilhado para todos os utilizadores, através de uma nova API
ICore::allUsersResourcePath(), com o manifesto de versão de recursos armazenado num ficheiroOpenMVIDE.jsonum nível acima da pasta de recursos partilhada. (be308ace2, 7c7dddb87)Durante as atualizações de firmware do pacote de sistema Alif, o IDE solicita agora ao utilizador que ligue e desligue (desligue e volte a ligar) a câmara antes de continuar. (162d128f9, 756611696)
O fluxo de transferência do bootloader/firmware Alif (Ensemble) foi reformulado para ser compatível com ROMFS: gera o App TOC após escrever o bootloader, copia as imagens bin/sign para uma subpasta
images/e atualiza via flash o ficheirofirmware_pad.toc. (f623c9231)Os nomes de apresentação das placas no seletor de firmware foram simplificados, removendo os sufixos redundantes com o chip entre parênteses e as etiquetas «Legacy» (p. ex., «OpenMV Cam H7 (STM32H743)» passa a «OpenMV Cam H7»). (334b04dbd)
Duas ações do menu Ferramentas foram renomeadas por clareza:
Run Bootloader (Load Firmware)passa aLoad Custom Firmware, eErase Onboard Data Flashpassa aErase Internal FAT File System(o diálogo de confirmação refere agora o sistema de ficheiros FAT interno da câmara). (0bc275a0a)Foram restaurados os atalhos de teclado
Ctrl+Shift+L(Carregar Firmware Personalizado) eCtrl+Shift+E(Apagar Sistema de Ficheiros FAT Interno), e o itemPreferencesfoi movido de volta para o menuEdit. (dabb6f7d9, b5daf59a6)Foi desativada a deteção automática de compiladores e cadeias de ferramentas C/C++ no arranque, uma vez que o IDE tem como alvo o MicroPython. (f42fcc8f2)
Foi adicionado o logótipo do parceiro Alif Semiconductor (tema claro/escuro) à secção de parceiros do diálogo
About. (4878781bb)A leitura do firmware da placa ligada pode agora limpar dados obsoletos da porta série antes de emitir o comando, melhorando a fiabilidade das consultas de firmware/versão. (c15a46f5b)
A fiabilidade da ligação ROMFS foi melhorada ao forçar uma reconexão/atualização nas operações de leitura, escrita e reinicialização do ROMFS. (f9bc83007)
Correções de erros¶
Foram corrigidos os diálogos de guardar modelo/script e as ações de adicionar ficheiro/modelo ao ROMFS para utilizarem o sufixo de ficheiro simples em vez do sufixo completo, evitando extensões corrompidas ao renomear ficheiros com pontos no nome. (52c6820d2)
Foi corrigido um transbordo da barra de progresso de envio DFU em transferências grandes, calculando a percentagem com aritmética de 64 bits. (4b91ff2ba)
Foi corrigida a atualização via flash de firmware/bootloaders OpenMV mais antigos ao proteger os passos de apagamento e programação de flash contra intervalos de setores inválidos (não positivos) e ao mostrar um erro explícito em vez de falhar, e foi corrigida a proteção de acesso ROMFS durante a atualização de firmware antigo. (ae2cc15b4, 235dbdb10)
Foi corrigida a deteção de placa por porta série para que o filtro inverso do número de série seja aplicado apenas durante a validação da porta (não durante a ligação), e foram adicionados filtros inversos para a placa i.MX para excluir números de série em modo bootloader. (ae2cc15b4)
Foi corrigida a persistência do tipo de placa para que um mapeamento de placa previamente guardado deixe de ser substituído quando é feita uma seleção manual do tipo de placa. (c42d36001)
A reparação do bootloader resolve agora o nome de apresentação de uma placa oculta para a sua string de arquitetura, de modo a que a reconexão/reparação de firmware mapeie a placa correta. (a1de7a09c)
A deteção de placas efetua agora a correspondência de strings de arquitetura sem distinção entre maiúsculas e minúsculas. (7a2e0e93f)
Foi corrigida a falha de montagem do disco do dispositivo em desconexões/reconexões rápidas ao manter a thread de análise de unidades e repetir as análises até três vezes, e a análise de unidades foi tornada fiável ao executar sempre na thread de análise. (455dbe967, 58c0e5456)
Foi corrigida a falha do compilador de modelos (ST Edge AI e Vela) ao executar em Macs Intel, permitindo o caminho de ferramentas ARM64 quando executado sob Rosetta. (32e309e86)
Foram corrigidos problemas de cache de ferramentas Python e do servidor de linguagem ao encaminhar toda a
__pycache__do Python incluído para um diretório de recursos partilhado e ao pré-aquecer a pycache doblhosti.MX antes da ligação ao bootloader com limite de tempo, para que a atualização via flash deixe de expirar. (f64f3330f)Foi corrigido o caminho do cabeçalho MicroPython utilizado pelo servidor de linguagem Python (para conclusão automática) para ser resolvido a partir do caminho de recursos para todos os utilizadores, e a pesquisa do caminho de recursos para todos os utilizadores foi tornada mais robusta quando o filtro por nome de utilizador não encontra nada. (5f2648565, fc1938818)
Foram corrigidas ligações de documentação ST Edge AI no diálogo de opções do compilador, convertendo caminhos de ficheiros locais para URLs
file://corretos. (3ac136444)Foi corrigida a indentação automática do editor Python para que as linhas deixem de ser incorretamente dedentadas após uma linha terminada em dois pontos (elétrica), como após cabeçalhos
if/for/def. (6555f44ba)Foi corrigido o alinhamento de registos de diretório ROMFS para que os deslocamentos de pastas considerem o tamanho do registo do nome do diretório, e foi aumentado o atraso entre ficheiros ao descompactar/criar ficheiros ROMFS e do zoo de modelos para garantir marcas de data/hora de criação distintas. (9bf7e1d9e, d968a6e46)
Foi corrigido um transbordo de inteiro no otimizador de grafo do Vela na conversão média-para-convolução-por-profundidade ao calcular o multiplicador de saída em 64 bits, e foi corrigido o nome base utilizado no título/saída do diálogo do compilador Vela. (d217a46e9, 8376490eb)
Foi corrigida a restauração das pastas expandidas e do modelo selecionado do browser do zoo de modelos ao reabrir, e o diálogo foi alterado para alocação na heap para evitar problemas de duração da GUI. (84a63ef4c)
Foi corrigido o caminho de guardar-como do Model Zoo para que o diretório memorizado seja armazenado como pasta em vez de nome de ficheiro completo. (be877f7af)
Foi mantido o caminho de recursos legado do utilizador em vez de o eliminar no arranque, evitando um erro «feche todos os programas que estejam a aceder aos dados do OpenMV IDE» quando a pasta antiga está bloqueada. (775656775)
Foram corrigidos os scripts de instalação de drivers Windows e os ficheiros de catálogo/inf para que os drivers OpenMV DFU, dfuse, FTDI, Arduino, pybcdc e VCR se instalem corretamente e reportem códigos de êxito corretos; os scripts de instalação do driver DFU dfuse/vcr foram robustecidos e os catálogos de drivers OpenMV DFU incluídos foram reassinados. (48a0a21e3, b7b607250, b4221a884, e4f3bb8f8, 62e869c0b, 583576f2a)
Foi corrigido o instalador Linux para instalar o
pyusbatravés do pacote de distribuiçãopython3-usbe adicionarbuild-essentialem vez de executarpip install pyusb, e para detetar o sistema operativo através de/etc/os-release. (c471ddc42, 4014a0ba5)O instalador Windows ativa agora o suporte a caminhos longos para que os ficheiros ST Edge AI com estruturas de diretório muito aninhadas se instalem corretamente. (0b3ca6945)
Suporte de plataforma e ferramentas¶
Base Qt Creator: 14.0.2.
Firmware OpenMV incluído: atualizado para 4.7.0 em todas as placas OpenMV e Arduino (OPENMV2/3/4/4P/PT, RT1060, GIGA, Portenta H7, Nicla Vision, Nano 33 BLE/RP2040, AE3, N6); o firmware foi reconstruído com suporte ROMFS (
romfs0.img). (6d04b1b50, c44e33d70, a1de7a09c)ROMFS do OpenMV N6: aumentado de 16 MB para 24 MB, com a imagem romfs movida para o alt-setting 3 do DFU. (d0bbb1fe7, d7d3120b3)
ROMFS do OpenMV AE3: aumentado de 16 MB para 24 MB, com regras de alinhamento de 16/32 bytes adicionadas para os ficheiros de modelo
.binincluídos em todas as placas. (746da8914)O STM32CubeProgrammer (STM32_Programmer_CLI) é incluído para macOS, Linux e Windows com a base de dados completa de dispositivos STM32 e carregadores externos para a programação de fábrica do N6; a instalação foi reduzida, removendo os carregadores externos não utilizados e os ficheiros de base de dados por MCU para diminuir o tamanho. (334b04dbd, 54fea4d57, 28cc94a6e, 2522c900f)
Compilador ST Edge AI (stedgeai) 2.1.0 incluído (Windows) para a NPU N6 Neural-ART. (3064411ad)
Compilador ARM Ethos-U Vela 4.2.0 (com numpy 2.2.4) incluído para Linux x86-64, macOS (Apple silicon) e Windows. O pacote Windows foi adicionado inicialmente com Vela 4.1.0 / numpy 2.2.3 e posteriormente atualizado para a versão final 4.2.0 / numpy 2.2.4. (f9323a1d6, 5f551a5c5, 6506497c6, bcda7d1f0)
mpy-cross 1.25.0.post2 incluído (macOS/Windows). (8c71548df, 3ab42d58a)
Alif Security Toolkit: atualizado para v1.104.0 (binários setools assinados e Guia do Utilizador v1.104.0 em PDF) para placas baseadas em Alif Ensemble. (43260719c, 75a58e61b)
Foram adicionadas configurações NPU OPENMV_AE3 (Alif Ensemble) para os aceleradores ethos-u55-256 e ethos-u55-128 com configurações de sistema SRAM/MRAM/OSPI RTSS HP/HE. (1f5fc546d, 411f708ea)
Foram adicionados diagramas de pinagem para as câmaras OpenMV N6 e AE3 (sensor PAG7936) ao seletor de pinagem, e um novo exemplo de câmara de eventos em escala de cinzentos Genx320 demonstrando a configuração do filtro anti-cintilação. (60184bbc5, 6d04b1b50)
O reconhecimento de PID USB do Arduino Nicla Vision foi atualizado para identificar um novo PID de aplicação (0x055F) juntamente com o original (0x045F). (91ce4007c)
Os parâmetros de flash do bootloader seguro NXP/blhost foram atualizados para utilizar endereço/comprimento FCB explícitos e um tamanho de disco MBR, alinhando com o toolkit spsdk mais recente. (16b66c3e2)
O instalador Windows inclui agora um driver dedicado para o bootloader STM32 DFU e os redistribuíveis Microsoft Visual C++ 2015+. (cdcd4a5a6, 0cdebfc4c, a02b1f21a)
O zoo de modelos DeGirum YOLOv5/YOLOv8 incluído foi removido do IDE. (26710be1c)
Alterações incompatíveis¶
Alterações visíveis ao utilizador no fluxo de trabalho e comportamento na v4.7.0. Não existe quebra na API de scripting, mas tenha em atenção o seguinte:
Sistema de ficheiros FAT apagado na atualização pré-4.7.0. A atualização de qualquer OpenMV Cam de um firmware anterior a 4.7.0 força agora o apagamento do sistema de ficheiros FAT e a reinicialização/atualização do ROMFS durante a atualização de firmware (as caixas de verificação do diálogo são forçadas e não podem ser desativadas), pelo que os ficheiros do utilizador armazenados na flash interna do dispositivo serão eliminados na atualização. (f6f3355b0)
Firmware UVC e binários do bootloader Portenta H7 removidos. As imagens de firmware UVC pré-construídas (
uvc.bin/dfu/elf) foram removidas para todas as placas, e os binários do bootloader Arduino Portenta H7 foram removidos do pacote; estas imagens pré-construídas já não podem ser atualizadas via flash a partir do IDE. (c44e33d70)Relocalização do diretório de recursos. Os recursos transferíveis do IDE (firmware, zoo de modelos, documentação) são agora instalados num diretório de dados de aplicação partilhado para todos os utilizadores em vez do caminho de recursos por utilizador, e o manifesto de versão foi movido dos QSettings para um ficheiro
OpenMVIDE.jsonarmazenado um nível acima da pasta de recursos partilhada (com espelhamento de QSettings para compatibilidade retroativa). Uma nova transferência de recursos é acionada na primeira execução após a atualização. (be308ace2, 7c7dddb87)