v4.5.6¶
v4.5.6 là bản phát hành lớn về học máy. Module C TensorFlow tf được thay thế bằng gói ml mới, độc lập với engine, được hỗ trợ bởi TensorFlow Lite Micro (TFLM), chuyển đổi ảnh→tensor được chuyển sang image.to_ndarray(), và các board lõi đôi chuyển sang Open-AMP. Có một số thay đổi gây phá vỡ tương thích — hãy đọc kỹ bên dưới trước khi nâng cấp các tập lệnh ML.
Highlights¶
Mới
mlpackage — moduletfcũ được viết lại thành góimlđộc lập với engine (ml.Model,ml.preprocessing,ml.utils,ml.apps);tfvẫn còn như một alias.Backend TFLM —
libtfđã lỗi thời được thay thế bằng TensorFlow Lite Micro dựa trên upstream: suy luận nhanh hơn ~20% và thư viện nhỏ hơn.Open-AMP lõi đôi — GIGA và Portenta H7 hiện sử dụng Open-AMP/RPMsg để giao tiếp giữa lõi M7/M4 (cơ chế CM4 cũ đã bị loại bỏ).
Bluetooth tích hợp — firmware Bluetooth CYW43 được bật trên Nicla Vision, Portenta H7 và GIGA.
MicroPython 1.23.0, ulab 6.5.2 (có hỗ trợ ndarray 4 chiều).
Phá vỡ tương thích: API ML đã thay đổi đáng kể và Haar cascades bị tắt theo mặc định trên hầu hết các board — xem các thay đổi gây phá vỡ tương thích.
New features¶
Gói
ml—ml.Modelvớipredict()(roi,callback, danh sách đa đầu vào), các thuộc tính shape/dtype/scale/zero-point cho từng tensor,ml.preprocessing.Normalization,ml.utils(NMS) vàml.apps(công cụ nhận dạng từ khóaMicroSpeechthuần Python vớilisten()và streaming không chặntimeout=-1, cùngdraw_predictions()).Hệ thống mô hình tích hợp — các mô hình (ML) được liệt kê trong
models/index.txtđược nhúng có điều kiện theo từng board (FOMO trên tất cả board ML, mô hình âm thanh trên board có mic).image.to_ndarray(dtype, buffer=...)— chuyển đổi ảnh thành ulab ndarray (tùy chọn tại chỗ).Image()từ mảng thô — các đối số từ khóa mớishape=,strides=,scale=xây dựng ảnh thang xám/RGB565 từ danh sách điểm ảnh thô.draw_circle()khử răng cưa.Module
sslđược đóng băng vào firmware trên GIGA, Nicla Vision, Portenta H7, Nano RP2040 Connect, OpenMV 4/4P/PRO/PT, RT1060 và Pico.Âm thanh —
audio.init()được thêm từ khóasamples=(mẫu PDM mỗi kênh);gain_dbhiện áp dụng trên microphone DFSDM (ví dụ: Nicla Vision).Giao thức debug — lệnh
GET_STATEmới trả về các cờ run/text/JPEG, thông tin hình học khung hình và văn bản trong một gói duy nhất, giảm số vòng lặp host.Ví dụ Open-AMP vuart cho giao tiếp liên lõi.
Other changes and improvements¶
MicroPython cập nhật lên 1.23.0; ulab lên 6.5.2 với hỗ trợ ndarray 4 chiều.
Suy luận nhanh hơn — backend ML duy trì trạng thái/bộ nhớ bền vữa qua các lần gọi (~20% nhanh hơn, hỗ trợ mô hình dạng LSTM).
get_similarity()được tái triển khai trên backenddraw_image(hỗ trợ định dạng/thao tác rộng hơn).morph()và họ bộ lọcmean()chuyển sang phân tích đối số từ khóa;mask=hiện chấp nhận ảnh có thể thay đổi.Bố cục bộ nhớ được cải tổ — vùng DMA căn chỉnh theo lũy thừa 2, các khối GC có thể sắp xếp lại, nhiều heap; ít phân mảnh heap sớm hơn trên board RAM thấp; RT1060 được thêm GC heap.
WiFi (CYW43) hiện được khởi tạo lại khi soft-reset; màn hình SPI-TV chỉ xóa vùng bộ đệm khung hình từ cache để cập nhật mượt hơn.
Bug fixes¶
Camera và cảm biến:
Đã sửa lỗi vô hiệu hóa cache CPU ngẫu nhiên trong đường dẫn framebuffer/sensor trên STM32 và i.MX RT, có thể làm hỏng dữ liệu ảnh.
Đã sửa lỗi đọc I2C nhiệt MLX90640/MLX90641 trên board i.MX RT (các lần truyền lớn hiện được chia thành nhiều phần nhỏ).
Học máy:
Đã sửa lỗi xử lý
load_to_fbcủaml.Model, kích thướcbytearrayđầu vào, kiểm trandimcủa ndarray và xác thực định dạng/hình dạng ảnh củaNormalization.
Ảnh / hệ thống:
Đã thêm hằng số gợi ý vẽ
image.BLACK_BACKGROUNDcòn thiếu và kiểm tra độ dài bộ đệm ảnh/tensor.Đã sửa lỗi con trỏ gốc GC của FIR và âm thanh có thể khiến garbage collector giải phóng các bộ đệm đang sử dụng.
Ví dụ Servo Shield hiện sử dụng
SoftI2Cđể hoạt động trên board OpenMV RT.
Hardware and board support¶
Arduino GIGA — hỗ trợ cảm biến HM01B0/HM0360; Open-AMP lõi đôi.
Bluetooth — firmware CYW43 BT trên Nicla Vision, Portenta H7 và GIGA.
Portenta H7 — Open-AMP M7/M4 RPMsg.
OpenMV RT1060 — thêm các khối GC heap (nhiều bộ nhớ Python hơn).
Breaking API changes¶
Các thay đổi API hiển thị với người dùng giữa v4.5.5 và v4.5.6. Phạm vi: các C-module Python trong modules/ và thư viện Python trong scripts/libraries/.
Mỗi thay đổi được gắn nhãn mức độ ảnh hưởng:
major — hầu hết các tập lệnh sử dụng nó cần chỉnh sửa.
minor — API hẹp; chỉ ảnh hưởng đến các tập lệnh sử dụng nó.
behavior — cùng API, kết quả khác; kiểm tra lại các tập lệnh đã tinh chỉnh.
tooling — ảnh hưởng đến cơ chế lõi đôi/board, không phải API Python.
Các thay đổi được nhóm theo mức độ ảnh hưởng theo thứ tự đó. Nếu bạn chỉ muốn chuyển đổi code, hãy chuyển đến danh sách kiểm tra di chuyển ở cuối. Mỗi hash commit liên kết đến diff của nó trên GitHub.
Module tf được thay thế bởi gói ml (major)¶
Module C TensorFlow tf được viết lại thành gói ml độc lập với engine (tf được giữ lại như alias tương thích ngược, nhưng code mới nên dùng ml). Các hàm cấp module tf.load, tf.load_builtin_model và các phương thức detect()/segment()/classification đã bị loại bỏ — hãy khởi tạo ml.Model và gọi predict(). ml.Model(path) bây giờ trả về chỉ mô hình (không có tuple (labels, model)); nhãn là thuộc tính model.labels. predict() bây giờ trả về ndarrays của ulab (không phải tuple float), hỗ trợ mô hình đa đầu vào (truyền một danh sách), NMS đã chuyển sang ml.utils; chuẩn hóa đầu vào đã chuyển sang ml.preprocessing.Normalization. ml.py cũ bây giờ là ml.apps.
Commits: c7228cbb4, 6c212409c, 3e37f46db, 9a186f4e2, 70b89f474, 3f8491cb0, 4506682c2, 8b38f3837
image.unpack() đã bị loại bỏ — sử dụng to_ndarray() (major)¶
image.unpack() ngắn hạn đã bị loại bỏ; hãy chuyển đổi ảnh thành tensor bằng image.to_ndarray(dtype, buffer=...) thay thế, và áp dụng chuẩn hóa scale/mean/stdev bằng ml.preprocessing.Normalization thay vì đường dẫn scale ảnh tích hợp cũ.
Đối số scale của Image() từ mảng thô (minor)¶
Khi khởi tạo Image từ mảng điểm ảnh thô, đối số scale bây giờ nhận khoảng (min, max) thay vì (scale, add).
Commit: 7b79fb4c7
Haar cascades bị tắt theo mặc định trên hầu hết board (behavior)¶
Để giải phóng dung lượng flash, phát hiện khuôn mặt Haar-cascade (find_features() / image.HaarCascade()) hiện bị tắt theo mặc định trên Arduino GIGA, Nicla Vision, Portenta H7, OpenMV 3, OpenMV 4 / 4 Plus / PRO và OpenMV Pure Thermal. Các tập lệnh sử dụng Haar cascades trên các board đó phải biên dịch lại firmware với tính năng được bật.
Commit: 6ce27c910
Ngắt tập lệnh và co giãn tensor (behavior)¶
Trình debug USB hiện ngắt tập lệnh đang chạy thông qua tính năng VM-abort của MicroPython thay vì nhảy PendSV bắt buộc (sạch hơn, nhưng điểm ngắt khác). Scale đầu vào SCALE_S128_127 được sửa để ánh xạ 0–255 sang −128–127 mà không có độ khuếch đại sai — các mô hình (ML) dựa vào scale cũ (không chính xác) sẽ cho kết quả khác.
Bộ xử lý đồng hành CM4 được thay thế bởi Open-AMP (tooling)¶
Cơ chế firmware bộ xử lý đồng hành CM4 đã lỗi thời trên GIGA / Nicla Vision / Portenta H7 đã bị loại bỏ và thay thế bằng Open-AMP/RPMsg. Code lõi đôi phải chuyển sang mô hình Open-AMP (một ví dụ vuart được cung cấp).
Migration checklist¶
Để chuyển đổi sạch sang v4.5.6, công việc điển hình là:
Chuyển đổi code ML sang
ml: khởi tạoml.Model(path), gọipredict(), đọcmodel.labels, xử lý đầu randarray, và chuyển chuẩn hóa sangml.preprocessing.Normalizationvà NMS sangml.utils(thay đổi gói ml).Thay thế
image.unpack()bằngimage.to_ndarray()(việc loại bỏ unpack).Cập nhật bất kỳ đối số
scalecủaImage()từ mảng thô sang khoảng(min, max)(thay đổi scale của Image).Nếu bạn sử dụng Haar cascades trên board bị ảnh hưởng, hãy biên dịch lại với tính năng được bật (thay đổi Haar cascade).
Xác nhận lại các mô hình (ML) phụ thuộc vào
SCALE_S128_127(thay đổi scaling).Chuyển code lõi đôi sang Open-AMP (thay đổi CM4).