免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

YOLO26模型導(dǎo)出全攻略:從ONNX到TensorRT的完整避坑指南

YOLO26模型導(dǎo)出全攻略:從ONNX到TensorRT的完整避坑指南 【內(nèi)容安全審查】通過YOLO26 模型導(dǎo)出從訓(xùn)練到部署的最后一公里我踩過的坑和最終方案做計算機視覺的同學(xué)應(yīng)該都有這種經(jīng)歷訓(xùn)練時各種指標(biāo)刷得飛起模型在 Colab 上跑得好好的loss 降得賞心悅目mAP 也說得過去。結(jié)果到了要交付的時候?qū)熁蛘呒追揭痪洹鞍涯P徒o我我這邊要接進系統(tǒng)”你才發(fā)現(xiàn)手里只有一個.pt文件拿去給對方的 C 工程師人家眉頭一皺這玩意兒我們這邊跑不了。這就是模型導(dǎo)出的意義。YOLO26 作為目前 YOLO 系列里熱度一直居高不下的版本網(wǎng)上關(guān)于它訓(xùn)練、改進、結(jié)構(gòu)圖解析的內(nèi)容已經(jīng)很多了但“訓(xùn)練完之后怎么把模型導(dǎo)出成不同平臺能吃的格式”這塊系統(tǒng)性講清楚的內(nèi)容反而不多。不少做計算機視覺大作業(yè)的同學(xué)、做 YOLO26 人員入侵檢測項目的人甚至很多已經(jīng)在跑 YOLO26 訓(xùn)練自己數(shù)據(jù)集的工程師都卡在了導(dǎo)出這一步。這篇東西我想把它徹底講透。你不需要是部署專家只要手里有一個訓(xùn)練好的 YOLO26 模型能看懂 Python按著下面的思路走一遍基本就能把 ONNX、OpenVINO、TensorRT 這些格式理清楚也知道每一步為什么要那么做。1. 導(dǎo)出不只是“換個后綴”模型的運行世界變了很多人第一次接觸導(dǎo)出覺得就是把.pt轉(zhuǎn)成.onnx本質(zhì)上是文件格式轉(zhuǎn)換。這個理解不算錯但太淺了會導(dǎo)致后面遇到問題完全找不到方向。1.1 訓(xùn)練框架和推理引擎對“模型”的理解完全不同PyTorch 里的模型本質(zhì)是一堆層結(jié)構(gòu)加上一堆權(quán)重然后被 Python 的 runtime 動態(tài)解釋執(zhí)行。它靈活、方便調(diào)試但每跑一次前向都要經(jīng)過 Python 層的調(diào)度圖的優(yōu)化也幾乎為零。這在訓(xùn)練階段完全沒問題因為訓(xùn)練本身就要頻繁改權(quán)重、算梯度本來就需要這種靈活性。但推理不一樣。推理的時候模型結(jié)構(gòu)是固定的權(quán)重也是固定的不存在反向傳播也不存在動態(tài)建圖的需求。推理引擎要的是“把計算圖固化下來針對固定 shape 做極致優(yōu)化”。這就是為什么業(yè)界要把訓(xùn)練好的模型從 PyTorch 里“搬”出來搬到一個中立的、描述計算圖的格式里。ONNXOpen Neural Network Exchange就是這個“中立格式”。PyTorch 訓(xùn)練完的模型導(dǎo)出成 ONNX 后相當(dāng)于把整張計算圖固化成了標(biāo)準(zhǔn)化的描述文件。邏輯上它就是一個“計算圖快照”任何支持 ONNX 的推理引擎ONNX Runtime、TensorRT、OpenVINO、Core ML 等都能讀取并執(zhí)行它。用個生活化的比喻PyTorch 模型像一位會臨場發(fā)揮的廚師你告訴他“做一道魚”他會根據(jù)今天有什么食材、灶臺什么火力、自己當(dāng)時的心情決定具體怎么做。而 ONNX 就像一份精確到克數(shù)的菜譜食材、步驟、火候全部寫死。你把這菜譜給任何一個能看懂菜譜的廚房各種推理引擎都能做出一模一樣的菜。1.2 ONNX、TensorRT、OpenVINO 各管哪一段路這是新手最容易懵的地方格式太多了分不清。我把它們按“離硬件有多近”排個序就清楚了ONNX最中立的計算圖描述格式本身不做太多優(yōu)化像一個通用的中間表示IR不太依賴具體硬件。它能跑的地方最廣但優(yōu)化的空間也最大。ONNX RuntimeORT微軟出品的推理引擎直接吃 ONNX 文件。它在 CPU 和 GPU 上都能跑做了不少圖優(yōu)化和算子融合適合做“通用部署”。OpenVINOIntel 出品的推理工具套件針對 Intel CPU、集成顯卡、Movidius 神經(jīng)計算棒做了深度優(yōu)化。如果你部署的目標(biāo)機器是 Intel CPUOpenVINO 往往是性能最好的選擇之一。它可以把 ONNX 進一步轉(zhuǎn)成它自己的 IR 格式.xml.bin也可以直接讀 ONNX。TensorRTNVIDIA 出品的推理優(yōu)化器只在 NVIDIA GPU 上工作。它會針對你的目標(biāo) GPU 做層融合、精度校準(zhǔn)、kernel 自動調(diào)優(yōu)是“NVIDIA GPU 上推理性能天花板”級別的存在。它吃 ONNX轉(zhuǎn)化后再序列化成 TensorRT engine.engine文件。Core MLApple 生態(tài)的模型格式給 iPhone、Mac 上用的。所以整個導(dǎo)出的鏈路一般是PyTorch (.pt) → ONNX → OpenVINO / TensorRT / Core ML / ONNX Runtime理解了這條鏈路你就明白為什么大家總說“先導(dǎo)出 ONNX”它是一個必經(jīng)的中間站是 PyTorch 和各個硬件推理引擎之間的“通用語言”。不只是 YOLO26YOLOv5、v8、v11 這些全是這個套路。1.3 NMS 在導(dǎo)出流程里的真正地位提到 YOLO 導(dǎo)出有個繞不開的東西叫NMSNon-Maximum Suppression非極大值抑制。YOLO 模型輸出的原始裸結(jié)果是一大堆候選框每張圖可能有上萬甚至幾萬個框其中絕大多數(shù)是重疊的、低置信度的“廢框”。NMS 的作用就是把這些框過濾、合并最后留下每個目標(biāo)位置上最合適的那個框。訓(xùn)練和驗證的時候NMS 是在 PyTorch 代碼里用純 Python 或 C 擴展實現(xiàn)的這部分邏輯根本沒進到模型的計算圖里。而導(dǎo)出成 ONNX 后你拿到的是“模型輸出原始框”這一步NMS 要不要一起導(dǎo)出就成了 YOLO 系列導(dǎo)出時最容易出現(xiàn)分歧的大問題。實際工程里主流做法是模型只導(dǎo)出到“原始輸出”為止NMS 后處理放在推理代碼里用目標(biāo)語言C/C#/Java/Go自己寫。原因后面會詳述但你現(xiàn)在先記住導(dǎo)出 YOLO 系列模型基本默認不導(dǎo)出 NMS除非你的部署場景非常特殊比如目標(biāo)檢測的嵌入式端后處理寫起來極其困難才有動力把 NMS 一起塞進模型里。2. 你的 YOLO26 是“哪一款”不同任務(wù)導(dǎo)出的策略不一樣在具體動手前先別急著敲命令。你要回頭看一下自己訓(xùn)練的 YOLO26 到底是“哪一款”模型。YOLO 系列從 v8 開始就不僅僅是目標(biāo)檢測器了它同時支持分類、分割、姿態(tài)估計這些任務(wù)。YOLO26 在這個基礎(chǔ)上還衍生出了 depth深度估計等變體網(wǎng)上搜“yolo26 depth”“yolo26 姿態(tài)模型版本區(qū)別”就能看到很多人都在這塊有疑問。不同任務(wù)類型模型輸出的頭head完全不同導(dǎo)出的注意事項也各不相同。2.1 常規(guī)目標(biāo)檢測模型的導(dǎo)出重點這是最簡單、最常見的情況。你訓(xùn)練了一個 YOLO26 目標(biāo)檢測模型比如 YOLO26n、yolo26s、yolo26m 這些用來做人員入侵檢測、安全帽檢測、車輛識別等任務(wù)。這種情況導(dǎo)出時核心關(guān)注點有三個輸入尺寸訓(xùn)練時用的 imgsz 是多少導(dǎo)出時就盡量保持一致。雖然 ONNX 支持動態(tài)輸入但對推理性能不友好后面細說。輸出格式Y(jié)OLO 檢測模型的原始輸出一般是[1, 4 num_classes, 8400]這種形狀具體數(shù)字取決于模型輸入尺寸和 stride其中 4 是框坐標(biāo)cx, cy, w, h 或 xyxynum_classes 是類別數(shù)8400 是不同尺度特征圖上的候選框總數(shù)輸入 640 時。導(dǎo)出時你會在輸出節(jié)點上看到類似名字。要不要 NMS默認不要。讓下游代碼自己處理。如果你是用 Ultralytics 框架訓(xùn)練的 YOLO26框架本身已經(jīng)把導(dǎo)出邏輯封裝好了正常情況一句model.export()就能搞定。但如果你跑的是別人魔改的 YOLO26網(wǎng)上“yolo26 改進專欄”里這種特別多比如加了注意力機制、換了檢測頭就不能完全依賴框架自動導(dǎo)出要手動檢查改動過的層能不能被 ONNX 算子集支持。這是最讓人頭疼的場景我后面會用一節(jié)專門講怎么排查這類問題。2.2 depth 版本導(dǎo)出時處理額外輸出頭如果你用的是 YOLO26 depth 版本用于單目深度估計它的網(wǎng)絡(luò)結(jié)構(gòu)在檢測頭之外還掛了一個深度頭輸出的是一個和輸入圖像尺寸成一定比例的深度圖。導(dǎo)出這種模型你要額外確認深度頭的輸出名稱和 shape導(dǎo)出的 ONNX 文件中深度輸出是一個獨立的輸出節(jié)點通常像[1, H, W]或[1, H/scale, W/scale]。深度值范圍你訓(xùn)練時的深度標(biāo)簽是相對深度0~1還是絕對深度米模型輸出的原始值范圍是什么這些信息雖然不影響導(dǎo)出但會影響你部署后怎么處理深度圖最好在導(dǎo)出的同時寫進模型說明文檔。后處理差異檢測分支可能需要 NMS深度分支只需要插值縮放回原圖尺寸并做可視化或后續(xù)計算。這決定了你在推理代碼里要同時處理“框后處理”和“深度圖后處理”兩套邏輯導(dǎo)出本身沒區(qū)別但部署代碼要注意。姿態(tài)模型導(dǎo)出與模型版本差異YOLO26 的姿態(tài)模型pose輸出就更特殊了。Ultralytics 框架里的 pose 模型訓(xùn)練好的.pt導(dǎo)出 ONNX 后輸出通常是兩個頭的拼接或分開一個是檢測框分支一個是關(guān)鍵點分支。以 COCO 姿態(tài)任務(wù)為例關(guān)鍵點通常是 17 個每個點有(x, y, confidence)三個值。所以關(guān)鍵點分支的輸出維度一般是 batch 相關(guān)、通道數(shù) 17 * 3。檢測框分支仍然輸出框和類別置信度。這里必須注意“版本差異”。網(wǎng)上搜“yolo26 姿態(tài)模型版本區(qū)別”能看到很多人在問同一個 YOLO26 名字下有不同權(quán)重版本關(guān)鍵點位順序、坐標(biāo)約定是不是和 COCO 一致是否帶了可見性 flagvisible flag這些細節(jié)不同訓(xùn)練腳本導(dǎo)出的結(jié)果形狀就不一樣。我的建議是導(dǎo)出姿態(tài)模型之前先拿一張測試圖用 PyTorch 原始模型推理一遍打印出每個輸出的 shape并人工檢查關(guān)鍵點的坐標(biāo)值是不是符合預(yù)期。只有確認了“PyTorch 階段輸出是正確的”你導(dǎo)出 ONNX 后去對比才有參照物。如果你連 PyTorch 階段的輸出都沒確認過導(dǎo)出后出了 bug 你根本分不清是導(dǎo)出環(huán)節(jié)的問題還是模型本身的問題。2.4 基于 YOLO26 做人員入侵檢測等項目時的導(dǎo)出選型結(jié)合很多做“YOLO26 人員入侵檢測”這類計算機視覺項目的同學(xué)其實是為了交大作業(yè)或者做畢設(shè)。這種項目通常需要部署在一臺普通的電腦上甚至可能是 CPU only 的機器。這種場景下我最推薦導(dǎo)出OpenVINO格式原因有兩點Intel CPU 是個巨大的存量市場OpenVINO 對此的優(yōu)化是出了名的猛經(jīng)常能在不損失精度的情況下比純 PyTorch CPU 推理快 2 到 4 倍。Ultralytics 框架原生支持導(dǎo)出 OpenVINO一條命令就能完成還會幫你生成配套的部署文件。如果項目方指定要用 NVIDIA GPU 跑推理那就直接上 TensorRT。雖然推理速度最快但因為它和具體顯卡綁定注意是“綁定”不是“兼容”換了一張顯卡型號甚至驅(qū)動版本都可能要重新導(dǎo)出在交付時要多留個心眼千萬別只給客戶一個 .engine 文件一定要把 ONNX 文件一起交付不然客戶換臺機器就跑不了。3. 直接抄作業(yè)我驗證過的導(dǎo)出流程和參數(shù)配置理論鋪墊完了現(xiàn)在進入實操。下面是我在自己的環(huán)境里跑通的完整導(dǎo)出流程包含了環(huán)境準(zhǔn)備和導(dǎo)出命令以及每一步背后的選擇邏輯。3.1 環(huán)境準(zhǔn)備與版本對齊先說一個重要教訓(xùn)導(dǎo)出 YOLO26 前先確認你的 ultralytics 包版本和你下載/訓(xùn)練的模型來源一致。YOLO26 相關(guān)的代碼和權(quán)重在社區(qū)里流傳速度很快往往你今天下載的yolo26n.pt需要用某個特定版本的ultralytics包才能正常加載。如果你是在跑“yolo26 環(huán)境配置”時按網(wǎng)上的博客裝了一個版本的包然后又從另一個來源下載了權(quán)重很可能加載時就報錯或者行為異常。我本地的建議環(huán)境組合Python 3.9~3.11PyTorch 2.1 或以上ultralytics 包版本以你模型來源說明為準(zhǔn)一般 8.2.x 之后的版本對 YOLO26 支持比較完整onnxruntime 1.17 以上用于導(dǎo)出后驗證onnx 1.15 以上openvino 2024.x如果用 CPU 部署建議導(dǎo)出 OpenVINO 格式tensorrt 8.6 或以上如果用 NVIDIA GPU建議導(dǎo)出 TensorRT提示Torch、CUDA、TensorRT 三個版本要互相兼容這是老生常談但永遠有人在這上面翻車。TensorRT 對 CUDA 版本很敏感建議統(tǒng)一用 NVIDIA 官方文檔里列的兼容矩陣來配。你可以在終端里檢查版本python -c import torch, ultralytics, onnx, onnxruntime; print(torch.__version__, ultralytics.__version__, onnx.__version__, onnxruntime.__version__)如果輸出里沒有報錯說明基礎(chǔ)環(huán)境沒問題。3.2 標(biāo)準(zhǔn)導(dǎo)出命令與超參選擇如果是用 Ultralytics 框架訓(xùn)練的 YOLO26最笨但也最靠譜的導(dǎo)出代碼長這樣from ultralytics import YOLO # 加載你自己訓(xùn)練的權(quán)重 model YOLO(runs/detect/train/weights/best.pt) # 導(dǎo)出 ONNX model.export( formatonnx, # 導(dǎo)出格式 imgsz640, # 輸入尺寸和訓(xùn)練時保持一致 opset12, # ONNX 算子集版本 dynamicFalse, # 是否允許動態(tài)輸入尺寸 simplifyTrue, # 是否用 onnxsim 簡化計算圖 nmsFalse, # 是否導(dǎo)出 NMS強烈建議 False )這行代碼執(zhí)行完后會在權(quán)重同目錄下生成一個best.onnx。你可能會問參數(shù)為什么這么設(shè)我逐個解釋imgsz640你訓(xùn)練時如果是 640這里就填 640。如果訓(xùn)練時是 1280這里就得填 1280。模型的 backbone 和 head 對輸入特征圖的尺寸有依賴stride 通常是 8、16、32 的組合。輸入尺寸必須是 32 的倍數(shù)或者至少是 stride 最小公倍數(shù)的倍數(shù)否則特征圖會出問題。你導(dǎo)出時如果填了一個訓(xùn)練時完全沒有用過的尺寸精度可能會莫名掉點因為模型從未在這個分辨率上充分適配過。opset12ONNX 的算子集版本。太低的版本不支持一些較新的算子太高的版本對老版本推理引擎不友好。YOLO 系列在這種 CNN 結(jié)構(gòu)里opset 11~13 之間都夠用。我默認選 12兼容性和功能都比較平衡。如果你后續(xù)要轉(zhuǎn) TensorRTTensorRT 8.6 以上的版本對 ONNX opset 的適配已經(jīng)很好不需要額外操心。dynamicFalse這個我強烈建議。設(shè)成 True 雖然能讓模型接受任意尺寸輸入但代價是推理引擎沒法做輸入 shape 相關(guān)的固定優(yōu)化比如 TensorRT 的某些層會根據(jù)固定尺寸做內(nèi)存布局調(diào)優(yōu)性能會有損。部署階段如果你能保證輸入尺寸固定就固定死不要開動態(tài)。但有個例外如果你的業(yè)務(wù)里輸入圖像尺寸不能預(yù)知且變化幅度極大又不想做 letterbox 填充把圖像縮放并填充成固定尺寸那只能開 dynamic。這種情況你要意識到每換一個尺寸推理引擎可能會重新做 shape 推導(dǎo)延遲會高不少。simplifyTrue導(dǎo)出的 ONNX 會經(jīng)過 onnxsim 工具做一遍常量折疊、冗余節(jié)點刪除之類的優(yōu)化。實測下來YOLO26 的模型開 simplify 后文件體積和推理時間都有改善而且不影響精度。但注意如果你的模型里有自定義算子simplify 可能會報錯那就不用 onnxsim后面手動排查。nmsFalse前面講過原因。官方導(dǎo)出選項里有 nms 這個參數(shù)默認是 False。我建議保持默認除非你非常明確自己的部署鏈路為什么需要模型內(nèi)置 NMS。3.3 導(dǎo)出 ONNX 后我用這三種方式驗證它沒問題導(dǎo)出成功不等于導(dǎo)出正確。我見過太多人 export 時沒有報錯以為萬事大吉結(jié)果接入部署代碼后檢測結(jié)果全亂套。以下三步每步都值得做第一步用 onnx.checker 檢查模型結(jié)構(gòu)合法性import onnx onnx_model onnx.load(best.onnx) onnx.checker.check_model(onnx_model) print(ONNX model check passed.)如果你看懂了 checker 的報錯內(nèi)容大多數(shù)結(jié)構(gòu)性問題比如節(jié)點輸入輸出不匹配、維度信息缺失都能在這一步暴露出來。第二步用 onnxruntime 推理一張測試圖和 PyTorch 輸出對比這是最關(guān)鍵的一步。拿同一張測試圖分別用原始.pt模型和導(dǎo)出的.onnx推理打印輸出矩陣的 shape 和數(shù)值看看是否一致。注意不同框架的預(yù)處理方式可能有細微差別比如像素歸一化方式是 0~1 還是 -1~1通道順序是 RGB 還是 BGR。為了驗證 ONNX 本身沒導(dǎo)錯你應(yīng)該把 ONNX 的輸入喂成 PyTorch 模型輸入張量的完全相同的值。這在部署階段做“預(yù)處理對齊”前的一個獨立驗證。import numpy as np import torch import onnxruntime as ort from ultralytics import YOLO # 用 PyTorch 模型推理得到輸入張量 x 和輸出 model YOLO(best.pt) x torch.randn(1, 3, 640, 640) # 這里可以放一張真實圖片預(yù)處理后的張量 with torch.no_grad(): pt_outputs model.model(x) # 這是 PyTorch 原始輸出不是后處理后的結(jié)果 # 用 ONNX Runtime 跑同一個輸入 session ort.InferenceSession(best.onnx, providers[CPUExecutionProvider]) ort_inputs {session.get_inputs()[0].name: x.numpy()} ort_outputs session.run(None, ort_inputs) # 對比每個輸出的 shape 和數(shù)值 for i, pt_out in enumerate(pt_outputs): ort_out ort_outputs[i] print(fPyTorch output {i}: shape{pt_out.shape}) print(fONNX output {i}: shape{ort_out.shape}) print(fMax absolute diff: {np.abs(pt_out.numpy() - ort_out).max():.6f})如果 max diff 在 1e-4 這個量級甚至更小說明導(dǎo)出基本無損。如果 diff 很大比如超過 1e-2那說明計算圖里有算子被錯誤替換了或權(quán)重對齊出了問題要回頭查簡化過程或者逐層對比。第三步可視化模型結(jié)構(gòu)把導(dǎo)出的 ONNX 文件拖進 Netron 網(wǎng)頁端https://netron.app認一遍從輸入到到各分支輸出的形狀變化。這一步特別適合檢查你用的是不是接了正確 head也適合給做 YOLO26 結(jié)構(gòu)圖展示的人用。這個習(xí)慣很值得養(yǎng)成導(dǎo)出不是驗證的終點“導(dǎo)出完更要對齊再收工”省下的全是后面排查自己的時間。我在自己帶團隊做項目時甚至立過規(guī)矩沒做輸出對齊驗證的模型不允許發(fā)給下游。3.4 繼續(xù)導(dǎo)出 OpenVINO 和 TensorRTYOLO26 用 Ultralytics 導(dǎo)出 OpenVINO 很簡單model.export(formatopenvino, imgsz640, halfFalse) # halfFalse 保持 FP32如果推理機器支持且對精度損失做了評估你可以設(shè)置halfTrue轉(zhuǎn)成 FP16。很多 Intel CPU 的核顯對 FP16 也算友好但如果你在普通 CPU 上做純 CPU 推理FP32 其實更穩(wěn)妥。導(dǎo)出 TensorRT 則這樣model.export(formatengine, imgsz640, halfTrue, device0) # device 指定 GPUTensorRT 導(dǎo)出時務(wù)必指定在 NVIDIA GPU 上。halfTrue是 FP16 精度在主流 Ampere 及之后架構(gòu)的卡上YOLO26 用 FP16 推理精度損失通常很小速度提升明顯。如果你的模型是用 FP32 訓(xùn)練的在 NVIDIA 顯卡上直接用 FP16 推理絕大多數(shù)情況下沒有問題但你仍然要在導(dǎo)出完成后對同一批驗證集圖跑一遍 mAP確認精度下降不超過 1 個百分點才比較穩(wěn)。目標(biāo)平臺推薦格式關(guān)鍵特征通用 CPUONNX ONNX Runtime跨平臺安裝簡單Intel CPUOpenVINOCPU 推理優(yōu)化充分易部署NVIDIA GPUTensorRT推理性能天花板綁定顯卡Apple 設(shè)備Core ML生態(tài)私有格式跨平臺原型驗證ONNX先落地再決定正式優(yōu)化4. 導(dǎo)出時最容易翻車的隱蔽環(huán)節(jié)與完整排查鏈路這一節(jié)我想專門講“導(dǎo)出過程中報錯”的處理思路。因為 YOLO26 的源碼和公開資源太多太雜你下載的“YOLO26 源碼下載”很可能是某個博主二次開發(fā)的版本結(jié)構(gòu)圖和官方不完全一樣甚至已經(jīng)加了各種改進模塊。這種模型導(dǎo)出最容易在“自定義算子轉(zhuǎn) ONNX”這一步掛掉。4.1 先復(fù)現(xiàn)再排查處理導(dǎo)出報錯的通用鏈路假設(shè)你在跑 export 時遇到了一個問題比如報錯說某個算子不支持。不要急著搜“YOLO26 導(dǎo)出報錯”這種寬泛的關(guān)鍵詞按照下面的鏈路一步步縮小范圍第一步精確定位到具體的層名和算子Ultralytics 的 export 日志通常會打印到哪個模塊、哪個節(jié)點失敗。如果日志里只給了統(tǒng)一錯誤用 traceback 定位到模型結(jié)構(gòu)定義文件里的具體調(diào)用棧找到出錯的模塊名。第二步檢查這個模塊是不是新加的“改進模塊”如果它來自你下載的“YOLO26 改進專欄”代碼那么它大概率是社區(qū)里有人寫的自定義模塊內(nèi)部可能用了不常規(guī)的 PyTorch 操作比如torch.cumsumscatter的組合有些注意力機制會這么寫、用了可變循環(huán)長度等。這些操作要么 ONNX 算子集里沒有直接對應(yīng)要么對動態(tài) shape 支持不好。第三步把該模塊單獨摳出來構(gòu)造假數(shù)據(jù)導(dǎo)出單測這是非常高效的排查手段。你在一個新文件里單獨定義一個只包含那個模塊的小模型隨機生成相同 shape 的輸入對它單獨做 torch.onnx.export看能不能成功。如果單獨導(dǎo)出成功說明該模塊本身沒有算子問題問題出在和模型中其他模塊的配合上如果單獨導(dǎo)出失敗那問題就鎖定在這個模塊內(nèi)部。然后嘗試把模塊內(nèi)疑似有問題的操作逐個替換成更基礎(chǔ)的算子比如把某些變形操作用 reshape transpose 拆開再重新導(dǎo)出驗證。第四步考慮將“改進模塊”留在 PyTorch 中用前后處理承接如果自定義模塊實在無法轉(zhuǎn) ONNX某些復(fù)雜的注意力機制和檢測頭結(jié)構(gòu)確實會有問題可以考慮導(dǎo)出時屏蔽掉該模塊把它放到部署代碼前后處理階段用別的方式補償。比如注意力模塊輸出可以在 PyTorch 階段預(yù)先計算好部署時把它的結(jié)果作為預(yù)處理的一部分。這聽起來繞但在工程上是常見的妥協(xié)方案。第五步計算圖分段導(dǎo)出再拼接如果模型主體是標(biāo)準(zhǔn)結(jié)構(gòu)、只有個別模塊導(dǎo)不出可以把這個模塊從全圖中拆出來單獨導(dǎo)出成一個小 ONNX然后用 ONNX GraphSurgeon、onnx_graphsurgeon 或者 ONNX 官方工具庫進行圖拼接。這樣做非常接近“模型主體 一系列子圖”的部署方式比較考驗對計算圖結(jié)構(gòu)的理解。一般不建議新手輕易嘗試但它確實是高階方案里最有效的。4.2 圖像縮放方式造成的“精度翻車”是部署階段最常見的坑導(dǎo)出時模型內(nèi)部計算沒問題但推理結(jié)果不對最常見的原因之一是圖像預(yù)處理沒有對齊訓(xùn)練時的邏輯。YOLO 系列訓(xùn)練和驗證時有一套默認的預(yù)處理流程等比縮放 letterbox向邊緣填充灰邊 歸一化 BGR/RGB 通道順序約定。這套邏輯在 PyTorch 階段是框架內(nèi)部自動幫你做掉的但導(dǎo)出到 ONNX 后模型本身只負責(zé)“吃一個張量吐一個張量”預(yù)處理你必須自己在推理代碼里實現(xiàn)。我見過無數(shù)人栽在這件事上直接用了 OpenCV 的cv2.resize(image, (640, 640))把原圖拉變形了喂進模型導(dǎo)致小目標(biāo)檢測效果極差或者圖像尺寸沒做 letterbox 填充直接把非正方形圖塞進去模型輸出的候選框坐標(biāo)在映射回原圖時就全位移了。正確的做法是部署代碼里復(fù)刻 ultralytics 的預(yù)處理函數(shù)。核心邏輯如下計算縮放比例、完成等比縮放、再用灰邊 (114, 114, 114) 填充到目標(biāo)尺寸、最后做歸一化和維度調(diào)整。下采樣映射回原圖時再把 letterbox 填充的偏移量減去。這段代碼不復(fù)雜但如果抄網(wǎng)上零散版本很容易漏掉 BGR/RGB 轉(zhuǎn)換。建議統(tǒng)一從你訓(xùn)練的框架源碼里把預(yù)處理函數(shù)摳出來翻譯成目標(biāo)語言的版本而不是自己重新“發(fā)明”一遍預(yù)處理。4.3 導(dǎo)出 ONNX 后輸出和 PyTorch 輸出差一點但不算離譜這類問題很隱蔽。報錯倒是沒有數(shù)值對比 diff 也在 1e-3 到 1e-2 量級。這種情況通常來源于兩種因素一是 batch norm 層轉(zhuǎn) fold 時的數(shù)值誤差。PyTorch 推理時 batch norm 是按x - running_mean/ sqrt(running_var eps) * weight bias 逐層計算的而導(dǎo)出到 ONNX 時推理引擎會嘗試把 BN 融合到卷積層里變成 y x * scale offset。這個融合理論上精確但浮點運算順序變化會引入微小誤差。這種誤差在 1e-4 量級通常不影響后處理結(jié)果。二是在 FP16 推理下引入的量化誤差。如果你導(dǎo)出時開了 halfTrueFP32 權(quán)重轉(zhuǎn)成 FP16 會損失一點精度輸出 diff 到 1e-2 量級也是正常的。如果 diff 在這個量級而你的后處理結(jié)果比如檢測框沒有明顯變化基本可以繼續(xù)走但如果 diff 到了 1e-1 以上檢測框都飄了就別以為是“正常誤差”大概率是你某個參數(shù)導(dǎo)出時變了比如權(quán)重文件沒正確加載。4.4 dynamicTrue 導(dǎo)出后動態(tài) shape 導(dǎo)致的隱性 bug有的 YOLO26 模型以動態(tài) shape 導(dǎo)出后某些自研模塊在推導(dǎo)輸入尺寸時依賴于“shape 的數(shù)值”做條件分支比如判斷特征圖寬度是否大于某閾值來決定是否執(zhí)行某個操作。PyTorch 是實時執(zhí)行沒問題但 ONNX 導(dǎo)出時這種條件分支會被固化成靜態(tài)的算子路徑換了輸入尺寸可能執(zhí)行了錯誤的計算路徑導(dǎo)致輸出錯亂。規(guī)避方案很直接不要開 dynamic。如果你的業(yè)務(wù)場景確實需要輸入尺寸可變優(yōu)先考慮在你的部署代碼里做“多檔位”策略比如固定支持三種輸入尺寸分別導(dǎo)出三個 engine 或 ONNX 模型推理時按需調(diào)用。這在工程上比一個動態(tài)模型靠譜得多。4.5 CPU 和 GPU 推理的輸出差異注意點同一個 ONNX 文件在 CPU 上用 ONNX Runtime 跑和在 GPU 上用 TensorRT 跑輸出結(jié)果會有很小的差異原因在于浮點運算順序不同、某些算子在不同后端有不同的實現(xiàn)策略。只要差異在正常范圍內(nèi)通常 mAP 差異不超過 1 個百分點都是合理的。如果差異明顯優(yōu)先檢查是不是某個算子如Resize、GridSample在兩種后端上的插值方式實現(xiàn)不同。YOLO 系列里Resize最常出問題因為框架默認的Resize模式不同版本有細微差別。5. 導(dǎo)出完成后模型要怎么接進真實系統(tǒng)導(dǎo)出只是第一步模型接進推理引擎跑起來才是完整閉環(huán)。這里講一講我在實際項目中用的最小可用推理鏈路以 ONNX Runtime 為例方便各位理解部署側(cè)在做什么。5.1 一套簡潔的 ONNX Runtime CPU 推理流程import numpy as np import cv2 import onnxruntime as ort class YOLO26ONNX: def __init__(self, onnx_path, conf_thres0.25, iou_thres0.45): self.session ort.InferenceSession(onnx_path, providers[CPUExecutionProvider]) self.input_name self.session.get_inputs()[0].name self.input_shape self.session.get_inputs()[0].shape # [1, 3, H, W] self.conf_thres conf_thres self.iou_thres iou_thres def preprocess(self, img_bgr): # 這是從 ultralytics 源碼里摳出來的 letterbox 邏輯 h, w img_bgr.shape[:2] target_h, target_w self.input_shape[2], self.input_shape[3] ratio min(target_w / w, target_h / h) new_w, new_h int(round(w * ratio)), int(round(h * ratio)) resized cv2.resize(img_bgr, (new_w, new_h), interpolationcv2.INTER_LINEAR) canvas np.full((target_h, target_w, 3), 114, dtypenp.uint8) dw, dh (target_w - new_w) // 2, (target_h - new_h) // 2 canvas[dh:dh new_h, dw:dw new_w] resized # BGR - RGB, HWC - CHW, 歸一化 blob canvas[:, :, ::-1].transpose(2, 0, 1).astype(np.float32) / 255.0 blob np.expand_dims(blob, axis0) return blob, ratio, dw, dh def postprocess(self, outputs, ratio, dw, dh): # 先做置信度過濾再做 NMS把框坐標(biāo)減掉 letterbox 偏移并除以縮放比 # outputs shape: [1, 4 num_classes, num_anchors] preds outputs[0][0] # preds shape: [4 num_classes, num_anchors] boxes preds[:4].T # [num_anchors, 4] class_scores preds[4:].T # [num_anchors, num_classes] class_ids class_scores.argmax(axis1) confs class_scores.max(axis1) mask confs self.conf_thres boxes, confs, class_ids boxes[mask], confs[mask], class_ids[mask] # 轉(zhuǎn)換為 xyxy x_center, y_center, bw, bh boxes[:, 0], boxes[:, 1], boxes[:, 2], boxes[:, 3] x1, y1 x_center - bw / 2 dw, y_center - bh / 2 dh x2, y2 x_center bw / 2 dw, y_center bh / 2 dh candidates np.stack([x1, y1, x2, y2, confs, class_ids], axis1) # 這里可以接 nms 函數(shù)按 class 分別做 NMS 或者統(tǒng)一做 NMS return candidates上面代碼里 NMS 部分我沒有展開推薦大家直接復(fù)用成熟實現(xiàn)比如 torchvision.ops.nms 的等價邏輯或者自己翻譯成純 NumPy 的矩陣版本。最需要注意的是后處理時要把 letterbox 加的偏移量(dw, dh)減掉、把坐標(biāo)除以ratio才能映射回原始圖像尺寸。這一步是絕大多數(shù)“模型導(dǎo)出后檢測框不準(zhǔn)”的根源。5.2 TensorRT 部署時的 batch 與顯存管理如果你導(dǎo)出了 TensorRT engine推理時用的是 TensorRT Python API 或者通過 ONNX Runtime 的 TensorRT provider。這里提醒三個點batch size導(dǎo)出 engine 時如果固定了 batch1那推理時只能一次一張地跑如果要支持多 batch導(dǎo)出時需要設(shè)置 batch 維度Ultralytics export 里 batchsize 參數(shù)可配。顯存占用TensorRT engine 在推理時會額外申請 workspace如果你的顯存比較緊張在導(dǎo)出時可以通過參數(shù)限制 workspace 大小避免推理時顯存溢出。第一次推理慢TensorRT 第一次加載 engine 和選 kernel 需要預(yù)熱時間生產(chǎn)環(huán)境建議在服務(wù)啟動時就提前加載并 warmup 一次而不是等第一個請求進來才做。5.3 一個被低估的能力判斷導(dǎo)出模型的正確“工作溫度”推理引擎在不同精度模式下的運行速度差距非常大。FP32、FP16、INT8 三種模式下延遲可以差 3 到 10 倍。實際部署中優(yōu)先級順序是先用 FP32 把全鏈路跑通、產(chǎn)出結(jié)果正確再做 FP16 優(yōu)化精度評估通過后再考慮 INT8 量化不要一上來直接上 INT8除非你非常了解量化校準(zhǔn)集的概念我的建議是導(dǎo)出不是一次性的而是按性能需求分階段迭代的。第一次先導(dǎo)入 ONNX 跑通正確性第二次導(dǎo)出 OpenVINO/Engine 追求速度第三次嘗試 INT8 壓縮體積。寫在最后YOLO26 的模型導(dǎo)出本質(zhì)上一句話把 PyTorch 的動態(tài)圖世界搬到靜態(tài)圖推理引擎的確定世界里去中間所有的不確定性都要靠流程和驗證來消滅。我個人在大量導(dǎo)出實踐中有一個心得永遠不要讓“格式轉(zhuǎn)換成功”成為你做導(dǎo)出任務(wù)的終點而是要拿“對下游完全可解釋、可復(fù)現(xiàn)”作為交付標(biāo)準(zhǔn)。你可以順手把驗證腳本、輸出 shape、精度誤差記錄、導(dǎo)出命令都一起放進一個說明文件里和模型一起交付。這樣無論是給自己半年后回頭看還是交給下一位接手的工程師都會省掉大把重復(fù)排雷的時間。如果你現(xiàn)在正好卡在某個導(dǎo)出報錯里不妨回頭按我排查鏈路的順序一步步走大概率會在第五步之前找到問題癥結(jié)。YOLO26 的代碼和社區(qū)迭代速度都很快工具鏈本身也在不斷變化但“導(dǎo)出前先確認結(jié)構(gòu)、導(dǎo)出后立刻對齊驗證、部署時復(fù)刻預(yù)處理”這三條原則是長期有效的。祝各位都能順利把模型送到生產(chǎn)環(huán)境里好好地跑起來。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲精品无码久久| 黄色av高清| 99精彩视频在线观看| 亚洲AV久久久久久久久久久久久久久久| 婷婷五月色丁香在线看| 五月天天天操天天爽夜夜操| 91干在线| 久久精彩视频99| 久婷婷| 精品成人无码A片观看香草视频| 99热天堂| 色婷婷色综合激情91| 色色热| 五月丁香六月在线| 欧美一级操逼视频| 97色婷婷五月天| 99热婷婷| 五月婷婷在线丁香| 9久热| 色五月婷婷老师| 亚洲综合五月天综合| 1024成人在线观看| 成年视频免费观看| 99色免费在线观看| 久久婷婷五| 国产做A爰片毛片A片美国| 五月色婷婷影院| 天天干一干| 99热精品在线播放| 啪啪六月婷婷| 色婷婷色五月天| 婷婷六月丁香激情综合| 五月天激情小说电影| 久久九九国产| 欧美久久婷婷| 色婷婷AAA| 六月丁香停| 色综合77777| 天天综合网站| 日本欧美成人片AAAA| 中文字幕在线播放视频| 日本五月婷婷| 九九热在线视频| AA丁香综合激情| 五月久久婷婷丁香| 五月丁香六月激情欧美综合| 99只有精品| 五月婷婷中文字幕| 97福利视频| 丁香五月婷婷激情尤物| 四色永久成人网站| 97在线精品| 大香蕉久艹| 99热人人| 日本人妻丁香婷婷久久寝取熟女五月| 成人网站免费sxj| 亚洲婷婷丁香五月亚洲| 亚洲综合色棒| 婷婷色五月开心五月| 天天插天天干| 99热啪啪| 大香蕉人人网| 9九热视频| 九九热a| 120分钟婬片免费看| 丁香花五月天激情| 色婷婷国色天香综合| 翔田千里aV中文字幕| 婷婷天天舔| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 色婷婷狠狠18禁| 亚洲一级色电影| 日夜操B| 国产99久久久| 五月花婷婷丁香| 成人综合伍月天| 99热99干| 色色色com| 99色综合| 日韩无码系列| 五月熟妇婷婷久久| 91狠狠色色丁香婷婷综合久久| 色欲天天综合网| 免费无码毛片一区二区A片| 中文字幕网伦射乱中文| 97性视频| 亚洲 五月 婷婷 成人| 午夜丁香婷婷| 午夜不卡久久精品无码免费| 另类图片激情五月| 思思久久99热只有频精品66| 久操婷婷| 狠狠色丁香婷婷| 久久激情综合| 亚洲精品婷婷| 蜜臀av 粉嫩av 懂色av| 国产色丁香| 精品无码99| 99热网址| 五月天久久小说| 影视av久久久噜噜噜噜噜三级| 六月激情婷婷色| 亚洲十月婷婷综合| 婷婷五月激情小说| 一区二区免费看| 五月天激情站| 东京热免费视频| 爱爱网址9| 开心五月综合激情网| 五月婷婷视频啪啪美女| 五月婷婷成人| 色99在线| 久久六月天| 在线理论片| 日本色色网站| 五月丁香婷婷基地| 亚洲视频在线网| 欧美大奶熟女噜噜噜噜| 五月丁香成人| 激情伊人网| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 婷婷久久在线| 丁香五月婷综合网| 九色综合五月天婷五月| 黄涩毛片| 久月久在线视频| 人人色人人摸人人看| 欧美日本另类| 国产无人区大片| 激情性五月天免费小说视频| 1024在线一区| 激情网狠狠干| 精品国产一区二区三区四区阿崩 | 97操碰在线视频| 五月桃花网综合| 99久久综合| 9l视频自拍9l九色9l成人| 日韩精品视频中文字幕| 狠色狠色狠色狠色狠色网| 国产avapp 网| 99啊精典免费视频| 激情五月婷黄版| 色色色色五月| 黄色成人AV在线| 欧美99热| 爱操天堂| 婷婷五月综合激情免费| 国产综合丁香五月天| 亚洲色vA| 久久aaaaa| 5月丁香六月婷婷| 五月婷久久| 九九热这里只有精品7| 综合伊人久久| 丝袜人妻| 国产精产国品一二三在观看 | 激情深爱婷婷网| 丁香五月性| 五月婷婷偷拍| 色婷婷香蕉| 丁香五月天婷婷在线视频| 九九热黄色| PORNY九色9l自拍视频成人| 女人天堂AV| 久久久噜噜噜www成人| 成年人看Va免费视频| www.玖玖九| 狠狠插日日干撸| 97搞在线| 久色大| 成人AV中文字幕| www.色九月| 国产91视频| 婷婷五月激情综合| 激情五月婷婷在线| 91人人澡人人爽人人看| 午夜丁香| 色偷偷五月天| 色情婷婷| 一区操| 五月婷婷啪啪| 熟女乱论网| 成人综合网站| 久热黄色| 久久在线人妻| 色丁香五月天| 1024欧美看片| 色私五月婷婷| 亚洲电影在线观看| 五月天伊人综合| 欧美操人| 久久爱综合| 9l视频自拍9l视频自拍九色学生| 色五月丁香婷婷综合| 九九爱精品网站| www.婷婷五月| 伊人五月人妻精品| 久操大香蕉| 亚洲国产精品二二三三区| 久久视频这里99| 任你搞网站| 99久久99热| 五月丁香亭亭电影久久| 日日干天天爽| 日韩无码色色| 精品九九视频| 五月丁香综合啪啪| 亚洲AV第二区国产精品| www超碰com| 五夜婷婷| 99热色精品| 五月天开心激情网色欲无码| 狼人婷婷久久| www久久久久久| 五月婷婷色五月| 五月婷婷无码| 五月天婷婷色小说| BBWCUCKOLD精品熟妇| 色婷婷社区| 五月天狠狠网站| 色九九九综合| 激情综合色婷婷啪啪五月天| 俺也去色| 激情综合五月| 高清不卡一区| 91综合色| 丁香五月激情网| 淫水导航| 激情黄色小说五月天| 玖玖爱资源站| 人人性久久| 中文AV网站| 婷婷久久网| 成人va视频| 色五月婷婷丁香凹凸| www.久久99| 狠狠干夜夜干| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 丁香五月激情啪啪综合| 婷婷99视频全集高清| 狠狠色综合网| 天天干,夜夜爽| 任你日视频| www.五月.com| 99激情| 99热这里只有精品无码| 五月婷婷欲色| 久久偷拍综合五月天| 亚洲色婷婷婷婷人人爽| 婷婷大美在线| 99亚洲大片精品永久在线观看| 午夜丁香丁香婷婷| 精品网站99| 婷婷午夜| 综合婷婷六月| 99热99这里有免费的精品| 天天做天天爱天天摸| 殴美日比视频| 激情涩涩网| 中文字幕在线免费观看视频| 色噜噜狠狠色综合无码久久欧美| 2014天天爽| 丁香五月亚洲激情婷婷射| 99 re视频一区| 4399伦理午夜| 婷婷五月中文在线| 久久丁香五月婷婷| 五月激情小说| 深爱激情综合| 婷婷婷婷婷婷婷婷婷婷丁香| 99热在线看| 一级黄色操B| 日韩久综合| 丁香久久综合| 成人婷婷五月天| 美女婷婷六月色| 丁香婷婷激情五月色| 色婷婷伦理| 色情久久久| 综合一本道| 天天狠狠夜夜狠狠2023| 五月丁香六月在线| 琪琪色网在线| www.97碰碰com| 五月丁香六月色婷婷综合五月天| 天天狠狠色噜噜| 欧美激情凹凸丁香网| av狠狠操| 色五月婷婷网| 婷婷久久婷婷色五月| www.日本91| 天天爽夜夜爽夜夜爽精品| anquye伊人| 爱婷婷五月| 2020日日干| 色婷婷综合网| 婷婷久久图片| 夜夜天天久久婷婷| 欧美五月婷婷| 色五月美女| 久久大香蕉同僚| 狠狠色狠狠干| 97五月久久丁香婷婷| 丁香六月欧美| 欧美久人人| 天天五月香欧美| 婷婷五月天香蕉| 91视频一起草| 色啪久 | 婷婷五月色亚洲| 国产97色在线 | 日韩| 色偷偷五月天| 97碰人人操| 26uuu色噜噜精品一区| 色欲AV导航| 国产成人av在线播放| 欧美成人精品A片免费一区99| 婷婷色色丁香| av在线色五月丁香婷区久| 成人版视频在线观看| 高潮毛片又色又爽免费| 婷婷五月激情的图片| 中文字幕色色| 久久caop| 国产在线6| 久久538| 国产毛片精品一区二区色欲黄A片| 婷婷综合九月| 蜜乳中文字| 天天做天天爱天天爽| 色吊操色妞| 欧美成性色| 天堂综合久久 | 国产在线自| 色婷婷呢狠禁久禁| 欧美日韩大黄| 五月丁香激情啪啪| a色色色色色| 天天插天天干| 五月天久久网站| 噜噜色com| 99精品视频在线观看| 超碰人人操人人干| 国产成人av在线播放| 一级性爱大片| 99久久6| 久久五月天激情| 色婷婷五月天激情| 五月婷婷六月天| www.色综合.com| 五月天色丁香| 婷婷九月激情| 男人天堂99| 99热66| 日韩成人综合| 大香蕉久久婷婷精品综合| 婷婷狠狠爱| 天天草天天日| 丁香五月婷婷香| 97色色色色色色色色色色色色色| 国产偷人爽久久久久久老妇APP| 99re热视频这里只有综合亚洲| 五月天婷婷綜合院| 久久婷婷热| 久99久视频| 五月激情网站| 99热只有这里有精品| 五月丁香综合啪啪| 99激情| 99区视频| A片天天| 色综合综合色| 色色色色色五月| 丁香五月社区| 天搞天天天天天| 超碰99热| 人人人操97| 影音先锋秋秋五月婷婷| 婷婷色五天| 五月丁香琪琪| 日韩免费视频| 婷婷丁香综合| 久综合网| 深爱丁香激情| 4438国产免费看| 91色噜噜狠狠狠狠色综合| 在线视频另类| 激情婷婷丁香五月| 婷婷午夜综合| 99热在线里有精品| 综合激情sV| 碰碰91| 91精品电影18T| 国产露脸150部国语对白| 开心婷婷五月中文字幕组| 超级碰碰视频无码| 婷婷五月天丁香花| 婷婷五月综合亚洲| 中文网AV| 97婷婷久久丁香| 九九热re99re6在线精品| 99热只有精品综合| 天色色综合网| 涩五月婷婷| 91人妻视频| 天天综合色丁香| 综合网色| 91久久九久久九久久九久久九久久| 亚洲色情久久| 亚洲久艹| 熟女少妇内射日韩亚洲| 色五月婷婷综合在线| 九九人妻福利| 五月天停停日日| 99国产精品久久久久久久久久久| 色五月五月天色婷婷色五月| 激情五月天之六月婷婷| 人人妻人人澡| 影音先锋综合网| 五月婷婷丁香| 成人精品人妻| 99精吕视频在线观看了| 五月综合婷婷开心网| www.玖玖婷婷在线| 亚洲深喉AV| 五月丁香啪啪啪啪| 五月婷婷,六月丁香| 婷婷色婷婷亚洲成人| 男女激情久久| 99ER热精品视频| 中文AV在线播放| 色五XX| 亚洲色色在线| 久久婷婷视频| 庭庭久久内射| 色综合香蕉| 久久综合66| www.婷婷| 色婷婷综合网| www.婷婷| 五月丁香成人网| 天天日天天草| 婷婷五月天中文字幕| 婷色成人| 亚洲亚洲激情| 99爱在线| 狠狠另类视频| 99色色最新视频| 天天操天天爱天天日| 全高清无码视頻| 五月天色站| 久草婷| AⅤ网站在线看| 天天日夜夜爽| 国产成人一区二区三区在线观看| 狠狠色婷婷| 五月婷婷激情综合网| 丝袜激情网| 亚洲六月婷婷| 五月激情天| 综合久久99| 激情综合丁香五月| 色五月丁香婷婷在线观看| 色小说五月婷婷| 亚洲狠狠狠色婷婷综合激情久久久| 欧美欧盟性爱网| 欧美激情丁香五月| 99热国产国产| 国产99视频永久免费| 日日干夜夜撸夜夜骑| 少妇日麻屄| 久久人妻乱子伦| 影音先锋xfplay资源男人网| 婷婷另类开心| 日日夜夜噜噜爽爽| 79精品视频在线观看,| 婷婷金品综合视频| 97人人搞| 亚洲精品视频在线播放| 六月成人网| 亚洲成人影视在线| Aα在线免费观看| 丁香六月激情毛片| 丁香五月成人| 天天橾日日橾夜夜橾17| 婷婷五月激情六月| 激情www| 婷婷伊人网| 国外亚洲成AV人片在线观看| 日本偷拍九九九| 丁香六月激情综合网| 久99热在线观看| 日本三级韩三级99久久| 巴基斯坦粉嫰无码视频| 婷婷五月六月| 99热这里是精品| 99精品成人无码A片观看金桔| 大地资源色婷婷视频在线| 久草免费福利视频| 色婷婷久久天天性爱| 婷婷丁香人妻天久久| 午夜 外网 精品 在线| SS丁香五月婷婷| 五月丁香六月色| 丁香五月天堂网| 国产毛片精品一区二区色欲黄A片| 丁香五月激情图片婷婷| 中文字幕,综合,91| 色之综合网| 五月激情婷婷女| 欧洲一区二区| 91中文狠狠综合| 久热久操久热久草国产91| 综合色色婷婷| 色色色色av色色色色| 丁香五月香蕉| 丁香色色五月| 梁铮版《蜘蛛女侠》在线| 天堂草在线观| 九九这里只有精品| 九色地址91视频| 五月情丁香色| 六月婷婷色色色| 青草视频在线观看视频| 色色色综合色| 操操操AV| 最近中文字幕2019视频1| 麻豆精品| 五月丁香六月情亚洲| 噜噜干日本| 亚洲丁香五冃97色| 亚州激情网站无码| 激情六月丁香| 丁香五月WWW| 99热这是里只有精品| 99热碰碰| 影音先锋 婷婷| 婷婷五月电影| 久色视频| 色综合色色色色色色综合| 久久99综合| 天天干、天天日日| 亚洲综合九九| 啪啪一区| 玖玖婷婷五月| www一起操在线观看| 五月丁香婷婷无码中文| 五月天社区婷婷丁香社区| 影音先锋美国A| 91九色首页| 开心婷婷五月天激情网| 婷婷五月在线影院| 5月色婷婷| 91人操人人人操人| 丁香五月婷婷五月| www,av好吊操| 婷婷五月天综合亚洲| 久热这里只有精品6官网亚洲| 天天撸天天干天天插| 色五月婷婷五月天| 婷婷在线播放av| 色五月天电影| 97五月天婷婷综合激情网| 日日噜狠狠色综合久久| 丁香六月婷婷综合| 99热20| 超碰在线人妻| 日韩不卡DvD| h亚洲| 97操男人的天堂| 久色国产| 丝袜熟女一区二区三区| 337午夜福利| 91se视频| 五月婷婷色吧!| 99热这里有精品| 五月婷高清视频| 色欲天天综合网| 色色亚洲无码| 99国产精品久久久久久久久久久| 爱之国产色情综合| 亚洲精品无AMM毛片| 高潮毛片遮挡费高一百度| 午夜成人网站在线观看| 久久婷色| 成人午夜无码视频| 婷婷丁香五月噜噜噜| 一级片操逼视频| 婷婷激情区| 教师性爱毛片| AV人人操| 亚洲av无码精品色午夜| 五月天丁香综合| 91热久久| 日本不卡一区二区三区| 色婷婷五月天在线| 日韩有码一区| 色婷婷888| 亚洲AV网址| 久久激情五月婷婷| 性婷婷| 五月婷婷香蕉| 日韩人妻无码精品| www.91.com处女在线直播| 丁香五月社区| 婷婷丁香色无五月| 伊人激情综合网| 婷婷99狠狠躁天天躁| 狠狠色狠狠鲁| 免费观看高清无码| 狠狠干在线| 五月丁香网站在线播放| www婷婷色| 色婷婷裸体色性在线| 六月丁香婷婷色狠狠久久| 狠狠做深爱婷婷久久综合一区| 激情五月图| 热久综合| 色综合99| 综合一本道| 丁香六月啪| 91人人人人人| 激情AV在线| 丁香伊人综合| 九九热精品99| 玖玖爱伊人网| 九九久久99| 天天综合天天玩夜夜玩天天玩夜夜玩 | 色色五月丁香| 99精彩视频在线观看| 99综合网| 综合色色婷婷| 色欲天天综合| 黄色国久久| 午夜免费试看| 久久久久久五月天| 丁香五月激情宗合网| 新激情婷婷| 99九色视频在线观看| 免费观看的AV| 久久亚洲婷婷| 大香蕉在线观看9| 九九视频在线观看视频6 | 看片视频在线免费日产在线看| 99热网站在线观看| 另类激情四射| 九月停停| 天天色天天操天天射| 99在线69| 色99视频| 国产在线网| 99九九99九九九视频精彩| 性生活久久人妻| 在线婷婷| 婷婷爱爱蜜臀天天操| 色色色com| 久久精品这里只有精品免费首页| 另类图片五月天| 亚洲激情区| 丁香香五月激情免费视频| 日韩 mm 不卡| 色五月综合激情网| 欧美大片免费观看| 九九aV| 久久久精品AV| 久久婷婷久久| 日日撸夜夜操| 午夜丁香五月天综合| 激情综合五月.....| 日韩欧美五月丁综合| 武则天精品久久| 九九超日本| 先锋男人99资源| 亚洲久久视频| 九九视频这里只有精品在线播放| 成人五月天在线观看| 五月丁香性爱| 五月天婷婷涩涩| 丁香狠狠色婷婷久久无码视频| 欧美肉大捧一进一出免费视频| 狠狠狠狠狠干| 色色色99| 成人做爰A片免费看视频| 亚洲午夜AV| 这里只有精品久久| 欧美性猛交99久久久久99按摩| 六月婷婷五月天| 五月婷婷片| 九九色婷婷| 91成人电影| 婷婷天堂综合| 亚州操人在线视频| 国产精产国品一二三在观看 | 在线看黄色| 激情五月婷婷丁香综合网| 婷婷五月天亚洲综合网| 大香蕉婷婷婷| 九九热在线观看视频| 成人丁香| 偷拍91九色| 综合色五月| 五月丁香在线| 九九色综合| 丁香花大香蕉婷婷综合| 另类亚洲电影| 变态另类9| 婷婷激情伍月网| 开心五月婷婷在线视频免费观看| 99免费视频精品| 色五月婷婷开心| 六月丁香五月天| 色五月激情五月开心五月| 久久精品4| 亚洲综合激情五月久久| 婷婷色综合中心站| 97资源欧美日韩大香蕉超碰一区| 99re热在线视频| 丁香五月大片| 天天干天天干天天操| 五月婷婷色色| 久久九九激情五月天| 99热亚洲| 操91| 亚洲亚洲人成综合网络| 午夜丁香 婷婷| 伊人久久大香网| 九九九九九九九热| 丁香五月婷婷偷拍| 97caop| 91人碰| 久久婷五月综合色| 激情五月五月婷婷| 日本久久精品| 亚洲无码黄色| 亚洲综合网激情小说| 日日夜夜天天| AA片在线观看视频在线播放| 国产老熟妇亲子乱对白| 天天噪夜夜爽| 五月丁香激情啪啪| 丁香五月欧美婷婷| 亚洲成人AV在线播放| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 五月天成人小说| 2022久久婷婷| 五月天亚洲最大成人| 色婷婷88| 玖久久网站| 亚洲第一色色色| 综合成人小说婷婷| 国产精品久久久久久喷浆| 九九九色综合| 亚洲天码视频www蛋播视频| 9色在线| 182TV大香蕉| 噜噜久| 99热婷婷| 超碰在线国产| 天天干天天做| 亚洲精品444久久久久久| 国语对白性爱视频播放| 精品久久9| www五月天com| 欧美三级巜人妻互换| 午夜大香蕉| 五月丁香六月激情综合| av一区免费看| 五月的丁香六月的婷婷| 99久久久久| 色婷婷久久综合| A网在线欧洲| 9国产在线视频| 色色色色热热| 五月丁香激情综合| 五月婷婷av| 色五月91| 强伦轩人妻一区二区电影| 国产成人亚洲综合A∨婷婷| A短视频免费在线观看| 三区激情四射av| 色情五月婷婷| 久思思热视频在线观看| 九月激情网| 91久久综合| www.91在线观看| 激情五月婷婷啪啪| 五月天婷婷综合网| 超碰在线中文字幕| 色综合网址| 五月天综合激情网| 99碰网站| 人人97碰| 99视频这里只有免费精品| 色五月天激情| 视频这里只有精品| 超碰国产在线| 99热这里有精品24| 成人在线二区| 欧美婷婷五月无砖| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 色天五月天在线观看视频| 中日韩狠狠色| 另类图片激情五月| 久久婷婷五月天激情新地址| 97色色色色色| 五月丁香婷婷五月色| 另类少妇人与禽zOZZ0性伦| 五月丁香亚洲五月| 婷婷激情久久| 色五月大| 亚洲黄色影视| 玩熟女五十AV一二三区| 一级操逼内射在线视频| Aaa久久| 六月丁香五月婷婷| www.婷婷五月天.com| 婷婷99狠狠躁天天躁| 国产 亚洲 在线| 日日天天干| 人妻操逼| www...com黄在线观看| 五月丁香六月婷婷开心网| 97电影99热| 亚洲激情AV| 久久婷婷一级片| 九九九九无码| 综合网激情| 99热这里只有精品96| 99热都是精品| 另类A片| 亚洲九N| 日日天天干| 亚洲小视频免费播放| 国产精品扒开腿做爽爽爽A片唱戏 亚洲爆乳无码精品AAA片蜜桃 | 色播五月丁香| 成人无码髙潮喷水A片| 无码色色色| 日本精品在线噜噜噜| 久久综合站| 丁香婷婷五月色成人网站| 丁香六月天AV| 婷婷色色宗合网| 五月婷婷成人| 俺去啦综合网| 色视频2025| 久草视频大香蕉99| 婷婷色综合| 天天插天天插天天插天天插| 欧美噜噜久久久XXX| 免费一区二区三区| 久久久久久久久久8888| 天天爽天天摸天天爱| 2050人人操免费工开爱| 97干在线免费| 婷婷色导航| 久久人妻伦理| 亚洲激情亚洲激情| 久久激情五月网| 五月丁香婷婷综合| 五月停停999| 2025天天爽天天摸| 欧美噜噜噜草| 久久玖玖综合| 91精选国| 五月婷婷综合网| 欧美这里只有精品| 色婷婷五月天激情在线播放| 婷婷精品在线| 天天肏视奸| WWW.桔色成人.COM| 26UUU欧美激情一区二区| 狠狠爱丁香婷| 日日夜夜狠狠| 久久久婷婷| 丁香婷婷激情| 蜜臀嫩草| 亚洲成人电影aaaa| 国产激情久久久| 激情六月婷婷| HD久久精品视频| 人人操人人妻| 国产精品扒开腿做爽爽爽A片唱戏 亚洲爆乳无码精品AAA片蜜桃 | 久久性爰视频这里只有精品| av 一区三区四区| 婷婷在线精品| 五月天婷婷綜合院| 全高清无码视頻| 丁香五月天婷婷大香蕉| 97操碰在线97| 亚洲狠狠色丁香婷婷综合久久| 99婷婷| 亚州操人在线视频| 色播五月丁香| 五月婷婷丁香大陆免费| 超碰在线9| 色香久久| 伊人久久婷婷| 大香蕉五月| 色色色在线观看| 亚洲激情五月| 99久久久久久www| 天天干天天av天天射| 变态 另类 在线| 天天操比比| 第四色五月天| 婷婷五月综激情| AV成人在线播放| 自拍偷窥99热| 丁香花五月天激情| 五月天综合婷婷| 97人妻碰碰中文无码久热丝袜| 99热欧美| 五月丁香六月欧美综合网站| 9999久久久久| 欧美交换配乱吟粗大25P| 大战熟女丰满人妻AV| 丰满老熟妇BBBBB搡BBB| 影音 五月 婷婷 久久| 五月婷婷香蕉| 百度4399有码精品V在线观看| 天天网曰日曰夜夜综合永久免费| 色情五月天。| 亚洲高清在线| 欧美色播综合在线观看| 超碰狠狠色| 天天久| 久9热| 九九亚洲| 婷五月天影院| 久久一伦| 亚洲九九夜夜| 五月www| 99re这里| 亚洲不卡| 欧洲色区| 97干在线免费| 色综合久久888| 色五月视频无码播放| 久久久99精品| 久久最新色| 五月天婷婷色综合| 少妇被下春药玩弄A片| 青青草原亚洲久| 丁香五月影视| 精品国产va久| 五月丁香婷婷视频| 玖玖婷婷色五月| 久热久| 色婷婷综合丁香五月天| 婷婷天堂综合| 亚洲久热无码| 色色五月天网站| 婷婷五月俺要去| 激情五月婷婷开心网| 五月激情六月丁香| 天天综合网~91| 色婷视频| 五月丁香综合精品| 亚洲精品在线视频| 丁香五月花影院| 色碰碰| 激情六月一二| 五月婷婷中文字幕| 伊人久久大香线蕉亚洲五月天,| 综合久久高清| 四月婷婷丁香| 97婷婷丁香| 丁香五月婷婷国产av| 色吧五月| 日日舔夜夜操| 五月天激情综合网| A级毛片高清免费不卡播放谢谢谢谢| 99爱免费在线观看| 丁香 亚洲 久久| 久婷婷视平| 色五月婷婷 成人| 国产婷婷五月色情综合| 怡红院AV亚洲一区二区三区H | 97碰 在线视频观看| 亚洲性图一区二区三区| 婷婷深爱五月| 玖玖婷婷免费| 天天色综合色| 五月丁香精品| av免费在线网站| 五月丁香成人| www狠狠| 丁香五月最新地址| 99热6这里只有精品| 中文字幕成人网站| 99精品国产在热久久| 99啪99| 欧美久久九九| 日日射天天射| 欧美色频| 色综合夜夜| 伊人久久婷婷| 91色吧网| 五月婷婷五月色| 久久婷婷老| 五月天伊人日日噜影片AV| 亚洲第一第二网站| 六月婷婷激情图片| 五月激情六月宗合| www91色网站| 丁香五月天啪啪激情综和网| 久热这里| 精品婷婷五月视| 国产无套精品一区二区| 大香网伊人久久综合| 色婷婷电影网| 九九色色色| 综合一区二区三区| 色色五月丁香婷婷综合| 五月天com| 精品视频网| 亭亭五月色男人| 超碰成人在线免费观看| 激情小说之五月| 婷婷五月五月丁香| 亚洲行行色色| 丁香婷婷五月天成人| 成人丁香婷婷| ww超碰在线| 日本五月天婷婷丁香| 色综合五月| 欧美激情综合五月色丁香| 丁香婷婷婷| 综合网视频| 六月色激情| 91免费看片| 97人人操人人干| 狠狠色丁香| 日本va网站| 丁香五月婷婷激情四射深爱激情| 先锋资源996| 无语停婷丁香网| 亚洲第一精品网站| 99久操| 五月天六月色| 久久亚洲婷婷综合色五月| 五月天色小说| 玖玖资源站蜜臀| 91ncm视频| 久久久激情| 丁香五月婷婷亚洲综合精品在线| 久久婷婷六月综合国际| 五月丁香婷婷激情澎湃四射| 久久影视婷婷五月| 狠狠爱婷婷丁香| 91精品婷婷国产综合久久| 九九色精品| 亚洲乱码成人| 小泽玛利亚视频一区二区| 久操激情| 五月丁香激情片| 99久久婷婷国产综合精品| 婷婷亚洲欧美丁香五月| 九色自拍| 婷婷D区| 婷婷五月天久久| 无码se| 爱99干99| 五月婷婷成人| 五月丁香久久久日婷婷久久婷婷日| 亚洲丁香五冃97色| 色热久| 狠狠色综合777| 久久婷婷草| www.婷婷| 婷婷丁香激情综合色情| 精品久热| 九九视频在线| 丁香婷婷五月人体| 狠狠插狠狠插| 激情综合色五月丁香六月亚洲| 夜夜爱伊人| 综合福利网| 国产精品国产| 99色一| 色原狠狠综合| 亚洲精品字幕在线观看 | 日本操B片| 99在线观看| 99热精品中文字幕| 操操操av| 亚洲av日韩无码| 中文字幕丰满孑伦无码专区| 激情亚洲婷婷| 天天综合亚洲综合| 婷婷五月电影院| 色444综合网| 91久热| 97操视频| 99久在线精品99re8| 思思久ren热| www99精品| 99操九九网| 亚洲综合色网| 99精品自拍视频| 五月丁香六月综合激情网| 日韩色色色色色| 天堂综合久久| www.99热国产| 色啪网| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 丁香久久五月婷综合| 色久免费| 五月天无码视屏播放| 丁香六月婷婷| 墨西哥毛片内射精| 这里只有精品96| 夜夜干夜夜操| www.91操| 日本久久婷婷| 色婷婷丁香五月在线观看| 99热这里只是精品| 丁香婷婷人妻综合网| 99精品久久久| 成人精品人妻| www.综合久久.com| 久久精品日| 中文字幕av网站| 国产精品成人网址| 精品影院| CHINESE熟女老女人HD视频 | 色播综合| 激情五月天视频| 91热99| 欧美色图天堂网| 在线视频另类| 五月天婷婷色色网| 97五月久久丁香婷婷| www.五月婷婷.com| 激情综合九| 婷婷久久婷婷色五月| 国产三级在线播放| 国产jd1024基地手机看国产| 九九热视频精品999| 亚洲xx在线| 色婷婷丁香女女| 亚洲日比视频| 婷婷狠狠爱| 91干99| 日韩三及成人AV片| 99.N在线视频| 婷婷丁香社区| 色久女| 久久五月天婷婷视频| 色五月xxx| 天天综合五月| 久久性爱视频这里只有精品| 婷婷伊人久久综合| 日本婷婷色日| 欧美超级视频97| 久久狠狠干| 五月天伊人网| 亚洲精品一区无码A片| 国产3p露脸普通话对白| 超碰人人插| 色蜜婷婷| 日韩成人电影在线播放| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 五月天·www·com| 狠狠狠狠狠草| 色色COm| 婷婷涩涩五月天| 六月综合婷婷开心伊人| 99热这里只有精品4| 99视频| 亚洲成人无码免费| 五月天婷婷社区久久综合| 日韩成人精品中文字幕| 狠狠色无码| 99爱在线视频观看| 婷婷丁香97| 色五月av伊人| 色色色色色色97| 五月天婷婷综合网| 婷婷综合视频| 亚洲成人AV电影在线| 亚洲自拍天堂| 狠狠色婷婷在线| 色综合久久天天综合网 | 国产婷婷色综合AV蜜臀AV| 噢美99| 97资源碰碰| 五月天激情图| 狠狠摸狠狠摸| 激情综合网激情五月天| 九九这里精品| 婷婷五月天成人| 婷婷五月天精品| 婷婷色五月综合| 久久性操| 天天色综合色| 五月丁香色婷婷色| 欧美日韩精品人妻狠狠躁免费视频| 九九9久九9国产视频| 99资源在线视频| 伊人狠狠综合| 99自拍视频在线观看| 亚洲乱码日产精品BD| 天天激情欧美美女| 欧美高潮9| www.lchjjc.com| 99久久精品国产色欲| 五月天激情四射| 亚洲99热| 亚洲爱婷婷| 九九热亚洲中文在线观看免费| 另类激情四射| 婷婷五月色播天| 日日操,天天操| 国产偷人爽久久久久久老妇APP| 九九亚洲综合| 日日操日日爽| www.婷婷五月天| 夜夜骑操AV| 亚洲AV网站| 日韩精品在线观看9| 五月丁香综合激情在线观看| 欧美内射AA| 久久精99| 99惹| 色色色色色色色色网站| 色婷婷五月天| 日韩狠狠色婷婷| 国产成人精品一区二三区熟女在线| 日本AAAAAAAAAAAAAA片| 思思热在线观看| 五月 婷 久| 婷婷丁香五月亚洲| 狠狠色婷| 色五月综合网站| 精品网站99| 99精品自拍视频| 婷婷欧美激情| 五月丁香啪啪啪啪| 五月婷婷六月丁香| 色色丁香婷婷综合| 色婷婷小说| 五月停性愛| 中文无码精品一区二区三区| 天天噜日日噜综合无码| 性爱技巧五月| 五月婷婷免费| 99在线精品免费视频| 99精品久久久久久久婷婷| 色五月丁香婷婷久草| 91刘玥视频在线观看| 欧美va欧美va差| 色五月激情五月| 日本激情ⅩXX免费视频| 99性视频| 26.uuu丁香五月婷婷| 色五月 五月婷婷| 一区二区三区XXXXXX| 五月丁香六月激情欧美综合| 婷婷五月天97干| 婷婷在线午夜| 超碰免费成人网站| 久久婷婷六月综合资源| 香蕉AV福利精品导航| 丁香色啪综合| 综合欧美五月婷婷|