v4.6.0¶
v4.6.0 เป็นการเผยแพร่ฟีเจอร์หลัก สิ่งที่โดดเด่น ได้แก่ โมดูลกล้องถูกเปลี่ยนชื่อจาก sensor เป็น csi (โดยมี sensor เป็นนามแฝงที่ยังคงใช้งานได้เพื่อความเข้ากันได้แบบย้อนหลัง) โมดูลใหม่ ml.postprocessing รองรับ Prophesee GenX320 event sensor, PAG7936 และกล้องความร้อน FLIR Boson บูตโหลดเดอร์ DFU แบบใหม่ที่ใช้ TinyUSB การเร่งความเร็วด้วย Nema GPU และ MicroPython 1.24 นอกจากนี้ยังมีการเปลี่ยนแปลงช่วงค่า alpha ในการวาด ดังนั้นโปรดอ่านการเปลี่ยนแปลงที่อาจทำให้เกิดปัญหาด้านล่าง
ไฮไลต์¶
sensorขณะนี้ยังเป็นcsiด้วย — โมดูลกล้องถูกเปลี่ยนชื่อเป็นcsiโดยsensorยังคงใช้งานได้เป็นนามแฝงที่เข้ากันได้แบบย้อนหลัง (ยังไม่ต้องเปลี่ยนโค้ด)โมดูลใหม่
ml.postprocessing—fomo_postprocess,yolo_v2_postprocess,yolo_v5_postprocessเซนเซอร์ใหม่ — กล้อง event-based Prophesee GenX320, PAG7936 และกล้องความร้อน FLIR Boson 320/640
DFU bootloader ใหม่ — บูตโหลดเดอร์ DFU มาตรฐานแบบ TinyUSB ทดแทนบูตโหลดเดอร์ CDC รุ่นเก่าบนบอร์ดทุกรุ่น
Nema GPU — การเร่งความเร็วกราฟิก 2D/vector บน STM32
MicroPython อัปเดตเป็น 1.24.0
Breaking: ช่วงค่า
alphaในการวาดเปลี่ยนจาก 0–256 เป็น 0–255 (ดู การเปลี่ยนแปลงช่วง alpha)
ฟีเจอร์ใหม่¶
ml.postprocessing— โมดูลใหม่สำหรับถอดรหัสผลลัพธ์ของโมเดล ประกอบด้วยตัวถอดรหัส FOMO (fomo_postprocess,find_blobs+ NMS,thresholdที่ปรับได้) และyolo_v2_postprocess/yolo_v5_postprocess(พร้อมthreshold,anchors,nms_threshold,nms_sigma)การแสดงผล event-camera — เมธอดใหม่
Image.to_evt_dark()/Image.to_evt_light()และชุดสีพาเลตต์PALETTE_EVT_DARK/PALETTE_EVT_LIGHTการแสดงผลเชิงความลึก — เมธอดใหม่
Image.to_depth()และชุดสีพาเลตต์PALETTE_DEPTH(บอร์ดที่รองรับ ToF)การตรวจสอบ sensor — ioctl ใหม่
IOCTL_GET_RGB_STATSที่คืนค่า tuple สถิติช่องสี(R, Gb, Gr, B)GenX320 bias presets — ioctl ใหม่
IOCTL_GENX320_SET_BIASESพร้อมพรีเซตGENX320_BIASES_DEFAULT/LOW_LIGHT/ACTIVE_MARKER/LOW_NOISE/HIGH_SPEEDomv.debug_mode()— ฟังก์ชันใหม่สำหรับตรวจสอบว่าอินเทอร์เฟซดีบักผ่าน USB กำลังทำงานอยู่หรือไม่Nema GPU — การรวม driver Cortex-M55 NemaGFX/NemaVG บน STM32 พร้อมการเร่งความเร็ว GPU แบบ in-place สำหรับ
draw_imagePAG7936 — เพิ่มการแสดงผลแถบสี, auto-exposure / auto-gain, sleep และโหมด MIPI
การเปลี่ยนแปลงและปรับปรุงอื่น ๆ¶
MicroPython อัปเดตเป็น 1.24.0; ulab อัปเดตเป็น 6.7.3 (เพิ่ม
keepdims)สคริปต์บูตร่วม — STM32 / i.MX RT / RP2 ขณะนี้ใช้
_boot.pyร่วมกันซึ่งสร้างระบบไฟล์ flash/SD โดยอัตโนมัติพร้อมmain.pyและREADME.txtเริ่มต้น และล้าง global ที่ใช้เฉพาะตอนเริ่มต้นการวางรากฐาน STM32N6 — รองรับ STM32N6 เบื้องต้น, XSPI driver, MPU driver ร่วม และการเซ็นเฟิร์มแวร์/บูตโหลดเดอร์บน STM32
Computed-goto VM — เปิดใช้งานบน STM32 และ nRF เพื่อเพิ่มความเร็ว interpreter
การแก้ไขบั๊ก¶
กล้องและเซนเซอร์:
แก้ไขการคำนวณ PCLK/exposure ของ OV5640 (สองเลน MIPI, ตาราง divider ที่ถูกต้อง)
ตัวแปรสาย Bayer-CFA ของ MT9V0xx ขณะนี้รับ RGB565/BAYER/GRAYSCALE และส่งออกข้อมูล Bayer ดิบที่ถูกต้องแทนการแจ้งข้อผิดพลาด
เปิดใช้งานการแก้ไข lens-shading ของ PAG7936 และแก้ไขการเลื่อนภาพ HD; ขณะนี้
set_framerate()ถูกจำกัดตามความละเอียดแก้ไขการจับภาพความร้อน FLIR Lepton บน i.MX RT1060 (แก้ไข VoSPI CPOL/CPHA) และสแนปช็อต Lepton ขณะนี้คืนค่ารหัสข้อผิดพลาดเฉพาะ
แก้ไขการปัดเศษความถี่ของ GenX320
การประมวลผลภาพ:
แก้ไขการเสียหายของหน่วยความจำใน
to_ndarray()สำหรับภาพ grayscaleแก้ไขการทำนายขอบเขต debayer ในการแปลง Bayer→RGB/grayscale
แก้ไข
draw_image()transposeบนบอร์ดที่ไม่มี SDRAM (chunked buffer)แก้ไขการจัดการอาร์กิวเมนต์บูลีนใน
Image.binary()และ flagload_to_fbของml.Model
ระบบ:
แก้ไขการกำหนดค่าพิน RX-only / TX-only ของ SPI บน STM32 และ i.MX RT
ย้าย DMA buffer ของ Ethernet บน Portenta H7 ไปไว้ใน SRAM3 เพื่อให้ Ethernet ทำงานได้
แก้ไขตัวอักษรหายในการส่งข้อความผ่านช่องทาง debug ผ่าน USB; ปรับขนาดการจัดสรรหน่วยความจำแบบไดนามิกของ ML ให้ปัดขึ้นเพื่อป้องกัน buffer ของโมเดลมีขนาดเล็กเกินไป
ฮาร์ดแวร์และการรองรับบอร์ด¶
เซนเซอร์ vision แบบ event-based Prophesee GenX320 (STM32F7 + i.MX RT1060)
เซนเซอร์ PAG7936 (พร้อมโหมด MIPI)
กล้องความร้อน FLIR Boson 320/640 (IDD 4 driver)
การเร่งความเร็ว Nema GPU บน STM32
การวางรากฐานบูตโหลดเดอร์/XSPI ของ STM32N6
VL53L5CX — เพิ่มการรองรับพิน power-enable
การเปลี่ยนแปลง API ที่อาจทำให้เกิดปัญหา¶
การเปลี่ยนแปลง API ที่มองเห็นได้จากผู้ใช้ระหว่าง v4.5.9 และ v4.6.0 ขอบเขต: Python C-modules ใน modules/ และไลบรารี Python ใน scripts/libraries/
การเปลี่ยนแปลงแต่ละรายการถูกกำกับด้วยระดับผลกระทบ:
major — สคริปต์ส่วนใหญ่ที่ใช้งานจำเป็นต้องแก้ไข
minor — API แคบ; ส่งผลกระทบเฉพาะสคริปต์ที่ใช้งาน
behavior — API เหมือนเดิม แต่ผลลัพธ์ต่างกัน; ตรวจสอบสคริปต์ที่ปรับแต่งแล้วอีกครั้ง
tooling — ส่งผลกระทบเฉพาะการ flash / host tools / การรองรับบอร์ด
การเปลี่ยนแปลงถูกจัดกลุ่มตามระดับผลกระทบตามลำดับนั้น หากต้องการพอร์ตโค้ดโดยเร็ว ให้ข้ามไปยัง รายการตรวจสอบการย้ายระบบ ที่ท้าย hash ของ commit แต่ละรายการเชื่อมโยงไปยัง diff บน GitHub หมายเหตุ: การเปลี่ยนชื่อโมดูล sensor → csi ในการเผยแพร่นี้ ไม่ ทำให้เกิดปัญหา — sensor ยังคงทำงานได้เป็นนามแฝง
ช่วงค่า alpha ในการวาดขณะนี้คือ 0–255 (major)¶
อาร์กิวเมนต์ alpha ของ draw_image() และการซ้อนทับทุกรายการที่รับค่านั้น (FIR, ToF, display, TV, MJPEG, alpha tables) ขณะนี้ใช้ช่วง 0–255 แทน 0–256 สคริปต์ที่ส่งค่า 256 สำหรับทึบแสงอย่างสมบูรณ์ หรือคำนวณ alpha เทียบกับ 256 จะต้องปรับสเกลให้อยู่ในช่วง 0–255
Commit: 1f87b5bb6
ค่าคงที่ FLIR Lepton ioctl ถูกเปลี่ยนชื่อ (minor)¶
ค่าคงที่ Lepton ioctl สามรายการถูกย่อให้สั้นลง: IOCTL_LEPTON_SET_MEASUREMENT_MODE → IOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGE → IOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATURE → IOCTL_LEPTON_GET_FPA_TEMP ตัวอย่างที่รวมมาได้รับการอัปเดตแล้ว
Commit: 12582d54d
การเปลี่ยนแปลง API การประมวลผลหลัง ML (minor)¶
ml.postprocessing เป็นโมดูลใหม่ในการเผยแพร่นี้และ API ของมันเปลี่ยนแปลงระหว่างการพัฒนา: คีย์เวิร์ดตัวสร้าง yolo_v2_postprocess ชื่อ score_threshold ถูกเปลี่ยนชื่อเป็น threshold และผลลัพธ์การประมวลผลหลังที่ว่างเปล่าขณะนี้คืนค่า () แทน [] โมเดลที่รวมมาชื่อ yolov5_rgb_person ถูกเปลี่ยนชื่อเป็น yolo_v5_224_nano และ ml.apps.MicroSpeech ขณะนี้ส่งต่อ **kwargs ใดก็ได้ไปยัง audio.init() แทนที่จะกำหนด gain_db=24 ตายตัว
Commits: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c
AGAST เป็นตัวตรวจจับมุมเริ่มต้น (behavior)¶
find_keypoints() ขณะนี้ใช้ AGAST แทน FAST เป็นตัวตรวจจับมุมเริ่มต้นบนบอร์ดทุกรุ่น ชุดจุดสำคัญ (และการจับคู่ตัวบ่งชี้ลักษณะ) จึงแตกต่างจากการเผยแพร่ก่อนหน้า — ตรวจสอบ pipeline จุดสำคัญที่ปรับแต่งไว้อีกครั้ง การสตรีม frame buffer ของ IDE ยังถูกจำกัดไว้ที่ 20 Hz เพื่อลดภาระ USB
บูตโหลดเดอร์, บอร์ดและฟีเจอร์ที่ถูกลบออก (tooling)¶
บูตโหลดเดอร์ CDC รุ่นเก่าถูกแทนที่ด้วยบูตโหลดเดอร์ standard DFU แบบใหม่ที่ใช้ TinyUSB บนบอร์ดทุกรุ่น — กลไกการอัปเดตเฟิร์มแวร์เปลี่ยนไป; อัปเดต workflow/tooling การ flash ของคุณตามนั้น บอร์ด OpenMV Pro, บิลด์ Raspberry Pi Pico แบบแยกเดี่ยว และฟีเจอร์ WiFi-debug (wifidbg) สำหรับ remote-IDE ถูกลบออก
Commits: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2
รายการตรวจสอบการย้ายระบบ¶
สำหรับการพอร์ตที่ราบรื่นไปยัง v4.6.0 งานทั่วไปที่ต้องทำ ได้แก่:
ปรับสเกลค่า
alphaของการวาด/การซ้อนทับทุกค่าจากช่วง 0–256 เป็น 0–255 (การเปลี่ยนแปลงช่วง alpha)เปลี่ยนชื่อค่าคงที่ FLIR Lepton ioctl เป็นรูปแบบที่สั้นลง (การเปลี่ยนชื่อ Lepton ioctl)
หากคุณใช้ตัวประมวลผลหลัง ML ใหม่ ให้เปลี่ยน
score_thresholdเป็นthreshold, จัดการผลลัพธ์ว่างเปล่า()และอัปเดตชื่อโมเดลyolo_v5_224_nano(การเปลี่ยนแปลง ML)ตรวจสอบ pipeline ที่ใช้
find_keypoints()สำหรับการเปลี่ยนตัวตรวจจับเป็น AGAST (การเปลี่ยนแปลงตัวตรวจจับมุม)อัปเดต workflow การ flash เฟิร์มแวร์ของคุณสำหรับบูตโหลดเดอร์ DFU ใหม่ (การเปลี่ยนแปลงบูตโหลดเดอร์/บอร์ด)