v4.7.0¶
A v4.7.0 é uma grande versão focada em NPU e ROMFS, construída sobre o Qt Creator 14.0.2. Ela introduz um fluxo de trabalho de sistema de arquivos ROM no próprio dispositivo, com compiladores de modelos ARM Ethos-U (Vela) e ST Edge AI integrados, adiciona programação de fábrica baseada no STM32CubeProgrammer para a OpenMV N6 e inclui o firmware OpenMV 4.7.0 em todas as placas. Observe que atualizar qualquer câmera a partir de um firmware anterior à 4.7.0 agora força um apagamento do sistema de arquivos FAT e uma redefinição da ROMFS, o que apaga os arquivos armazenados na flash interna do dispositivo; consulte Mudanças incompatíveis abaixo.
Destaques¶
O fluxo de trabalho do Sistema de Arquivos ROM permite criar, editar, gravar e redefinir um sistema de arquivos somente leitura no próprio dispositivo, de modo que modelos de ML possam ser armazenados na câmera, integrado aos 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 agora estão integrados, de modo que modelos
.tflite/.onnxsão compilados automaticamente para a NPU ao serem carregados em placas Ethos-U55 (OpenMV AE3) ou Neural-ART (OpenMV N6). (411f708ea, 3064411ad)O STM32CubeProgrammer agora vem incluído para habilitar a programação de fábrica do bootloader da OpenMV N6 (STM32N657) por meio de um
FlashLayout.tsv. (334b04dbd, 54fea4d57, 28cc94a6e)O navegador do Model Zoo ganha uma caixa de seleção “Filtrar modelos por tipo de placa”, controlada por uma nova tabela
models/index.csvque oculta modelos incompatíveis com a placa conectada. (80adb2079)Alinhamento de ROMFS por extensão: o editor de imagens ROMFS agora ordena os arquivos alfabeticamente e os empacota usando regras de alinhamento de bytes definidas em
settings.json(por exemplo, modelos.tflitealinhados a 16 bytes). (e87b2bf06)Firmware incluído atualizado para 4.7.0 em todas as placas OpenMV e Arduino. (6d04b1b50, d0bbb1fe7, d7d3120b3)
Novos recursos¶
O submenu do Sistema de Arquivos ROM (
New/Open/Edit ROMFS on OpenMV Cam/Reset ROMFS on OpenMV Cam) substitui a antiga ação únicaEdit ROM File System. (0bc275a0a, 958f732b5)Navegador Open Model Zoo com estado persistente do modelo selecionado e uma pré-visualização ao mudar a seleção, incluindo bibliotecas de modelos da STMicroelectronics, Qualcomm, DeGirum, Edge Impulse e Google já incluídas. (58033c5df, 2a1fb071a, 48c5b96fe, c0959833c)
O item de menu Convert Model for NPU, em
Machine Vision Tools, compila um modelo TensorFlow Lite (.tflite) ou ONNX (.onnx) para o acelerador NPU da placa (Vela para.tfliteEthos-U, ST Edge AI para.tflite/.onnxNeural-ART da N6) e salva o modelo convertido em disco ou na câmera. (3913f5b8b)A ferramenta Copy/Convert Python File copia um script Python para a câmera ou para o disco e, opcionalmente, o compila para bytecode MicroPython
.mpyviampy-cross; ela fica em um novo submenuMicroPython Toolsdentro deTools. (e9d7fa143, 47188c0e3)Botões de alternância Wrap Text foram adicionados ao terminal serial do OpenMV e ao painel de saída
General Messages; ambos quebram a saída em palavras e mantêm a configuração entre sessões. (8c052845a, 51d3e1ad6)A compilação cruzada de ROMFS com mpy-cross, com flags de arquitetura por placa (
armv7emsp/armv7emdp), permite que scripts MicroPython sejam congelados em imagens ROMFS. (8c71548df)A caixa de diálogo do bootloader de firmware agora aceita arquivos ROMFS
*.imgalém de*.bine*.dfu, valida as extensões por bootloader e desabilita a caixa de seleção existenteReset ROMFS file systemao carregar um arquivo*.img. (79f348b36)Atualizações a partir de versões anteriores à 4.7.0 agora forçam a ativação das caixas de seleção de apagamento da FAT e de redefinição/atualização da ROMFS e avisam que a atualização exige apagar o sistema de arquivos FAT. (f6f3355b0)
Outras mudanças e melhorias¶
Reorganizou o model zoo da Qualcomm incluído em pastas baseadas em tarefas (
image_classification,object_detection,pose_estimation,semantic_segmentation,depth_estimation), removeu modelos grandes sem suporte (YOLOv7, YOLOv8, deeplabv3, mobilenet_v2) e adicionouresnet18edensenet_121(com compatibilidade mais ampla de placas), além defacemap_3dmmeFFNet_40S(somente AE3/N6). (300ce2fc2)Adicionou um novo fornecedor de modelos Edge Impulse (modelo de detecção de rostos FOMO) e novos modelos do Google (
micro_speech,mnist_lstm,person_detection) ao model zoo incluído, e adicionou uma açãoView/Editao menu de contexto do editor ROMFS. (80adb2079)Organizou os links do model zoo: adicionou o modelo
face_attrib_netda Qualcomm (AE3/N6), removeu a entrada quebrada YOLO-NAS e corrigiu os filtros de compatibilidade de placas para vários modelos de detecção de objetos da STMicroelectronics. (fd639bda0)Adicionou mais rótulos de modelos, alterou a configuração do acelerador NPU de um modelo de
staiparastedgeaie ampliou o filtro de compatibilidade de placas dest_yolo_x(agora também OPENMV_RT1060, OPENMV4P, ARDUINO_GIGA, PORTENTA_H7 e NICLA_VISION, além de AE3/N6). (1515631ce)Adicionar um modelo
.tfliteà ROMFS agora pula a compilação Vela/Ethos-U se o modelo já estiver compilado para Ethos-U (ele é apenas copiado), e a ação da caixa de diálogo foi renomeada deAdd ModelparaModel Zoo. (9c0b178fa)A compilação ST Edge AI pula a conversão de modelos que já estão no formato
NBIN. (3064411ad)A caixa de diálogo do compilador Vela analisa o uso de SRAM relatado pelo modelo em relação ao tamanho de heap configurado de cada placa e mostra um percentual com avisos/erros quando o modelo excede 90% ou 100% do heap disponível. (7140fc2aa)
O compilador Vela agora informa um erro claro de “não compatível com esta plataforma” em vez de falhar silenciosamente, e arrastar um modelo para o model zoo não exige mais que o Vela esteja presente. (c736dd54d, 0ad7fd705)
O compilador Vela Ethos-U agora roda por meio do runtime Python embarcado incluído (
python -m ethosu.vela) em vez de um binário independente. (52f9b8820)As caixas de diálogo de compilação de modelos ST Edge AI e Vela, que demoram bastante, agora exibem o aviso “This command takes a while to execute. Please be patient.”. (fc9ac2ab5)
Abrir exemplos ou novos scripts em sensores PAG7936 (N6/AE3) e PS5520 agora aumenta automaticamente
sensor.set_framesize(QVGA)paraVGAnos sensores de maior resolução. (dfc27dd25)Adicionou o ajuste automático de scripts de exemplo para câmeras térmicas FLIR Boson 320/640, PixArt PAG7920/PAJ6100, FROGEYE2020 e a câmera de eventos Prophesee GENX320. (1f54ad01b)
Os recursos baixáveis do IDE (firmware/modelos/documentação) agora são instalados em um diretório de dados de aplicativo compartilhado por todos os usuários por meio de uma nova API
ICore::allUsersResourcePath(), com o manifesto de versão dos recursos armazenado em um arquivoOpenMVIDE.jsonum nível acima da pasta de recursos de todos os usuários. (be308ace2, 7c7dddb87)Durante atualizações de firmware de pacote de sistema Alif, o IDE agora solicita ao usuário que faça o ciclo de energia (desconectar e reconectar) da câmera antes de continuar. (162d128f9, 756611696)
Reformulou o fluxo de download de bootloader/firmware Alif (Ensemble) para ser compatível com ROMFS: ele gera o App TOC após gravar o bootloader, copia as imagens bin/sign para uma subpasta
images/e grava ofirmware_pad.toc. (f623c9231)Simplificou os nomes de exibição das placas no seletor de firmware removendo os sufixos redundantes de chip entre parênteses e as tags “Legacy” (por exemplo, “OpenMV Cam H7 (STM32H743)” passa a ser “OpenMV Cam H7”). (334b04dbd)
Renomeou duas ações do menu Tools para maior clareza:
Run Bootloader (Load Firmware)agora éLoad Custom Firmware, eErase Onboard Data Flashagora éErase Internal FAT File System(a caixa de diálogo de confirmação agora se refere ao sistema de arquivos FAT interno da câmera). (0bc275a0a)Restaurou os atalhos de teclado
Ctrl+Shift+L(Load Custom Firmware) eCtrl+Shift+E(Erase Internal FAT File System) e moveu o itemPreferencesde volta para o menuEdit. (dabb6f7d9, b5daf59a6)Desabilitou a detecção automática de compilador C/C++ e de toolchain na inicialização, já que o IDE tem como alvo o MicroPython. (f42fcc8f2)
Adicionou o logo do parceiro Alif Semiconductor (claro/escuro) à seção de parceiros da caixa de diálogo
About. (4878781bb)A leitura do firmware da placa conectada agora pode descartar dados obsoletos da porta serial antes de emitir o comando, melhorando a confiabilidade das consultas de firmware/versão. (c15a46f5b)
Melhorou a confiabilidade da conexão ROMFS forçando uma reconexão/atualização nas operações de leitura, escrita e redefinição da ROMFS. (f9bc83007)
Correções de bugs¶
Corrigiu as caixas de diálogo de salvamento de modelo/script e a adição de arquivo/modelo na ROMFS para usar o sufixo simples do arquivo em vez do sufixo completo, evitando extensões corrompidas ao renomear arquivos com pontos em seus nomes. (52c6820d2)
Corrigiu um estouro da barra de progresso de upload DFU em transferências grandes calculando o percentual com aritmética de 64 bits. (4b91ff2ba)
Corrigiu a gravação de firmwares/bootloaders OpenMV mais antigos protegendo as etapas de apagamento e programação da flash contra intervalos de setores inválidos (não positivos) e exibindo um erro explícito em vez de travar, e corrigiu a proteção de acesso à ROMFS durante a atualização de firmware antigo. (ae2cc15b4, 235dbdb10)
Corrigiu a detecção de placas na porta serial para que o filtro inverso de número de série seja aplicado apenas durante a validação da porta (e não durante a conexão), e adicionou filtros inversos para a placa i.MX, de modo que números de série em modo bootloader sejam excluídos. (ae2cc15b4)
Corrigiu a persistência do tipo de placa para que um mapeamento de placa salvo anteriormente não seja mais sobrescrito quando uma seleção manual de tipo de placa é feita. (c42d36001)
O reparo do bootloader agora resolve o nome de exibição de uma placa oculta para sua string de arquitetura, de modo que a reconexão/reparo de firmware mapeie a placa correta. (a1de7a09c)
A detecção de placas agora compara as strings de arquitetura de placa sem diferenciar maiúsculas de minúsculas. (7a2e0e93f)
Corrigiu a falha de montagem do disco do dispositivo em desconexões/reconexões rápidas mantendo persistente a thread de varredura de drives e repetindo a varredura até três vezes, e fez a varredura de drives rodar de forma confiável na thread de varredura. (455dbe967, 58c0e5456)
Corrigiu a falha de execução do compilador de modelos (ST Edge AI e Vela) em Macs Intel permitindo o caminho da ferramenta ARM64 ao rodar sob o Rosetta. (32e309e86)
Corrigiu problemas de cache da ferramenta Python e do language server roteando todo o
__pycache__do Python incluído para um diretório de recursos compartilhado e pré-aquecendo o pycache doblhostda i.MX antes da conexão de bootloader com tempo limitado, de modo que a gravação não atinja mais o tempo limite. (f64f3330f)Corrigiu o caminho do header MicroPython usado pelo language server Python (para autocompletar) para resolver a partir do caminho de recursos de todos os usuários, e tornou a busca do caminho de recursos de todos os usuários mais robusta quando a filtragem por nome de usuário não encontra nada. (5f2648565, fc1938818)
Corrigiu links quebrados da documentação ST Edge AI na caixa de diálogo de opções do compilador convertendo caminhos de arquivos locais em URLs
file://adequadas. (3ac136444)Corrigiu a indentação automática do editor Python para que as linhas não sejam mais incorretamente recuadas após uma linha terminada em dois-pontos (elétrica), por exemplo, após cabeçalhos
if/for/def. (6555f44ba)Corrigiu o alinhamento dos registros de diretório da ROMFS para que os deslocamentos das pastas levem em conta o tamanho do registro do nome do diretório, e aumentou o atraso entre arquivos ao descompactar/criar arquivos ROMFS e do model zoo para garantir carimbos de data/hora de criação distintos. (9bf7e1d9e, d968a6e46)
Corrigiu um estouro de inteiro na conversão de mean para depthwise-conv do otimizador de grafos do Vela calculando o multiplicador de saída em 64 bits, e corrigiu o basename usado no título/saída da caixa de diálogo do compilador Vela. (d217a46e9, 8376490eb)
Corrigiu a restauração das pastas expandidas e do modelo selecionado no navegador do model zoo ao reabri-lo, e mudou a caixa de diálogo para alocação em heap para evitar problemas de tempo de vida da GUI. (84a63ef4c)
Corrigiu o caminho de salvar-como do Model Zoo para que o diretório lembrado seja armazenado como uma pasta em vez de um nome de arquivo completo. (be877f7af)
Manteve o caminho de recursos de usuário legado em vez de excluí-lo na inicialização, evitando um erro “feche quaisquer programas que estejam visualizando dados do OpenMV IDE” quando a pasta antiga está bloqueada. (775656775)
Corrigiu os scripts do instalador de drivers do Windows e os arquivos de catálogo/inf para que os drivers OpenMV DFU, dfuse, FTDI, Arduino, pybcdc e VCR instalem de forma confiável e relatem corretamente os códigos de sucesso, reforçou os scripts de instalação dos drivers DFU dfuse/vcr e reassinou os catálogos do driver OpenMV DFU incluído. (48a0a21e3, b7b607250, b4221a884, e4f3bb8f8, 62e869c0b, 583576f2a)
Corrigiu o instalador do Linux para instalar o
pyusbpor meio do pacotepython3-usbda distribuição e adicionarbuild-essentialem vez de rodarpip install pyusb, e para detectar o sistema operacional via/etc/os-release. (c471ddc42, 4014a0ba5)O instalador do Windows agora habilita o suporte a caminhos longos para que arquivos ST Edge AI profundamente aninhados sejam instalados corretamente. (0b3ca6945)
Suporte a plataformas 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 a ROMFS (
romfs0.img). (6d04b1b50, c44e33d70, a1de7a09c)ROMFS da OpenMV N6: aumentada de 16MB para 24MB, com a imagem da romfs movida para a alt-setting 3 do DFU. (d0bbb1fe7, d7d3120b3)
ROMFS da OpenMV AE3: aumentada de 16MB para 24MB, com regras de alinhamento de 16/32 bytes adicionadas para os arquivos de modelo
.binincluídos em todas as placas. (746da8914)STM32CubeProgrammer (STM32_Programmer_CLI) incluído para macOS, Linux e Windows com o banco de dados completo de dispositivos STM32 e loaders externos para a programação de fábrica da N6; a instalação foi enxugada removendo loaders externos não utilizados e arquivos de banco de dados por MCU para reduzir o tamanho. (334b04dbd, 54fea4d57, 28cc94a6e, 2522c900f)
Compilador ST Edge AI (stedgeai) 2.1.0 incluído (Windows) para a NPU Neural-ART da N6. (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 para Windows foi primeiro adicionado no Vela 4.1.0 / numpy 2.2.3 e depois 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 a v1.104.0 (binários setools assinados e PDF do Guia do Usuário v1.104.0) para placas baseadas no Alif Ensemble. (43260719c, 75a58e61b)
Adicionou configurações de NPU OPENMV_AE3 (Alif Ensemble) direcionadas aos aceleradores ethos-u55-256 e ethos-u55-128 com configurações de sistema RTSS HP/HE SRAM/MRAM/OSPI. (1f5fc546d, 411f708ea)
Adicionou diagramas de pinagem para as câmeras OpenMV N6 e AE3 (sensor PAG7936) ao seletor de pinagem, e um novo exemplo de câmera de eventos em escala de cinza Genx320 demonstrando a configuração do filtro anti-cintilação. (60184bbc5, 6d04b1b50)
Atualizou a correspondência de PID USB da Arduino Nicla Vision para reconhecer um novo PID de aplicação (0x055F) além do original (0x045F). (91ce4007c)
Atualizou os parâmetros de gravação do secure-bootloader NXP/blhost para usar endereço/comprimento explícitos do FCB e um tamanho de disco MBR, alinhando-se ao toolkit spsdk mais recente. (16b66c3e2)
O instalador do Windows agora inclui um driver dedicado de bootloader DFU STM32 e os redistribuíveis Microsoft Visual C++ 2015+. (cdcd4a5a6, 0cdebfc4c, a02b1f21a)
Removeu o model zoo DeGirum YOLOv5/YOLOv8 incluído do IDE. (26710be1c)
Mudanças incompatíveis¶
Quebras de fluxo de trabalho e de comportamento visíveis ao usuário na v4.7.0. Não há quebra na API de scripting, mas observe o seguinte:
Sistema de arquivos FAT apagado na atualização a partir de versões anteriores à 4.7.0. Atualizar qualquer OpenMV Cam a partir de um firmware anterior à 4.7.0 agora força o apagamento do sistema de arquivos FAT e a redefinição/atualização da ROMFS durante a atualização de firmware (as caixas de seleção da caixa de diálogo são forçadas a ficar ativas e não podem ser desabilitadas), de modo que os arquivos de usuário armazenados na flash interna do dispositivo serão apagados na atualização. (f6f3355b0)
Binários de firmware UVC e do bootloader da Portenta H7 removidos. As imagens de firmware de webcam UVC pré-construídas (
uvc.bin/dfu/elf) foram removidas de todas as placas, e os binários do bootloader da Arduino Portenta H7 foram removidos do pacote; essas imagens pré-construídas não podem mais ser gravadas pelo IDE. (c44e33d70)Realocação do diretório de recursos. Os recursos baixáveis do IDE (firmware, model zoo, documentação) agora são instalados em um diretório de dados de aplicativo compartilhado por todos os usuários em vez do caminho de recursos por usuário, e o manifesto de versão foi movido do QSettings para um arquivo
OpenMVIDE.jsonarmazenado um nível acima da pasta de recursos de todos os usuários (com espelhamento retrocompatível no QSettings). Um novo download dos recursos é disparado na primeira execução após a atualização. (be308ace2, 7c7dddb87)