v3.0.0¶
A versão v3.0.0 é a atualização principal v2 → v3. Introduz a OpenMV Cam M7 (STM32F7) e o novo módulo de rede neuronal nn CMSIS-NN (substituindo os antigos métodos fixos find_number() / classify_object()), adiciona suporte aos sensores MT9V034 de obturador global e FLIR Lepton, os framesizes sensor.WVGA, e atualiza o núcleo para MicroPython 1.9.4. Vários comportamentos de image / sensor / WiFi foram alterados — consulte as alterações que quebram compatibilidade abaixo.
Destaques¶
OpenMV Cam M7 — nova placa STM32F7.
Módulo
nn— inferência CMSIS-NN:nn.load(),Net.forward(),Net.search(), com um conversor de modelos e exemplos.Novos sensores — MT9V034 de obturador global (acionado por FSIN) e FLIR Lepton.
Atualização do núcleo MicroPython 1.9.4.
Alteração que quebra compatibilidade: os métodos fixos
image.find_number()/image.classify_object()foram removidos,sensor.sleep()passa agora a levantar exceção, os sockets WINC devolvem contagens reais de bytes,image.binary()devolve uma nova imagem, efind_apriltags()está limitado a 64K pixels — consulte as alterações que quebram compatibilidade.
Novas funcionalidades¶
nn— novo módulo de rede neuronal CMSIS-NN:nn.load(path),Net.forward(img, roi=, softmax=, dry_run=)(devolve floats entre 0.0 e 1.0),Net.search()para deteção multi-escala/posição, eNet.test(), mais um conversor de modelos CMSIS-NN (nn_convert.py/nn_quantizer.py), modelos CIFAR-10 / LeNet / smile incluídos, e scripts de exemplo NN / NN-search.Sensores — suporte ao MT9V034 de obturador global (captura acionada por FSIN) na OpenMV 4, um driver FLIR Lepton atualizado com captura Lepton, e os novos framesizes
sensor.WVGA(720x480) /sensor.WVGA2(752x480).Processamento de imagem —
image.find_circles()ganhou as palavras-chaver_min/r_max/r_step(Hough mais rápido),find_keypoints()e o Haarfind_features()aceitam agora imagens RGB, eimage.compress()/ codificação JPEG suporta agora imagens binárias (bitmap).Arranque —
boot.pyé agora executado antes da inicialização USB para que possa substituir o modo USB (por ex. HID).Exemplos — adicionados exemplos de AprilTag em pequena/alta resolução, um exemplo I2C LIDAR-Lite V3, e ferramentas de conjunto de dados (
augment_images.py/make_patches.py).
Outras alterações e melhorias¶
Atualizado o MicroPython incluído para 1.9.4 (com uma reversão de pyexec parse/compile/exec e correção do PendSV); mensagens de erro
fb_alloc/xallocde memória esgotada mais claras; suprimida saídannprintf durante o carregamento de redes; repositório reorganizado (exemplos →scripts/, ferramentas →tools/, cascatas Haar →ml/). O módulonnnão está disponível na OpenMV 2 (flash insuficiente).
Correções de erros¶
Processamento de imagem:
Corrigidos
fast_atan2fpara x≤0 (anteriormente sempre 0 — verifique novamente os ângulos de mancha / linha / ponto-chave), o tratamento de memória defind_apriltags()(conteúdo descartado e um realloc incorreto em OOM), ponteiros de linha por bpp para imagens binárias/bitmap (resultados binários corrompidos),find_edges(EDGE_CANNY)com uma ROI, a macroTO_GS_PIXEL(integral / morph), transmissão bitmap/JPEG para fotogramas em escala de cinzentos (bpp==0), opop_frontda lista de pontos-chave/manchas, e os resultados dematch_descriptor.
Sistema e câmara:
Corrigidos os números de interface/endpoint USB HID, a alteração dinâmica da frequência XCLK em tempo de execução,
Net.forward()a devolver o número correto de saídas, e uma falha grave ao interromper a análise de scripts.
Hardware e suporte a placas¶
OpenMV Cam M7 (STM32F7) — nova placa.
Sensor de obturador global MT9V034 (OpenMV 4, acionado por FSIN).
FLIR Lepton — driver atualizado com suporte a captura.
Alterações que quebram compatibilidade na API¶
Alterações visíveis pelo utilizador na API entre v2.9.0 e v3.0.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada alteração está marcada com o seu impacto:
maior — afeta a maioria dos scripts que utilizavam a funcionalidade; será necessário portar código.
menor — API restrita; afeta apenas scripts que a utilizavam.
comportamento — mesma API, resultados diferentes; verifique novamente os scripts ajustados.
As alterações estão agrupadas por impacto nessa ordem. Se apenas pretende portar o seu código, avance para a lista de verificação de migração no final. Cada hash de commit tem uma ligação para o seu diff no GitHub.
image.find_number() / image.classify_object() removidos (maior)¶
Os métodos fixos image.find_number() (LeNet) e image.classify_object() (CMSIS CNN) foram removidos em favor do novo módulo nn. Substitua-os por net = nn.load('/model.network'); out = net.forward(img).
Commits: d151f7e38
sensor.sleep() / sensor.reset() levantam exceção em caso de falha (menor)¶
sensor.sleep() e sensor.reset() levantam agora uma exceção em caso de falha em vez de devolverem True / False. O código que verificava o valor booleano devolvido por sensor.sleep() deve envolver a chamada em try / except.
Commits: 7d16d008f
Os sockets WINC devolvem a contagem real de bytes (comportamento)¶
Os métodos send / recv / sendto / recvfrom dos sockets WINC1500 devolviam anteriormente sempre 0; passam agora a devolver o número real de bytes transferidos. O código que assumia uma devolução de 0 (ou que iterava/bloqueava com base nela) deve tratar as contagens reais.
Commits: a07fb2f60
image.binary() devolve uma nova imagem (comportamento)¶
image.binary() ganhou as palavras-chave to_bitmap / copy e passa agora a devolver um novo objeto de imagem em vez de devolver/modificar a imagem de origem no local. O código que dependia de binary() modificar a imagem original deve usar o objeto devolvido (e passar copy=True para comportamento não-in-place).
Commits: 8a44f0cd9
Lista de verificação de migração¶
Para uma migração limpa para v3.0.0, o trabalho típico é:
Substitua
image.find_number()/image.classify_object()pelo módulonn(a migração para nn).Envolva
sensor.sleep()/sensor.reset()emtry/exceptem vez de verificar um valor booleano devolvido (a alteração de sensor.sleep).Trate as contagens reais de bytes dos sockets WINC
send/recv(a alteração dos sockets WINC).Use a imagem devolvida por
image.binary()em vez de esperar uma modificação no local (a alteração de binary).Reduza a escala das imagens antes de
find_apriltags()para ficar abaixo de 64K pixels (o limite de find_apriltags).
Todos os outros scripts funcionam sem alterações.