字識(shí)別檢測(cè)系統(tǒng)全棧實(shí)踐:YOLOv8/v10/v11/v12/26對(duì)比與千問(wèn)DeepSeek接入)
這個(gè)標(biāo)題信息量很大數(shù)字識(shí)別檢測(cè)系統(tǒng)、YOLOv8/v10/v11/v12/26 多版本對(duì)比、全棧實(shí)踐、千問(wèn)/DeepSeek 大語(yǔ)言模型接入。拆開來(lái)就是三條技術(shù)主線目標(biāo)檢測(cè)選型、全棧系統(tǒng)聯(lián)調(diào)、大模型結(jié)果解釋。這篇就按“先選模型、再構(gòu)系統(tǒng)、后接大模型”的順序把從訓(xùn)練到部署、從單張推理到批量任務(wù)、從檢測(cè)結(jié)果到自然語(yǔ)言解釋的完整鏈路拆開講。先說(shuō)結(jié)論這套系統(tǒng)的核心能力不是“訓(xùn)練一個(gè)模型”這么簡(jiǎn)單而是把 YOLO 系列多版本對(duì)比、模型后處理、后端 API、前端展示、大模型生成說(shuō)明串成一個(gè)可交付的業(yè)務(wù)系統(tǒng)。適合三種讀者想做畢業(yè)設(shè)計(jì)或簡(jiǎn)歷項(xiàng)目的開發(fā)者需要做數(shù)字識(shí)別類工程落地的算法工程師以及想了解 YOLO 系列版本差異和大模型接入方式的 AI 全棧學(xué)習(xí)者。硬性門檻方面訓(xùn)練階段建議有 NVIDIA GPU顯存越大越方便嘗試高分辨率模型如果只是跑推理CPU 也能跑通只是速度會(huì)慢。千問(wèn)和 DeepSeek 可以直接調(diào) API也可以選擇本地部署開源權(quán)重前者開箱即用后者對(duì)硬件要求更高。下面重點(diǎn)講模型對(duì)比、工程結(jié)構(gòu)、部署啟動(dòng)、接口設(shè)計(jì)和常見(jiàn)坑。1. 核心能力速覽能力項(xiàng)說(shuō)明項(xiàng)目類型AI 目標(biāo)檢測(cè) 全棧 Web 應(yīng)用 大語(yǔ)言模型集成模型版本YOLOv8 / v10 / v11 / v12 / v26 對(duì)比選型檢測(cè)目標(biāo)數(shù)字識(shí)別可擴(kuò)展到車牌、表單、儀表盤、票據(jù)編號(hào)等場(chǎng)景大語(yǔ)言模型千問(wèn)Qwen、DeepSeek用于生成檢測(cè)結(jié)果解釋、匯總報(bào)告、異常判斷后端框架FastAPI / Flask提供 REST API前端框架Vue 3 / React 原生 Canvas 或 UI 組件庫(kù)數(shù)據(jù)庫(kù)SQLite開發(fā)、MySQL / PostgreSQL生產(chǎn)批量任務(wù)支持圖片目錄批量推理結(jié)果匯總 CSV / JSON是否支持 API支持圖片上傳接口和大模型輔助接口啟動(dòng)方式后端 uvicorn 啟動(dòng)前端 npm 啟動(dòng)可 Docker 化推薦硬件GPU 優(yōu)先CPU 可進(jìn)行小規(guī)模驗(yàn)證顯存占用與模型尺寸、imgsz、batch_size 強(qiáng)相關(guān)需按本機(jī)實(shí)測(cè)適合場(chǎng)景畢設(shè)項(xiàng)目、簡(jiǎn)歷項(xiàng)目、中小規(guī)模數(shù)字識(shí)別應(yīng)用、AI 全棧學(xué)習(xí)2. 適用場(chǎng)景與使用邊界這類系統(tǒng)最容易想到的場(chǎng)景是測(cè)量?jī)x表數(shù)字識(shí)別讀取壓力表、水表、電表讀數(shù)自動(dòng)錄入系統(tǒng)。票據(jù)和表單編號(hào)識(shí)別識(shí)別合同編號(hào)、發(fā)票號(hào)碼、訂單號(hào)減少人工錄入。車牌中的數(shù)字識(shí)別配合字母識(shí)別完成車輛信息結(jié)構(gòu)化。工業(yè)包裝日期識(shí)別在流水線上讀取生產(chǎn)日期和批次號(hào)。教學(xué)和實(shí)驗(yàn)項(xiàng)目用一整套全棧鏈路展示目標(biāo)檢測(cè)、后端接口、前端展示、大模型調(diào)用。使用邊界也要提前說(shuō)清楚數(shù)字識(shí)別精度強(qiáng)依賴訓(xùn)練數(shù)據(jù)換一個(gè)字體、換一種光線效果可能明顯下降生產(chǎn)環(huán)境必須采集目標(biāo)場(chǎng)景的真實(shí)數(shù)據(jù)。大模型生成的結(jié)果只能作為輔助解釋不能作為決策依據(jù)尤其是涉及讀數(shù)、金額、身份證號(hào)等關(guān)鍵信息時(shí)必須加人工復(fù)核。如果處理的是真實(shí)客戶數(shù)據(jù)、個(gè)人隱私數(shù)據(jù)必須做脫敏、授權(quán)和訪問(wèn)控制。不得把系統(tǒng)用于偽造票據(jù)、篡改記錄、繞過(guò)認(rèn)證等違規(guī)用途。3. 環(huán)境準(zhǔn)備與前置條件3.1 基礎(chǔ)環(huán)境建議使用 Python 3.10 或 3.11創(chuàng)建獨(dú)立虛擬環(huán)境避免依賴沖突。conda create -n digital-ocr python3.11 -y conda activate digital-ocr然后安裝 PyTorch。注意PyTorch 安裝命令會(huì)根據(jù) CUDA 版本不同而變化請(qǐng)到 PyTorch 官網(wǎng)選擇對(duì)應(yīng)版本或者先使用 CPU 版本跑通流程。# CPU 版本適合先驗(yàn)證流程 pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu # GPU 版本示例請(qǐng)根據(jù)本機(jī) CUDA 版本調(diào)整安裝命令 # pip install torch torchvision接著安裝目標(biāo)檢測(cè)訓(xùn)練框架pip install ultralytics如果使用的是 YOLOv10可以按官方倉(cāng)庫(kù)提示安裝# YOLOv10 可能需要獨(dú)立安裝 pip install githttps://github.com/THU-MIG/yolov10.git3.2 后端依賴pip install fastapi uvicorn python-multipart pillow opencv-python pydantic requests openai pandas其中FastAPI 用于搭建推理接口。uvicorn 啟動(dòng)異步服務(wù)。pillow 和 opencv-python 處理圖片。openai 用于調(diào)用兼容 OpenAI 協(xié)議的大模型接口。pandas 用于導(dǎo)出批量檢測(cè)結(jié)果。3.3 前端環(huán)境前端使用 Vue 3 或 React 都可以。以 Vue 3 為例npm create vitelatest digital-web -- --template vue cd digital-web npm install npm install axios3.4 數(shù)據(jù)集與模型文件目錄建議目錄結(jié)構(gòu)如下digital-ocr-system/ ├── backend/ │ ├── app.py │ ├── models/ │ │ └── best.pt │ ├── datasets/ │ ├── inputs/ │ ├── outputs/ │ └── requirements.txt ├── web/ │ ├── src/ │ └── package.json └── scripts/ ├── train.py └── batch_predict.py4. 數(shù)據(jù)集準(zhǔn)備與 YOLO 多版本對(duì)比4.1 數(shù)據(jù)集怎么準(zhǔn)備數(shù)字識(shí)別本質(zhì)上是一個(gè)目標(biāo)檢測(cè)任務(wù)而不是整圖分類任務(wù)。你需要標(biāo)注出每個(gè)數(shù)字的位置和類別。類別為 0 到 9 共 10 類也可以根據(jù)業(yè)務(wù)增加小數(shù)點(diǎn)、負(fù)號(hào)、分隔符等。常用標(biāo)注工具LabelImg適合矩形框標(biāo)注。CVAT適合團(tuán)隊(duì)協(xié)作和復(fù)雜標(biāo)注。X-AnyLabeling支持輔助自動(dòng)標(biāo)注能加速人工標(biāo)注。標(biāo)注完成后導(dǎo)出為 YOLO 格式。每個(gè)圖像對(duì)應(yīng)一個(gè) txt 文件每行格式為class_id x_center y_center width height其中 x_center、y_center、width、height 都是相對(duì)圖片寬高的歸一化值。數(shù)據(jù)集目錄格式path: ./datasets/digital train: images/train val: images/val nc: 10 names: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]4.2 五個(gè) YOLO 版本怎么選YOLOv8、v10、v11、v12、v26 這幾個(gè)版本雖然都叫 YOLO但實(shí)現(xiàn)思路差異很大。YOLOv8Ultralytics 官方生態(tài)最成熟文檔多、坑少、部署資料豐富。如果你的目標(biāo)是穩(wěn)定交付優(yōu)先考慮 v8。YOLOv10最明顯的特性是去掉了 NMS 后處理推理時(shí)更簡(jiǎn)潔延遲表現(xiàn)更好。但生態(tài)完整度不如 v8需要多看官方倉(cāng)庫(kù)。YOLOv11可以看作 v8 的升級(jí)方向網(wǎng)絡(luò)結(jié)構(gòu)有調(diào)整同樣由 Ultralytics 體系維護(hù)遷移成本不高適合在 v8 跑通后做精度和速度對(duì)比。YOLOv12在注意力機(jī)制上做探索細(xì)節(jié)改進(jìn)需要以官方論文和代碼為準(zhǔn)。實(shí)際使用時(shí)要重點(diǎn)驗(yàn)證對(duì)小目標(biāo)和密集數(shù)字的召回能力。YOLOv26屬于更新迭代版本資料積累相對(duì)較少。建議在 v8/v11 跑通之后再嘗試遇到問(wèn)題需要更多查源碼能力。對(duì)比維度建議看這幾點(diǎn)相同訓(xùn)練集下的 mAP50 / mAP50-95。相同圖片分辨率下的單張推理耗時(shí)。導(dǎo)出 ONNX / TensorRT 后的部署難度。對(duì)數(shù)字這一類小目標(biāo)的召回情況。顯存占用和內(nèi)存占用。不要迷信版本越新越好。數(shù)字識(shí)別場(chǎng)景數(shù)據(jù)量往往不大YOLOv8n 或 YOLOv8s 很可能就夠了。用多個(gè)版本對(duì)比更多是為了找出最合適自己業(yè)務(wù)的那一個(gè)。5. YOLO 模型訓(xùn)練與導(dǎo)出5.1 訓(xùn)練腳本用 Ultralytics 訓(xùn)練一段基礎(chǔ)模型from ultralytics import YOLO # 加載預(yù)訓(xùn)練模型n/s/m/l/x 分別代表不同尺寸 model YOLO(yolov8n.pt) model.train( datadigital.yaml, epochs50, imgsz640, batch8, device0, # CPU 換成 devicecpu projectruns/detect, namedigital_recognition, patience10, save_period5, )關(guān)鍵參數(shù)說(shuō)明epochs訓(xùn)練輪數(shù)數(shù)據(jù)量小時(shí) 50 輪左右可看到趨勢(shì)。imgsz建議 640 起步若數(shù)字區(qū)域很小可嘗試 960。batch根據(jù)顯存調(diào)整顯存不足就調(diào)小。patience早停輪數(shù)防止過(guò)擬合。deviceGPU 使用 0CPU 使用 cpu。5.2 模型導(dǎo)出訓(xùn)練完成后導(dǎo)出為 ONNX方便后端部署和 TensorRT 加速model YOLO(runs/detect/digital_recognition/weights/best.pt) model.export(formatonnx, imgsz640, halfTrue)導(dǎo)出時(shí)的 halfTrue 可以把權(quán)重轉(zhuǎn)為 FP16減少顯存占用由 GPU 是否支持半精度來(lái)決定。6. 全棧工程結(jié)構(gòu)設(shè)計(jì)6.1 整體架構(gòu)建議拆成三層Web 前端負(fù)責(zé)上傳圖片、展示檢測(cè)框、顯示大模型生成的結(jié)果說(shuō)明。后端服務(wù)負(fù)責(zé)圖片預(yù)處理、YOLO 推理、結(jié)果格式化、大模型調(diào)用、任務(wù)記錄落庫(kù)。數(shù)據(jù)存儲(chǔ)保存用戶上傳記錄、檢測(cè)結(jié)果、大模型返回內(nèi)容。如果未來(lái)要接入實(shí)時(shí)視頻流可以再加一層消息隊(duì)列和獨(dú)立的推理 Worker。6.2 后端推理接口用 FastAPI 寫一個(gè)圖片檢測(cè)接口from fastapi import FastAPI, UploadFile, File from PIL import Image from io import BytesIO from ultralytics import YOLO app FastAPI() model YOLO(backend/models/best.pt) app.post(/detect) async def detect(file: UploadFile File(...), conf: float 0.5): image Image.open(BytesIO(await file.read())) results model.predict(image, confconf, imgsz640) detections [] for box in results[0].boxes: detections.append({ label: results[0].names[int(box.cls[0])], confidence: round(float(box.conf[0]), 4), bbox: [round(x, 2) for x in box.xyxy[0].tolist()] }) return { success: True, count: len(detections), detections: detections, }啟動(dòng)服務(wù)uvicorn backend.app:app --host 127.0.0.1 --port 8000 --reload啟動(dòng)后訪問(wèn)http://127.0.0.1:8000/docs可以看到 Swagger 文檔直接調(diào)試接口。7. 功能測(cè)試與效果驗(yàn)證7.1 單張圖片測(cè)試用一張包含多行數(shù)字的圖片調(diào)用接口curl -X POST http://127.0.0.1:8000/detect \ -F filetest.jpg \ -F conf0.5預(yù)期返回{ success: true, count: 5, detections: [ { label: 8, confidence: 0.95, bbox: [12.3, 45.6, 88.2, 120.1] } ] }判斷標(biāo)準(zhǔn)每個(gè)數(shù)字是否被正確框出。類別是否為對(duì)應(yīng)數(shù)字。置信度是否合理。是否有漏檢、誤檢、重復(fù)框。常見(jiàn)問(wèn)題漏檢說(shuō)明模型對(duì)目標(biāo)不敏感需要補(bǔ)充該類型樣本。誤檢說(shuō)明背景干擾較大需要增加背景負(fù)樣本。重復(fù)框可在后處理中做 NMS 或提高置信度閾值。7.2 多版本對(duì)比測(cè)試流程如果要在訓(xùn)練階段對(duì)比 YOLOv8/v10/v11/v12/v26建議做這樣一組實(shí)驗(yàn)固定數(shù)據(jù)集和驗(yàn)證集。使用相同 imgsz 和相同訓(xùn)練輪數(shù)。訓(xùn)練后分別記錄 best.pt 的驗(yàn)證集指標(biāo)。在相同測(cè)試圖片上統(tǒng)計(jì)單張推理耗時(shí)。對(duì)比輸出框的數(shù)量和穩(wěn)定性。更穩(wěn)妥的做法是寫一個(gè)腳本自動(dòng)讀取每個(gè)版本的 best.pt在測(cè)試集上跑一遍并匯總 mAP、每類精度和召回率、平均推理耗時(shí)。7.3 前端展示驗(yàn)證前端上傳圖片后調(diào)用/detect接口拿到檢測(cè)框坐標(biāo)后畫在 Canvas 上同時(shí)顯示類別和置信度。這里用 Vue Axios 最簡(jiǎn)示例const formData new FormData(); formData.append(file, file); formData.append(conf, 0.5); const resp await axios.post(http://127.0.0.1:8000/detect, formData); console.log(resp.data);前端判斷成功的標(biāo)準(zhǔn)是圖片上傳后能在 1 到 3 秒內(nèi)看到檢測(cè)框返回。8. 集成大語(yǔ)言模型千問(wèn) / DeepSeek8.1 為什么需要大模型YOLO 輸出的是數(shù)字框和置信度業(yè)務(wù)人員并不能直接使用。需要通過(guò)大模型把檢測(cè)結(jié)果轉(zhuǎn)換成自然語(yǔ)言說(shuō)明才能提升系統(tǒng)價(jià)值。典型場(chǎng)景識(shí)別讀數(shù)后生成“當(dāng)前儀表讀數(shù)為 1234.5處于正常范圍”的說(shuō)明。識(shí)別票據(jù)編號(hào)后生成結(jié)構(gòu)化匯總。識(shí)別到多個(gè)數(shù)字后自動(dòng)生成異常提示和人工復(fù)核建議。8.2 千問(wèn)和 DeepSeek 接入方式千問(wèn)和 DeepSeek 都提供了兼容 OpenAI 協(xié)議的服務(wù)可以先安裝 openai SDKpip install openai然后寫一個(gè)通用調(diào)用函數(shù)from openai import OpenAI client OpenAI( api_keyyour-api-key, base_urlhttps://your-service-provider.com/v1, # 按服務(wù)商官方文檔填寫 ) def explain_detect_result(detections: list[dict]) - str: prompt f 你是數(shù)字識(shí)別系統(tǒng)的解釋助手。 YOLO 模型檢測(cè)到以下數(shù)字 {detections} 請(qǐng)用簡(jiǎn)潔中文說(shuō)明 1. 一共識(shí)別到幾個(gè)數(shù)字。 2. 這些數(shù)字拼接后的讀數(shù)是多少。 3. 哪些數(shù)字置信度較低需要人工復(fù)核。 resp client.chat.completions.create( modelyour-model-name, # 千問(wèn)或 DeepSeek 按實(shí)際模型名填寫 messages[ {role: system, content: 你是嚴(yán)謹(jǐn)?shù)臋z測(cè)結(jié)果解釋助手只描述事實(shí)不猜測(cè)。}, {role: user, content: prompt}, ], temperature0.2, ) return resp.choices[0].message.content這里需要注意api_key 和 base_url 要按服務(wù)商控制臺(tái)實(shí)際信息填寫不要把密鑰提交到公開倉(cāng)庫(kù)。如果使用局域網(wǎng)內(nèi)部署的大模型base_url 指向本機(jī)或內(nèi)網(wǎng)服務(wù)。大模型輸出不穩(wěn)定建議 temperature 調(diào)低并在前端明確提示“AI 生成內(nèi)容僅供參考”。8.3 大模型結(jié)果如何與檢測(cè)結(jié)果聯(lián)動(dòng)推薦的做法是后端先完成 YOLO 檢測(cè)再把檢測(cè)結(jié)果轉(zhuǎn)成結(jié)構(gòu)化文本然后調(diào)用大模型。不要把原始圖片直接丟給大模型除非用的確實(shí)是多模態(tài)大模型。{ detect_result: [ {label: 8, confidence: 0.96, bbox: [12, 34, 56, 78]}, {label: 5, confidence: 0.78, bbox: [80, 34, 120, 78]} ], llm_interpretation: 檢測(cè)到 2 個(gè)數(shù)字組合讀數(shù)為 85。其中數(shù)字 5 置信度較低建議人工復(fù)核。 }這樣數(shù)據(jù)庫(kù)里既能保存結(jié)構(gòu)化結(jié)果也能保存大模型生成的解釋文本。9. 批量任務(wù)與工程化9.1 批量推理腳本生產(chǎn)環(huán)境往往需要處理大量圖片。先寫一個(gè)簡(jiǎn)單的目錄級(jí)批量推理腳本import json from pathlib import Path from ultralytics import YOLO model YOLO(backend/models/best.pt) input_dir Path(inputs) output_dir Path(outputs) output_dir.mkdir(exist_okTrue) summary [] for img_path in sorted(input_dir.glob(*.jpg)): result model.predict(str(img_path), conf0.5, imgsz640) detections [] for box in result[0].boxes: detections.append({ label: result[0].names[int(box.cls[0])], confidence: float(box.conf[0]), bbox: [float(x) for x in box.xyxy[0].tolist()] }) summary.append({ image: img_path.name, count: len(detections), detections: detections }) with open(outputs/summary.json, w, encodingutf-8) as f: json.dump(summary, f, ensure_asciiFalse, indent2) print(batch done:, len(summary))9.2 批量結(jié)果合并建議再導(dǎo)出一份 CSV方便用 Excel 查看import pandas as pd rows [] for item in summary: for d in item[detections]: rows.append({ image: item[image], label: d[label], confidence: d[confidence], x1: d[bbox][0], y1: d[bbox][1], x2: d[bbox][2], y2: d[bbox][3], }) df pd.DataFrame(rows) df.to_csv(outputs/summary.csv, indexFalse, encodingutf-8-sig)使用 utf-8-sig 編碼避免用 Excel 打開 CSV 時(shí)中文亂碼。9.3 任務(wù)隊(duì)列建議如果圖片量非常大建議引入 Celery Redis 或 RabbitMQ把推理任務(wù)放入隊(duì)列由多個(gè) Worker 消費(fèi)。每個(gè)任務(wù)包含圖片路徑、模型版本、參數(shù)完成后把結(jié)果寫入數(shù)據(jù)庫(kù)。批量任務(wù)必須加失敗重試和日志記錄不能任務(wù)卡死也不知道原因。10. 資源占用與性能觀察10.1 顯存和 CPU 怎么觀察推理時(shí)可以用nvidia-smi實(shí)時(shí)觀察顯存占用nvidia-smiCPU 和內(nèi)存占用可以直接看任務(wù)管理器也可以用top更精細(xì)的做法是在推理循環(huán)里打印耗時(shí)import time start time.time() result model.predict(str(img_path), conf0.5) elapsed time.time() - start print(f{img_path.name}: {elapsed:.2f}s)10.2 哪些因素影響性能模型尺寸n 最小x 最大推理耗時(shí)差異明顯。輸入分辨率imgsz 越大耗時(shí)和顯存越高。batch size批量推理能提高 GPU 利用率但顯存不夠就失敗。推理后端CPU 最慢GPU 默認(rèn) CUDA還可以轉(zhuǎn) ONNX TensorRT 追求低延遲。圖片本身復(fù)雜度單張圖里數(shù)字越多后處理時(shí)間也會(huì)上升。10.3 怎么降低資源占用訓(xùn)練階段用 yolov8n 或 yolov8s。推理前把大圖縮放到合適尺寸。批量推理時(shí) batch size 從 1 開始往上加找到不爆顯存的臨界值。導(dǎo)出 FP16 ONNX 模型。CPU 推理時(shí)限制線程數(shù)。關(guān)閉不需要的窗口和程序釋放內(nèi)存。11. 常見(jiàn)問(wèn)題與排查方法問(wèn)題現(xiàn)象可能原因排查方式解決方案依賴安裝失敗網(wǎng)絡(luò)原因或 Python 版本不兼容看 pip 日志更換鏡像源升級(jí) Python使用虛擬環(huán)境CUDA 不可用驅(qū)動(dòng)或版本不匹配在 Python 中執(zhí)行 import torch; print(torch.cuda.is_available())按官方文檔匹配 CUDA 版本或先用 CPU模型文件缺失best.pt 路徑寫錯(cuò)檢查文件是否存在修改模型路徑重新導(dǎo)出接口啟動(dòng)后訪問(wèn)不到端口被占用netstat -ano 查看端口換端口啟動(dòng)uvicorn --port 8001檢測(cè)不到數(shù)字置信度閾值過(guò)高或模型訓(xùn)練不足調(diào)低 conf 試試補(bǔ)充標(biāo)注數(shù)據(jù)調(diào)整閾值增加訓(xùn)練輪數(shù)檢測(cè)框大量重復(fù)NMS 未生效或模型過(guò)擬合查看模型后處理邏輯調(diào)高 NMS 參數(shù)檢查訓(xùn)練數(shù)據(jù)前端跨域報(bào)錯(cuò)后端未開 CORS瀏覽器控制臺(tái)看報(bào)錯(cuò)FastAPI 添加 CORSMiddleware大模型響應(yīng)超時(shí)網(wǎng)絡(luò)延遲或模型負(fù)載高看后端日志增加 timeout改用異步調(diào)用降級(jí)為本地規(guī)則生成中文輸出亂碼編碼問(wèn)題檢查接口返回編碼統(tǒng)一使用 UTF-8CSV 導(dǎo)出用 utf-8-sig顯存不足imgsz 或 batch 太大看 nvidia-smi調(diào)小 imgsz調(diào)小 batch換小模型FastAPI 開啟 CORS 的示例from fastapi.middleware.cors import CORSMiddleware app.add_middleware( CORSMiddleware, allow_origins[*], allow_credentialsTrue, allow_methods[*], allow_headers[*], )生產(chǎn)環(huán)境不要把 allow_origins 寫成*應(yīng)限制為前端實(shí)際地址。12. 最佳實(shí)踐與合規(guī)建議把工程化經(jīng)驗(yàn)收攏成幾條第一版先跑通最小閉環(huán)YOLO 默認(rèn)模型檢測(cè) - FastAPI 返回 JSON - 前端畫框 - 大模型寫說(shuō)明。完整閉環(huán)跑通后再做模型對(duì)比和性能優(yōu)化。數(shù)據(jù)集和模型分開管理輸入圖片、輸出結(jié)果、日志放到不同目錄方便追溯。訓(xùn)練腳本固定隨機(jī)種子保證多次訓(xùn)練結(jié)果可復(fù)現(xiàn)。每個(gè)版本的模型單獨(dú)保存記錄數(shù)據(jù)版本、訓(xùn)練參數(shù)、測(cè)試指標(biāo)方便做橫向?qū)Ρ取E咳蝿?wù)必須寫日志至少記錄每條圖片的處理狀態(tài)、耗時(shí)、成功還是失敗。大模型輸出不可控所有 AI 解釋必須在界面上標(biāo)注“AI 生成需人工復(fù)核”。如果真實(shí)業(yè)務(wù)涉及身份證號(hào)、銀行卡號(hào)、合同金額等敏感信息必須做數(shù)據(jù)脫敏和權(quán)限控制。不得使用未授權(quán)數(shù)據(jù)訓(xùn)練模型不得用系統(tǒng)篡改、偽造任何票據(jù)或記錄。13. 總結(jié)與下一步這個(gè)項(xiàng)目的最大價(jià)值不是“訓(xùn)練一個(gè)能識(shí)別數(shù)字的模型”而是把目標(biāo)檢測(cè)、后端服務(wù)、前端界面、大語(yǔ)言模型四條技術(shù)線打通。先跑通 YOLOv8 的最小閉環(huán)再在同一個(gè)數(shù)據(jù)集上分別訓(xùn)練 v10、v11、v12、v26把精度、速度、顯存占用、部署難度做成對(duì)比表格最后接入千問(wèn)或 DeepSeek讓檢測(cè)結(jié)果變成業(yè)務(wù)人員能讀懂的語(yǔ)言。最容易踩的坑有兩個(gè)一是數(shù)據(jù)集質(zhì)量不夠卻急著換模型版本二是大模型結(jié)果直接當(dāng)權(quán)威輸出。前者只要耐心標(biāo)注和清洗數(shù)據(jù)就能解決后者必須在產(chǎn)品層面加人工復(fù)核和免責(zé)說(shuō)明。接下來(lái)你可以按這個(gè)順序擴(kuò)展先完成單張圖片檢測(cè)接口再批量處理一個(gè)真實(shí)場(chǎng)景的數(shù)字圖片目錄然后接入大模型生成報(bào)告最后把模型導(dǎo)出 ONNX 并用 Docker 封裝整套服務(wù)。走完這一步你就具備獨(dú)立交付一個(gè) AI 全棧檢測(cè)系統(tǒng)的能力了。