大家好,我是賀老師,嵌入式 AI工程師,《嵌入式AI:讓單片機(jī)學(xué)會(huì)思考》主理人,專注AI在MCU上的落地實(shí)踐。

YOLO 的全稱是 You Only Look Once,它是一類目標(biāo)檢測(cè)模型。它不是只判斷一張圖里“有沒(méi)有某個(gè)物體”,而是要同時(shí)回答三個(gè)問(wèn)題:圖像里有哪些目標(biāo)、目標(biāo)在什么位置、每個(gè)目標(biāo)屬于什么類別。
普通圖像分類模型的輸出通常是一個(gè)類別,例如“這張圖是貓”。YOLO 的輸出更復(fù)雜,它會(huì)給出多個(gè)檢測(cè)框,每個(gè)框包含坐標(biāo)、類別和置信度。
圖像輸入↓YOLO 模型↓檢測(cè)框坐標(biāo) + 類別 + 置信度
所以 YOLO 比普通分類模型更重。它不僅要提取圖像特征,還要完成目標(biāo)定位和類別判斷。對(duì) MCU 來(lái)說(shuō),真正有壓力的不是“能不能識(shí)別”,而是圖像輸入尺寸、卷積計(jì)算量、中間特征圖、后處理和實(shí)時(shí)幀率。
簡(jiǎn)單區(qū)分:圖像分類是判斷整張圖是什么;目標(biāo)檢測(cè)是找出圖里每個(gè)目標(biāo)在哪里、是什么。YOLO 屬于目標(biāo)檢測(cè),不是普通分類。
YOLO 可以部署到 STM32 上,但前提不是把任意 YOLO 模型直接放進(jìn)去。必須選擇輕量版本,控制輸入分辨率,完成量化,確認(rèn)算子支持,再用 STM32 對(duì)應(yīng)的 AI 工具鏈生成部署工程。
1. 選模型
優(yōu)先選擇 Tiny YOLO、YOLOv8n 這類輕量模型,而不是完整大模型。
2. 控分辨率
輸入尺寸越大,計(jì)算量和 RAM 壓力越高,MCU 上必須控制圖像尺寸。
3. 做量化
通常要轉(zhuǎn)成 int8,減少模型體積和計(jì)算壓力。
4. 查算子
模型中的卷積、激活、上采樣、后處理等操作要確認(rèn)工具鏈支持。
5. 生成工程
使用 STM32Cube.AI、ST Edge AI 或 Model Zoo 相關(guān)工具生成部署代碼。
6. 實(shí)測(cè)性能
最終看目標(biāo)板上的 RAM、Flash、推理耗時(shí)、幀率和檢測(cè)效果。
訓(xùn)練或選擇 YOLO 模型↓裁剪類別 / 降低輸入尺寸 / 選擇輕量結(jié)構(gòu)↓導(dǎo)出 ONNX 或 TFLite↓量化為 int8↓用 STM32 AI 工具鏈轉(zhuǎn)換和分析↓部署到目標(biāo) STM32 板卡↓接入攝像頭、圖像預(yù)處理、NMS 后處理和顯示/通信
這里每一步都有實(shí)際意義。類別數(shù)量影響輸出規(guī)模,輸入尺寸影響計(jì)算量,量化影響精度和速度,算子支持決定能否成功生成工程,NMS 后處理會(huì)影響整體耗時(shí)。
核心判斷:YOLO 部署到 STM32,不是只看模型文件能不能轉(zhuǎn)換成功,而是要看完整鏈路能不能在目標(biāo)硬件上穩(wěn)定運(yùn)行,包括攝像頭輸入、圖像預(yù)處理、模型推理、后處理和結(jié)果輸出。
“YOLO 能不能部署到 STM32 上”,這個(gè)問(wèn)題不能脫離具體芯片回答。STM32F103、STM32F4、STM32H7、STM32N6 都叫 STM32,但資源和定位完全不同。
如果說(shuō)“YOLO 能不能部署到 STM32 上”,答案是能;但如果說(shuō)“任意 YOLO 都能部署到任意 STM32 上”,答案肯定不是。
在 STM32N6 這類帶 NPU、面向邊緣 AI 的芯片上,輕量 YOLO 有現(xiàn)實(shí)部署價(jià)值。在傳統(tǒng) STM32F103、STM32F4 這類資源有限的 MCU 上,YOLO 不是合適目標(biāo),應(yīng)該選擇更小的模型和更簡(jiǎn)單的任務(wù)。
一句話總結(jié):YOLO 可以部署到 STM32,但真正的問(wèn)題不是“能不能”,而是“哪顆 STM32、哪個(gè) YOLO、什么輸入尺寸、多少類別、能接受多少幀率”。
如果目標(biāo)是演示和學(xué)習(xí),先從分類模型、小目標(biāo)檢測(cè)模型、低分辨率輸入開(kāi)始。如果目標(biāo)是產(chǎn)品落地,就必須圍繞目標(biāo)芯片資源、模型量化、算子支持、推理耗時(shí)和后處理開(kāi)銷(xiāo)做完整評(píng)估。
end