亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

基于OpenCV和深度學(xué)習(xí)的蘋果葉病害識(shí)別方法:圖像分類與模型部署指南

基于OpenCV和深度學(xué)習(xí)的蘋果葉病害識(shí)別方法:圖像分類與模型部署指南 簡(jiǎn)介面向智慧農(nóng)業(yè)與計(jì)算機(jī)視覺畢設(shè)場(chǎng)景這套基于PythonOpenCV的蘋果葉病害識(shí)別檢測(cè)系統(tǒng)源碼包可精準(zhǔn)識(shí)別赤霉病、枯葉病、鐵銹病等常見葉片病變適合高校學(xué)生、科研人員及農(nóng)業(yè)智能開發(fā)者使用既可直接運(yùn)行也能修改代碼訓(xùn)練其他植物病害。壓縮包共382個(gè)文件約54.26MB主要包含162張標(biāo)注病害圖像、161個(gè)標(biāo)簽txt文件、16個(gè)Python源碼、3個(gè)訓(xùn)練好的pt模型以及20個(gè)YAML配置文件并附帶清晰的操作說明與評(píng)估指標(biāo)曲線大幅降低復(fù)現(xiàn)門檻。目前已有508人學(xué)習(xí)下載實(shí)操價(jià)值獲得認(rèn)可。整體設(shè)計(jì)兼顧教學(xué)與落地從環(huán)境配置、推理檢測(cè)到自定義訓(xùn)練均有完整指引幫助快速跑通檢測(cè)流程尤其適合畢業(yè)設(shè)計(jì)、課程項(xiàng)目或農(nóng)業(yè)病害識(shí)別應(yīng)用的原型驗(yàn)證是一份高性價(jià)比的完整參考資料。1. 這個(gè)畢設(shè)題目的本質(zhì)不是檢測(cè)是圖像分類打開壓縮包之前先明確一件事標(biāo)題寫的是“蘋果葉病害識(shí)別檢測(cè)”但按數(shù)據(jù)集的組織方式——按病害類別分文件夾、每張圖對(duì)應(yīng)一個(gè)標(biāo)簽——這實(shí)際上是一個(gè)圖像分類任務(wù)或者說“判別式識(shí)別”任務(wù)。它不是YOLO那種畫檢測(cè)框的定位任務(wù)。這個(gè)區(qū)分很重要因?yàn)樗苯記Q定了你要不要再接一個(gè)檢測(cè)頭的訓(xùn)練流程還是老老實(shí)實(shí)把分類準(zhǔn)確率做上去再疊加一個(gè)滑動(dòng)窗口來做“檢測(cè)”的觀感。對(duì)這種畢設(shè)項(xiàng)目來說最穩(wěn)的落地路徑是用OpenCV做圖像預(yù)處理和傳統(tǒng)特征提取再用OpenCV的DNN模塊加載訓(xùn)練好的深度模型做推理。你不需要從頭搭建一套深度學(xué)習(xí)訓(xùn)練管線也不需要用OpenCV去硬寫一個(gè)CNN訓(xùn)練器而是把兩者結(jié)合起來用Python生態(tài)訓(xùn)練用OpenCV做工程化部署。這個(gè)方案適合誰(shuí)適合那些需要短時(shí)間跑通、能演示、能答辯、能寫系統(tǒng)架構(gòu)圖的本科畢設(shè)。它不追求刷榜級(jí)別的準(zhǔn)確率但要求你清楚每一行代碼在干什么模型失效的時(shí)候你能給出合理解釋。蘋果葉病害本身有清晰的表觀特征——病斑顏色、紋理、分布區(qū)域——這讓傳統(tǒng)特征方法也能拿到不錯(cuò)的下限。2. 環(huán)境和數(shù)據(jù)集把“帶標(biāo)注的文件夾”變成可訓(xùn)練的數(shù)據(jù)管線2.1 Python和OpenCV環(huán)境搭建三個(gè)坑一次講清打開壓縮包第一步不是看模型文件是先把環(huán)境跑通。項(xiàng)目基于Python那就從python官網(wǎng)下載對(duì)應(yīng)版本。注意畢設(shè)項(xiàng)目普遍對(duì)版本敏感建議用Python 3.8到3.10之間的版本太新的版本有時(shí)候會(huì)遇到某些依賴庫(kù)沒有預(yù)編譯wheel的問題。安裝時(shí)勾選“Add Python to PATH”這一步漏掉的后果是你打開命令行敲python提示不是內(nèi)部或外部命令這不是Python沒裝好是環(huán)境變量沒配。裝好Python后用pip安裝依賴python -m pip install --upgrade pip python -m pip install opencv-python4.8.0.76 python -m pip install numpy matplotlib scikit-learnopencv-python的版本我建議固定到4.8.x原因是這個(gè)版本線對(duì)ONNX模型的DNN推理支持已經(jīng)非常成熟同時(shí)不會(huì)像4.10那樣在某些老筆記本上出現(xiàn)奇怪的解碼器兼容問題。安裝完成后驗(yàn)證一下python -c import cv2; print(cv2.__version__)這一步能過說明OpenCV主庫(kù)沒問。如果你遇到ModuleNotFoundError: No module named opencv那大概率是裝成了opencv-contrib-python但沒有正確import記住import名永遠(yuǎn)是cv2不是opencv。還有一個(gè)高頻報(bào)錯(cuò)是cv2.error: OpenCV(4.4.0)這通常指你用了太老的預(yù)編譯包同時(shí)你的Python版本是3.11以上兩個(gè)版本之間ABI不兼容。解決方式是升級(jí)OpenCV版本到4.8以上而不是去網(wǎng)上找老版本的whl文件硬裝。這個(gè)報(bào)錯(cuò)我當(dāng)年也卡過結(jié)果發(fā)現(xiàn)是pip給了一個(gè)緩存里的老版本加--no-cache-dir重新裝就干凈了。2.2 數(shù)據(jù)集結(jié)構(gòu)檢查先統(tǒng)計(jì)再訓(xùn)練解壓數(shù)據(jù)集之后第一步是寫一個(gè)統(tǒng)計(jì)腳本看看每個(gè)類別的圖片數(shù)量、尺寸分布、格式是否統(tǒng)一。很多標(biāo)好名的數(shù)據(jù)集并不規(guī)范——有的葉子是整片葉有的是打了孔的局部葉有的圖片帶水印或者EXIF旋轉(zhuǎn)信息。下面這段代碼我每次拿到新數(shù)據(jù)集都會(huì)先跑一遍import os import cv2 from collections import Counter dataset_root ./dataset # 假設(shè)目錄下按類別分子文件夾 exts (.jpg, .jpeg, .png, .bmp) category_stats {} size_stats [] for cls_name in os.listdir(dataset_root): cls_path os.path.join(dataset_root, cls_name) if not os.path.isdir(cls_path): continue imgs [f for f in os.listdir(cls_path) if f.lower().endswith(exts)] category_stats[cls_name] len(imgs) for im in imgs[:50]: # 抽樣看尺寸分布 img cv2.imread(os.path.join(cls_path, im)) if img is not None: h, w img.shape[:2] size_stats.append((w, h)) print(category_stats) print(Counter(size_stats).most_common(10))這段代碼的意圖很直白統(tǒng)計(jì)每類圖片數(shù)量抽樣看尺寸。邏輯上用os.listdir遍歷類目用cv2.imread讀圖取寬高全部存進(jìn)列表后用Counter看尺寸分布。如果你看到某個(gè)類的數(shù)量明顯偏少比如只有別類的三分之一那么訓(xùn)練時(shí)就必須做類別加權(quán)或者少采樣策略。如果你看到尺寸極端分散比如有1920x1080的也有256x256的預(yù)處理階段就要統(tǒng)一縮放不要指望模型自己對(duì)尺度不變性有多好的魯棒性。還有一個(gè)容易被忽略的點(diǎn)有些數(shù)據(jù)集里混有灰度圖單通道讀入后shape是(h,w)不是(h,w,3)后續(xù)特征提取或者CNN輸入會(huì)直接報(bào)維度錯(cuò)誤。這個(gè)時(shí)候在讀取時(shí)統(tǒng)一轉(zhuǎn)成三通道用cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)做轉(zhuǎn)換即可。2.3 劃分訓(xùn)練集和驗(yàn)證集不洗牌等于白練畢設(shè)數(shù)據(jù)集規(guī)模一般在小幾千張這個(gè)規(guī)模下直接用train_test_split做個(gè)按類別分層的劃分就好。注意要用stratify參數(shù)保證每個(gè)類在訓(xùn)練集和驗(yàn)證集中的比例一致否則一個(gè)類如果全跑到驗(yàn)證集訓(xùn)練的時(shí)候模型沒見過這個(gè)類分?jǐn)?shù)直接崩掉。我一般會(huì)把全部數(shù)據(jù)按7:2:1拆成訓(xùn)練集、驗(yàn)證集、測(cè)試集測(cè)試集從頭到尾不參與訓(xùn)練只用來做最終評(píng)估。import os import shutil import random from sklearn.model_selection import train_test_split random.seed(42) dataset_root ./dataset train_dir, val_dir, test_dir ./train, ./val, ./test classes [d for d in os.listdir(dataset_root) if os.path.isdir(os.path.join(dataset_root, d))] for cls in classes: imgs os.listdir(os.path.join(dataset_root, cls)) # 保證路徑完整 full_paths [os.path.join(dataset_root, cls, i) for i in imgs] tr, tmp train_test_split(full_paths, test_size0.3, random_state42, stratifyNone if len(imgs) 2 else [1]*len(full_paths)) va, te train_test_split(tmp, test_size0.33, random_state42) for split, dir_name in [(tr, train_dir), (va, val_dir), (te, test_dir)]: out_dir os.path.join(dir_name, cls) os.makedirs(out_dir, exist_okTrue) for src in split: shutil.copy(src, os.path.join(out_dir, os.path.basename(src)))這段代碼先按7:3拆出訓(xùn)練集和臨時(shí)集再?gòu)呐R時(shí)集按2:3拆出驗(yàn)證集和測(cè)試集合成下來就是7:2:1。random_state42固定后每次跑出來劃分一致論文里寫“隨機(jī)劃分固定種子”這句就是你代碼的注腳。注意我這里的stratify參數(shù)寫得很潦草因?yàn)槊總€(gè)類的圖片數(shù)量不多強(qiáng)行分層可能報(bào)錯(cuò)所以直接給了一個(gè)全1的假標(biāo)簽讓它不報(bào)錯(cuò)。如果你每個(gè)類都有幾十張以上可以把第二個(gè)參數(shù)改成類別標(biāo)簽數(shù)組做真正的分層抽樣。2.4 數(shù)據(jù)增強(qiáng)用OpenCV做平移、旋轉(zhuǎn)、縮放訓(xùn)練過程如果直接拿原圖喂進(jìn)去模型會(huì)過擬合到背景和葉子的擺放位置。畢設(shè)數(shù)據(jù)集通常不夠大增強(qiáng)是必須的步驟。這里不引入imgaug這種大庫(kù)就用OpenCV自帶的方法好處是能在答辯的時(shí)候直接說“全部基于OpenCV實(shí)現(xiàn)”。簡(jiǎn)單的增強(qiáng)組合是隨機(jī)水平翻轉(zhuǎn)、小角度旋轉(zhuǎn)、亮度擾動(dòng)。import cv2 import numpy as np def augment_image(img, angle_range15, brightness_range30): h, w img.shape[:2] # 隨機(jī)旋轉(zhuǎn) angle np.random.uniform(-angle_range, angle_range) M cv2.getRotationMatrix2D((w/2, h/2), angle, 1.0) rotated cv2.warpAffine(img, M, (w, h), flagscv2.INTER_LINEAR, borderModecv2.BORDER_REFLECT_101) # 隨機(jī)亮度擾動(dòng) brightness np.random.randint(-brightness_range, brightness_range) hsv cv2.cvtColor(rotated, cv2.COLOR_BGR2HSV).astype(np.float32) hsv[:, :, 2] np.clip(hsv[:, :, 2] brightness, 0, 255) aug cv2.cvtColor(hsv.astype(np.uint8), cv2.COLOR_HSV2BGR) return aug這里旋轉(zhuǎn)用的getRotationMatrix2D生成旋轉(zhuǎn)矩陣warpAffine做仿射變換borderModeBORDER_REFLECT_101是為了讓邊緣在旋轉(zhuǎn)時(shí)不是補(bǔ)黑邊而是反射葉片本身的像素補(bǔ)黑邊會(huì)讓模型學(xué)到“邊框等于背景”這種假特征。亮度擾動(dòng)放在HSV空間是對(duì)明度通道直接加減轉(zhuǎn)換回BGR后色彩基本不受影響。注意這里有個(gè)隱藏細(xì)節(jié)先旋轉(zhuǎn)再調(diào)亮度旋轉(zhuǎn)會(huì)產(chǎn)生插值噪聲調(diào)亮暗不會(huì)引入新的空間結(jié)構(gòu)所以順序不要反。如果你還想做縮放裁剪可以在這個(gè)函數(shù)里再加一步cv2.resize到(224,224)然后在推理的時(shí)候也用相同尺寸保證訓(xùn)練和部署的input size一致。輸出尺寸不一致是畢設(shè)里最常見的翻車點(diǎn)后面推理章節(jié)里還會(huì)遇到。3. 模型選型和訓(xùn)練從傳統(tǒng)特征到深度學(xué)習(xí)推理3.1 兩條路線怎么選SVM上線快CNN上限高拿到標(biāo)好的數(shù)據(jù)集之后你面臨一個(gè)選擇用傳統(tǒng)特征工程加SVM還是上CNN。這個(gè)選擇不是看心情而是看你數(shù)據(jù)集規(guī)模和部署形態(tài)。如果數(shù)據(jù)量在每類兩三百?gòu)堃詢?nèi)傳統(tǒng)特征加SVM的訓(xùn)練速度是秒級(jí)而且可解釋性強(qiáng)論文里可以畫特征可視化圖。如果數(shù)據(jù)量在每類五百?gòu)堃陨匣蛘弑尘皬?fù)雜葉片姿態(tài)多變CNN遷移學(xué)習(xí)的準(zhǔn)確率優(yōu)勢(shì)會(huì)非常明顯。這個(gè)項(xiàng)目標(biāo)題里帶了“模型”這個(gè)詞通常默認(rèn)給的預(yù)訓(xùn)練權(quán)重是按CNN路線訓(xùn)練的那么你在系統(tǒng)里就要用OpenCV的DNN模塊去加載推理而不是重新訓(xùn)練一個(gè)SVM去替代它。但我建議你把兩條路線都跑一遍基線SVM結(jié)果作為baseline寫進(jìn)論文對(duì)比表最終部署用CNN。這樣既能體現(xiàn)工作量又能在答辯被問“為什么不用傳統(tǒng)方法”的時(shí)候給出一個(gè)量化對(duì)比答案。3.2 用OpenCV提取HOG特征訓(xùn)練SVM把原理寫進(jìn)代碼HOG特征的核心思想是統(tǒng)計(jì)圖像局部區(qū)域的梯度方向分布。葉片病斑的邊緣和健康區(qū)域在梯度方向上會(huì)有明顯差異所以HOG對(duì)這類紋理型病害是比較經(jīng)典的表征方式。用OpenCV提取HOG特征加SVM訓(xùn)練下面這個(gè)流程是完整的import cv2 import numpy as np from sklearn.svm import SVC from sklearn.preprocessing import StandardScaler import os def extract_hog(img, cell_size(8, 8), block_size(2, 2), nbins9): img_resized cv2.resize(img, (128, 128)) img_gray cv2.cvtColor(img_resized, cv2.COLOR_BGR2GRAY) if img_resized.ndim 3 else img_resized hog cv2.HOGDescriptor((128, 128), (16, 16), (8, 8), cell_size, nbins) return hog.compute(img_gray).flatten() X, y [], [] for cls_idx, cls_name in enumerate(os.listdir(train_dir)): cls_path os.path.join(train_dir, cls_name) for fname in os.listdir(cls_path): img cv2.imread(os.path.join(cls_path, fname)) if img is None: continue X.append(extract_hog(img)) y.append(cls_idx) X np.array(X) scaler StandardScaler() X_scaled scaler.fit_transform(X) svm SVC(kernelrbf, C10, gammascale, probabilityTrue) svm.fit(X_scaled, y)HOGDescriptor的四個(gè)參數(shù)依次是winSize、blockSize、blockStride、cellSize。winSize設(shè)為128x128意味著整圖作為一個(gè)檢測(cè)窗口cellSize 8x8和nbins 9是經(jīng)典配置。每個(gè)block歸一化后能把光照變化的影響壓下去這對(duì)戶外拍蘋果葉的場(chǎng)景很重要因?yàn)樽匀还庀峦黄~子的亮度差異很大。SVM用RBF核C10意思是誤分類懲罰適中g(shù)ammascale讓模型自己根據(jù)特征標(biāo)準(zhǔn)差決定核寬這是我們平時(shí)調(diào)參時(shí)最穩(wěn)的起點(diǎn)。如果你發(fā)現(xiàn)準(zhǔn)確率卡在80%上下優(yōu)先調(diào)整的是cell_size從8改到16特征是少了但泛化往往更好然后再懷疑SVM參數(shù)。3.3 CNN遷移學(xué)習(xí)用torch訓(xùn)練再導(dǎo)出ONNX部署端用OpenCV讀模型訓(xùn)練端卻不必局限于OpenCV。常見做法是用PyTorch寫一個(gè)遷移學(xué)習(xí)腳本用ImageNet預(yù)訓(xùn)練的ResNet18做骨干網(wǎng)絡(luò)把最后一層全連接替換成病害類別數(shù)。之所以選ResNet18而不是更深的ResNet50是因?yàn)樘O果葉病害數(shù)據(jù)量不足以支撐深網(wǎng)絡(luò)的微調(diào)而且推理速度在CPU上更快演示的時(shí)候不會(huì)卡頓。下面這段是核心訓(xùn)練腳本的骨架import torch import torch.nn as nn import torchvision.models as models import torchvision.transforms as transforms from torch.utils.data import DataLoader, Dataset from PIL import Image import os class LeafDataset(Dataset): def __init__(self, root): self.classes sorted(os.listdir(root)) self.samples [] for cls_idx, cls_name in enumerate(self.classes): cls_path os.path.join(root, cls_name) for f in os.listdir(cls_path): self.samples.append((os.path.join(cls_path, f), cls_idx)) self.transform transforms.Compose([ transforms.Resize((224, 224)), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ]) def __len__(self): return len(self.samples) def __getitem__(self, idx): path, label self.samples[idx] img Image.open(path).convert(RGB) return self.transform(img), label model models.resnet18(weightsmodels.ResNet18_Weights.IMAGENET1K_V1) num_ftrs model.fc.in_features model.fc nn.Linear(num_ftrs, 5) # 假設(shè)5類病害 device torch.device(cuda if torch.cuda.is_available() else cpu) model model.to(device) criterion nn.CrossEntropyLoss() optimizer torch.optim.SGD(model.parameters(), lr0.001, momentum0.9) for epoch in range(10): model.train() for imgs, labels in DataLoader(LeafDataset(train_dir), batch_size32, shuffleTrue): imgs, labels imgs.to(device), labels.to(device) optimizer.zero_grad() outputs model(imgs) loss criterion(outputs, labels) loss.backward() optimizer.step() print(fepoch {epoch1}, loss {loss.item():.4f})這里weightsIMAGENET1K_V1表示加載預(yù)訓(xùn)練權(quán)重fc層從默認(rèn)的1000類輸出改成自己的類別數(shù)這部分權(quán)重隨機(jī)初始化backbone保持預(yù)訓(xùn)練。學(xué)習(xí)率設(shè)置0.001對(duì)于微調(diào)來說不算激進(jìn)SGD加momentum適合小數(shù)據(jù)集。10個(gè)epoch足夠看到收斂趨勢(shì)如果loss還沒降下去問題大概率在數(shù)據(jù)讀取或者歸一化參數(shù)上而不是網(wǎng)絡(luò)結(jié)構(gòu)。訓(xùn)練完的模型要導(dǎo)出成ONNXOpenCV的DNN模塊不支持直接讀.pt文件dummy_input torch.randn(1, 3, 224, 224).to(device) torch.onnx.export( model, dummy_input, apple_leaf.onnx, input_names[input], output_names[output], dynamic_axesNone, opset_version11 )導(dǎo)出時(shí)opset_version11是一個(gè)平衡點(diǎn)太低有些算子不支持太高OpenCV的ONNX解析器可能遇到不認(rèn)識(shí)的算子。固定輸入尺寸224x224的好處是導(dǎo)出時(shí)不用動(dòng)態(tài)軸推理時(shí)也不用做尺寸適配省掉一整套坐標(biāo)映射邏輯。3.4 評(píng)估指標(biāo)別只報(bào)準(zhǔn)確率要報(bào)混淆矩陣做評(píng)估的時(shí)候單看準(zhǔn)確率在病害識(shí)別項(xiàng)目里是自欺欺人。因?yàn)樘O果葉病害有些類之間差異很小比如炭疽葉枯病和褐斑病人眼都要仔細(xì)分辨模型如果誤判一兩張會(huì)把準(zhǔn)確率拖下去兩個(gè)點(diǎn)。正確的評(píng)估是驗(yàn)證集上的混淆矩陣加每類precision、recall、F1。代碼實(shí)現(xiàn)可以直接用scikit-learnfrom sklearn.metrics import confusion_matrix, classification_report y_true, y_pred [], [] model.eval() with torch.no_grad(): for imgs, labels in DataLoader(LeafDataset(val_dir), batch_size32, shuffleFalse): outputs model(imgs.to(device)) _, preds torch.max(outputs, 1) y_true.extend(labels.numpy()) y_pred.extend(preds.cpu().numpy()) print(classification_report(y_true, y_pred, target_namesdataset.classes)) print(confusion_matrix(y_true, y_pred))torch.no_grad()這里很關(guān)鍵它告訴PyTorch不需要為推理過程構(gòu)建計(jì)算圖內(nèi)存占用降到原來的十分之一。推理時(shí)如果你的模型在CPU上跑一個(gè)batch 32張224x224的圖耗時(shí)大約一兩秒足夠支撐實(shí)時(shí)演示。如果某個(gè)類的recall明顯低于其他類那就是數(shù)據(jù)不足或者特征重疊太大回到第2章去查這個(gè)類的影像數(shù)量大概率是樣本太少。畢設(shè)論文里這個(gè)評(píng)估結(jié)果是你所有結(jié)論的支撐不要在這塊偷懶。4. 部署與展示讓OpenCV DNN把模型跑起來4.1 加載ONNX模型并推理OpenCV做識(shí)別的核心代碼訓(xùn)練和推理分離是這個(gè)項(xiàng)目的常態(tài)訓(xùn)練在PyTorch里完成部署在OpenCV DNN模塊里完成。OpenCV的cv2.dnn.readNetFromONNX可以直接加載導(dǎo)出的模型然后通過blobFromImage把圖像轉(zhuǎn)成模型需要的輸入格式前向推理得到輸出向量。整個(gè)過程不依賴PyTorch也就是說部署機(jī)上只需要openv-python。import cv2 import numpy as np net cv2.dnn.readNetFromONNX(apple_leaf.onnx) class_names [healthy, alternaria, rust, scab, frogeye] def predict(img): img_resized cv2.resize(img, (224, 224)) blob cv2.dnn.blobFromImage(img_resized, scalefactor1.0/255.0, size(224, 224), mean(0.485*255, 0.456*255, 0.406*255), swapRBTrue) net.setInput(blob) outputs net.forward() # 輸出形狀 (1, num_classes)softmax后取最大索引 scores outputs[0] scores np.exp(scores - np.max(scores)) scores / np.sum(scores) pred_idx int(np.argmax(scores)) conf scores[pred_idx] return class_names[pred_idx], confblobFromImage的參數(shù)團(tuán)是這里最容易出問題的地方。scalefactor1/255是把像素從0-255縮放到0-1mean必須和訓(xùn)練時(shí)用的Normalize參數(shù)嚴(yán)格對(duì)應(yīng)。PyTorch里Normalize(mean[0.485,0.456,0.406], std[0.229,0.224,0.225])是ImageNet的統(tǒng)計(jì)均值這些數(shù)值在訓(xùn)練時(shí)會(huì)把每個(gè)通道減均值再除標(biāo)準(zhǔn)差。但OpenCV的blobFromImage只支持減均值不支持除標(biāo)準(zhǔn)差所以這里要把std乘進(jìn)mean里再減。你把(0.485*255, 0.456*255, 0.406*255)算出來大約是(123.675, 116.28, 103.53)這幾個(gè)數(shù)在論文的實(shí)驗(yàn)設(shè)置部分必須交代。注意swapRBTrue是因?yàn)镺penCV讀圖是BGR順序而PyTorch訓(xùn)練時(shí)用的是RGB順序不交換的話模型的輸入通道語(yǔ)義就反了效果會(huì)斷崖式下跌準(zhǔn)確率甚至不如隨機(jī)猜。推理輸出的分?jǐn)?shù)向量直接做softmax歸一化。雖然ONNX里沒有帶softmax層導(dǎo)出時(shí)候沒加手動(dòng)實(shí)現(xiàn)只用了np.exp加歸一化數(shù)值穩(wěn)定性上用np.max先平移一下防止exp溢出后全是NaN。如果你要的是更快的前100類預(yù)測(cè)或者閾值過濾在這段邏輯上加一個(gè)conf 0.6什么也不返回的兜底邏輯就行。4.2 批量預(yù)測(cè)和輸出可視化畫出病斑圈畢設(shè)系統(tǒng)要演示除了終端打印類別名之外最好能把識(shí)別結(jié)果畫在圖上。OpenCV在這塊的優(yōu)勢(shì)就體現(xiàn)出來了不需要額外工具庫(kù)直接畫框和文字。雖然分類模型本身沒有邊界框輸出但可以結(jié)合一個(gè)滑窗策略把圖劃分成多個(gè)區(qū)域分別預(yù)測(cè)預(yù)測(cè)置信度高的區(qū)域就畫個(gè)紅框這樣在視覺上就有了“檢測(cè)”的效果。def draw_prediction(img, pred_label, conf, top_k3): out img.copy() label_text f{pred_label} ({conf:.2f}) cv2.rectangle(out, (0, 0), (out.shape[1], 40), (0, 0, 255), -1) cv2.putText(out, label_text, (5, 28), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 2) return out def multi_crop_predict(img, net, class_names, crop_size224): h, w img.shape[:2] results [] for y in range(0, max(h - crop_size, 1), crop_size // 2): for x in range(0, max(w - crop_size, 1), crop_size // 2): crop img[y:ycrop_size, x:xcrop_size] if crop.shape[0] crop_size or crop.shape[1] crop_size: crop cv2.resize(crop, (crop_size, crop_size)) cls, conf predict(crop) results.append((x, y, cls, conf)) return [r for r in results if r[3] 0.7]這段邏輯用一個(gè)步長(zhǎng)為crop_size//2的滑窗每隔半個(gè)窗口取一次裁片每張裁片獨(dú)立做一次推理然后按置信度過濾高于0.7的視為病害區(qū)域?;安介L(zhǎng)設(shè)置為一半窗口大小是為了相鄰裁片有50%重疊重疊區(qū)域即使只在一張裁片里被判定為病害也不容易漏掉。這個(gè)策略的代價(jià)是計(jì)算量翻倍但對(duì)單張圖片的演示場(chǎng)景完全可以接受。如果你在batch預(yù)測(cè)時(shí)發(fā)現(xiàn)效果不如單張檢查一下是不是crop內(nèi)部又做了一次resize有些裁片本身就是224x224再resize一次不會(huì)變但如果是小目標(biāo)病害裁片尺寸小于224這時(shí)直接resize會(huì)讓病斑變形。正確的做法是原尺寸小于224的裁片直接pad到224而不是縮放保留病斑相對(duì)大小。4.3 做一個(gè)能答辯的界面OpenCV窗口直連攝像頭如果答辯現(xiàn)場(chǎng)能演示實(shí)時(shí)識(shí)別效果遠(yuǎn)好于只放PPT截圖。用OpenCV的VideoCapture打開電腦攝像頭循環(huán)讀取每一幀用上面的predict函數(shù)識(shí)別后疊加顯示識(shí)別結(jié)果。下面是最簡(jiǎn)界面邏輯cap cv2.VideoCapture(0) if not cap.isOpened(): print(camera not found) exit() while True: ret, frame cap.read() if not ret: break # 實(shí)時(shí)推理時(shí)不要做滑窗直接整幅圖預(yù)測(cè) label, conf predict(frame) display frame.copy() cv2.putText(display, f{label} {conf:.2f}, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 2) cv2.imshow(Apple Leaf Disease Recognition, display) key cv2.waitKey(1) 0xFF if key ord(q): break cap.release() cv2.destroyAllWindows()實(shí)時(shí)識(shí)別場(chǎng)景下要犧牲掉滑窗策略因?yàn)槊繋评硪淮我呀?jīng)耗時(shí)約100到200毫秒CPU再疊加滑窗會(huì)掉幀到?jīng)]法看。一個(gè)折中做法是每推理5幀做一次完整滑窗中間4幀沿用最近一次結(jié)果這樣滾動(dòng)的感覺還在計(jì)算壓力卻小得多。waitKey(1)的1毫秒延遲是讓OpenCV窗口能正常處理鍵盤事件和重繪設(shè)成0會(huì)發(fā)生什么問題呢窗口界面會(huì)卡到想砸電腦因?yàn)槭录h(huán)被徹底堵住了。答辯現(xiàn)場(chǎng)要提前試一下攝像頭編號(hào)VideoCapture(0)是筆記本內(nèi)置攝像頭外接USB攝像頭可能是1或者2這個(gè)編號(hào)在設(shè)備管理器里能看到但OpenCV只按順序探測(cè)不要以為下標(biāo)從0開始就一定能打開。4.4 模型性能基準(zhǔn)跑分之前先給CPU降頻演示之前要在你的電腦上先做個(gè)基準(zhǔn)測(cè)試記錄單幀推理耗時(shí)和FPS這個(gè)數(shù)據(jù)答辯時(shí)可以直接展示證明你的系統(tǒng)滿足實(shí)時(shí)性。測(cè)速代碼很簡(jiǎn)單循環(huán)推理100次統(tǒng)計(jì)平均耗時(shí)import time start time.time() for _ in range(100): fake_input np.zeros((224, 224, 3), dtypenp.uint8) predict(fake_input) avg_ms (time.time() - start) * 10 print(favg inference time: {avg_ms:.1f} ms)這里用全零圖測(cè)得的耗時(shí)和真實(shí)圖片相差不大因?yàn)橛?jì)算量主要在網(wǎng)絡(luò)前向推理不在圖像解碼。測(cè)出來的數(shù)字如果在200毫秒左右說明CPU是普通筆記本級(jí)別演示時(shí)把輸入分辨率從224降到160會(huì)提速到100毫秒以下但精度損失可以接受。如果數(shù)字超過500毫秒不要先懷疑OpenCV先看模型導(dǎo)出時(shí)是否意外加上了softmax或者多余的算子用onnx.checker做一次模型檢查排掉多余計(jì)算節(jié)點(diǎn)再測(cè)。很多人在測(cè)速時(shí)開著后臺(tái)瀏覽器、IDE跑出來的數(shù)字波動(dòng)大得離譜解決辦法是關(guān)掉所有其他應(yīng)用這個(gè)測(cè)出來的數(shù)據(jù)才有說服力。5. 避坑記錄復(fù)原數(shù)據(jù)集和模型過程中最常見的五個(gè)問題5.1 opencv-python版本沖突導(dǎo)致DNN報(bào)錯(cuò)現(xiàn)象是跑模型推理時(shí)報(bào)cv2.error: OpenCV(4.4.0) ...找不到readNetFromONNX。原因是你pip默認(rèn)解析出來的opencv-python版本還是舊版或者本機(jī)同時(shí)存在過conda的opencv和pip的opencv兩個(gè)版本混在一起。解決方式是徹底卸載后重裝pip uninstall opencv-python opencv-contrib-python再pip install --no-cache-dir opencv-python4.8.0.76。另外確認(rèn)cv2.__version__是你期望的版本不要只看import不報(bào)錯(cuò)就認(rèn)為環(huán)境沒問題。5.2 訓(xùn)練時(shí)圖讀成None半路崩掉現(xiàn)象是訓(xùn)練到一半報(bào)AttributeError: NoneType object has no attribute shape或者圖集統(tǒng)計(jì)出來的尺寸分布里混了一堆(0,0)。原因通常是數(shù)據(jù)集里有損壞的圖片文件或者圖片路徑里有中文字符OpenCV的imread在win平臺(tái)下解析含中文路徑的文件會(huì)失敗。解決方式是在數(shù)據(jù)加載時(shí)加一層防御邏輯img cv2.imdecode(np.fromfile(full_path, dtypenp.uint8), cv2.IMREAD_COLOR)np.fromfile讀出來的字節(jié)流不經(jīng)過文件路徑的編碼解析imdecode直接解碼繞開中文路徑問題。加載數(shù)據(jù)時(shí)凡遇到None就打印路徑并跳過不要直接中斷訓(xùn)練循環(huán)。5.3 模型在驗(yàn)證集上準(zhǔn)確率很高測(cè)試集上崩現(xiàn)象是驗(yàn)證集準(zhǔn)確率0.95測(cè)試集直接掉到0.6。原因是驗(yàn)證集劃分時(shí)不小心把同一株蘋果樹不同角度的照片拆到了兩邊數(shù)據(jù)泄漏了。解決方式是重新劃分按“圖片所在子目錄”作為分組依據(jù)確保同一來源的圖片不會(huì)同時(shí)出現(xiàn)在訓(xùn)練和測(cè)試?yán)?。很多?biāo)好病害的數(shù)據(jù)集文件名本身就是拍攝時(shí)間加序號(hào)同一批次拍攝的圖片特征高度相似這種泄漏在畢設(shè)中防不勝防但答辯老師一問就能戳穿你。5.4 導(dǎo)出ONNX后推理結(jié)果和PyTorch完全不一致現(xiàn)象是在PyTorch里預(yù)測(cè)某個(gè)類是銹病信心0.9用OpenCV讀ONNX后同一個(gè)圖預(yù)測(cè)成健康信心0.98。原因是blobFromImage的均值處理不對(duì)或者swapRB順序錯(cuò)位。解決方式是做一張固定測(cè)試圖在PyTorch推理時(shí)打印預(yù)處理后的像素第一個(gè)值再在OpenCV里打印blob的第一個(gè)值兩者對(duì)比就能定位是哪個(gè)步驟出問題。這種問題查起來不要靠猜打印數(shù)值來對(duì)比最靠譜。5.5 攝像頭打不開但報(bào)錯(cuò)信息不明顯現(xiàn)象是cap.isOpened()返回False但沒有具體錯(cuò)誤。原因一般是攝像頭被占用比如你打開過微信、釘釘?shù)臄z像頭預(yù)覽或者上次程序沒有cap.release()資源沒有被釋放。解決方式是關(guān)掉所有占用攝像頭的程序重啟IDE的進(jìn)程在命令行里單獨(dú)跑一下打開攝像頭的測(cè)試腳本。如果還能打開那就是進(jìn)程級(jí)資源占用如果打不開檢查設(shè)備是不是被Windows的隱私設(shè)置禁用了。6. 進(jìn)階技巧類別增量學(xué)習(xí)和置信度閾值自適應(yīng)的一個(gè)習(xí)慣如果你想把項(xiàng)目做到答辯中段亮點(diǎn)我建議你加一個(gè)類別增量學(xué)習(xí)的演示模塊。具體做法是把模型輸出的softmax分布保存下來每當(dāng)識(shí)別結(jié)果的置信度低于某個(gè)閾值時(shí)自動(dòng)彈出窗口讓用戶確認(rèn)這張圖屬于哪個(gè)類確認(rèn)后把新樣本追加到數(shù)據(jù)集并做一次簡(jiǎn)易的增量微調(diào)。對(duì)于數(shù)據(jù)集是標(biāo)注好的畢設(shè)項(xiàng)目來說這個(gè)增量模塊本質(zhì)上是把訓(xùn)練流程封裝成可交互界面但它在答辯時(shí)的展示效果比一個(gè)靜態(tài)模型強(qiáng)很多。核心代碼只要在原來的預(yù)測(cè)函數(shù)基礎(chǔ)上加一個(gè)回傳def interactive_feedback(img, pred_label, conf, threshold0.6): label, conf predict(img) if conf threshold: # 彈窗讓用戶二選一接受機(jī)器預(yù)測(cè) or 人工指定 # 簡(jiǎn)單做法收集到 wrong_samples/ 目錄 cv2.imwrite(./feedback/unknown_{}.jpg.format(time.strftime(%Y%m%d_%H%M%S)), img) return label, conf, needs_label return label, conf, ok閾值0.6是一個(gè)經(jīng)驗(yàn)值。蘋果葉病害類間相似度高0.6的閾值能在保持召回的同時(shí)把不確定樣本攔下來。如果你發(fā)現(xiàn)攔下來的樣本中有一半人眼也分不清那說明數(shù)據(jù)集標(biāo)注質(zhì)量本身有問題而不是模型問題這時(shí)不要硬調(diào)模型回看數(shù)據(jù)統(tǒng)計(jì)。這個(gè)小模塊寫到論文里就是“人機(jī)協(xié)同標(biāo)注流程”聽起來比單純“訓(xùn)練了五個(gè)類”有層次得多。我自己做這類畢設(shè)項(xiàng)目的習(xí)慣是模型權(quán)重文件放一個(gè)目錄訓(xùn)練日志放一個(gè)目錄誤判樣本收集目錄單獨(dú)建目錄結(jié)構(gòu)從一開始就固定好后面寫論文的時(shí)候回找任何實(shí)驗(yàn)結(jié)果都能3分鐘內(nèi)翻到。很多同學(xué)跑完代碼模型文件丟了數(shù)據(jù)增強(qiáng)代碼改了十版分不清最終版是哪個(gè)然后論文里的實(shí)驗(yàn)圖和代碼對(duì)不上這才是最受罪的。這個(gè)方向如果你做得順可以繼續(xù)往多病害共存的判別上延伸——同一片葉子同時(shí)得兩種病分類模型只能輸出一個(gè)類但滑窗可以把不同窗口判成不同類別這已經(jīng)是細(xì)粒度識(shí)別的雛形。對(duì)于畢設(shè)把現(xiàn)有流程跑穩(wěn)、把坑填平、把評(píng)估做扎實(shí)就已經(jīng)是拿得出手的水平了。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美图片校园春色| 色狠狠色| 欧美九九九| 少妇毛片久久| 99综合免费视频| 老外又粗又长一晚做五次| 东京热精品97综合网| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 香蕉国产精品麻豆亚洲欧美日韩| 国内一区二区三区| 伊人久久亚洲中文字幕| 精品人人插人人操| 免费综合亚洲中文| 99久久久无码精品国产人| 中文字幕第二页| 国产精品午夜成人福利| 色香阁在线| 亚洲黄网在哪免费看| 天天综合-91入口| 国产小炒后入式| 五月丁香综合啪啪| 99综合免费视频| 日本欧美一区二区三区免费| 97超碰磁| 自拍偷拍第26| 亚洲色天| 成人久久久| 欧美日韩一二三| 日韩欧美天天爽爽爽天天爽爽| 激情啪啪拍91| 久久e6只有精品| www.色99| 五月天色综合| 人妻天天爽夜夜爽爽| 国产成人无码网站在线视频| 免费一级a毛片久久久久久鸭绿欲| 青青草久草AV| 九草九九九| 久久精品电影| 久久久精品久久| 超碰 另类 欧美 | 日韩一级欧美一级国产一级台湾| 97色色色| 精品无码久久久久久久杏吧| www.av家庭乱伦| 91 丝袜在线播放| 91色综合| 一个色导综合| 久操网线| 国产无马在线| 久久毛卡| 色99色| 99亚洲国产精品色一区二区三区| 20cm女自慰在线日韩欧美| 丁香色狠狠色综合久久小说| 在线观看一级α片刺激高潮视频| 国产二区三区免费视频| 欧美AB在线| 亚洲熟女少妇免费视频| 中文字幕午夜精品久久久| 色偷偷综合91久久噜噜| 日本在线15p| 欧洲精品二区| 亚洲中文字幕熟女| 欧美日韩不卡a片| 涩涩这里只有精品视频| 婷婷综合网站| 国产精品免费视频不卡| 色妹子A V| 大稥蕉免费视频这里只有精品| 水野优香在线观看| 欧美精品 - 91爱爱| 精品久久久久9999| 日韩不卡一二三四| 免费操逼91| TS人妖另类精品视频系列| 91精品亚洲内射孕妇| 国产理论视频在线播放| 亚洲欧美一区二区三区在钱蜜桃| 日本A级视频| 国产精品天干天干综合网麻豆| 日本黄色XXX| 日韩97P| 26uuu欧美日韩| 免费一级毛片在线视频观看| 97在线观看免费视频l| 美女上床网站| 国产极品粉嫩馒头一线天av| 亚春色色| 69少妇一区二区| 日本视频一区二区三区| 日本天堂网| 欧美第一页| 男女啊啊啊| 亚洲日韩美国人妻| 人妻天天夜夜爽一区二区| 91老熟女老女人国产老太 | 亚洲精品亚洲人成在线麻豆| 久久伊人网视频一区二区三区| 亚洲影视高清第一页| 99久久99久久免费精品蜜臀| 另类 日韩 熟女| 国产视频三区四区| 极品色综合| 18禁网站在线播放| 翘臀vidoes| 亚洲性刺激| 国产一级137片内射麻豆| 国产精品色色| 亚洲色人阁| 国产三级中文有码在线视频| 日本精品一区二区三| 亚洲中文字幕在线视频一区二区| 多乙久久久久久| 久久999久| 日韩日本欧美在线观看| 午夜天堂精品久久久久91| 亚洲天天影视色综合| 日本成人在线不卡一区二区三区| 婷婷九月| 伊人麻豆传媒| 91日韩在线| 超碰社区97| 日韩丰满熟妇| 久久春色| 亚洲天堂另类美腿| 精品免费囯产一区二区三区| 成人在线视频网| 国产一| 一级岛国大片| 人乳av| 久久精品店| 久久久熟妇熟女国产| 国产精品ww久久| 玖玖视频在线资源一区二区三区| 国产操逼网站亚洲一级黄色| 香蕉久久精品| 台湾佬中文娱乐自偷自拍| 熟女人妻精品一区二区视频| 欧美少妇一区二区三区| 国产无码精品无码| 国产熟女精品区| 蜜臀在线视频| 一区二区不卡| 日韩 欧美 另类 人妻| 日韩操呦呦影院在线观看| 久操凹凸视频| 好涩综合| 96久久久精品| 日韩成人网址| 91在线超高颜值国产| 成人老鸭窝人人在线视频| 婷婷色色五月天福利| 国产人妻精品久久久一区二区三区 | 大稥蕉免费视频这里只有精品| 日天天九九天堂666| 青青草中文-久久青草精品一区二区三 | 素颜老阿姨乱情色| 亚洲最大的综合性av| 一区二区无码视频| 亚洲aw毛茸茸在线| 欧美日韩国产色图在线| 9丨久久九九九| 久久精品老司| 国产丝袜视频| 日韩精品一区二区日韩| 亚洲人妻五月丁香婷婷| 精品国产99| 黑人操一区二区| 国产乱码久久久| 香蕉久久国产AV一区二区| 97在线免费视频观看| 91偷拍欧美亚洲| 日韩成人性爱AV| 97超碰9| 亚洲素人网| 亚洲一区日韩| 婷婷伊人綜合中文字幕| 伊人久久艹| 一起草日韩| 久久精品国产亚洲av水密被窝| 欧洲亚洲人妻无码中字久久三区四区| 天天爽天天爽| 在免费jIzzjIzz在线视频| 78m啪啪啪| 亚州成人A√| 成人精品久久久午夜福利| 亚洲熟妇AV日韩熟妇在线| 亚洲丨在线| 99视频自拍| 五月天婷婷在线看| 欧美综合第一页| 2017超碰| chaopen97久久| 一区二区三区日韩欧美| 欧美激情亚洲色图| a级成人毛片免费视频高清| 又大又大又大又粗爽高潮观看| 亚洲熟久久| 日韩av熟女一区二区三区成人| 福利色色| 精品人人插人人操| 亚洲1区| 欧美日韩第一页| 久久国内| 欧美色五月| 日韩黄色成人性爱| 亚洲有码 欧美精品| 激情五月综合| 久操黄色视频| 国产人伦精品一区二区三区 | 中文字幕人乱码中文字的预防方法 | 亚洲天堂男人网| 女优大全 - 91n| www.久久超碰| 日韩熟女精品无码专区一区二区| 97天堂| 日本亚洲vr欧美不卡高清专区| 久久9视频| 国内毛片无码一级毛片| 长长久久免费视频| 97资源超碰| 激情图片亚洲色图| 国产视频大全| 免费视频观看60秒| 91精品国产一区三一| 91情色在线| 人妻少妇精品久久久久久久| 黄色片A级一区二区三区| 秋霞一级鲁丝片A片| 一个人免费视频观看在线WWW| 秋霞一集毛片观看| 日本性爰一道本| 色呦呦呦在线观看视频| 大香蕉伊人久久| 女优视频第10页| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 无码一区免费在线不卡| 一线黄色免费性爱片| www.大香| 91在线页| 国产风韵犹存熟妇三区| 伊人超碰97| 操逼网站网站| 亚洲二区精品在线观看| 天天色香欲综合网| 欧美久久久| 色五月av| 看一级黄色视频| 国产天天骚| 亚洲鸥美色图| 无码免费在线观看黄色片| 人人操人人大香蕉| 九九九综合精品| 国产中文字幕在线| 亚洲性爱电影| 日韩AV中文字幕电影| 天天影视之亚洲综合网| 日本国产亚洲一区在线观看| 日亚韩精品视频二区三| 99热导航| 男女一进一出视频久久| 综合欧美日本三级| 青青草国产盗摄一二三区| 青草伊人网| 日本一区视频在线观看| 久草精品视频| 国产乱伦性爱区| 久久人妻丝袜一区二区三| 91天射| 日韩成年人性爱视频| 大香蕉一线视频| 加勒比AV网| 国产99999| 在线无码操| 96免费视频在线| 丝袜综合网| 免费a在线播放v| 超碰久久网| 狠狠操,使劲操| 青青草日韩无码| 果冻传媒一区二区三区| 在线国产福利网址导航| 97天天做| 内射小黄片| 国产超碰国产97| 亚洲色婷婷综合久久一区二区三区| 亚洲无无码αⅴ每日更新| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒| 91艹| 最新中文字幕在线亚洲| 亚洲资源网| 国产精品一区av在线| 800zy一区二区| 欧美影院一区二区三区| 97视频在线观看播放与子乱对白在线……| 日本综合色图| 国产精品白虎| 91福利网在线观看| 蜜桃精品一区二区三区ww| 毛片一区二区| 婷婷色香| 小日子操bb在线看| 日本精品一区二区三| 久操网视频| 熟女久久久| 欧亚免费视频| 国产丝袜美女在线一区| 青青三级视频| 五月天激情视频| 91精品丝袜久久久久久| 在线 亚洲 网爆 自拍| ji熟女.com| 老司机午夜福利视频一区二区| 亚洲最大成人a毛毛片| 日日日大屁股骚女人精品| 亚洲最大的综合性av| 97欧美久久久久久久| 久久精视频美日韩在线视频| 中文字幕欧美丝袜07资源| 精品久久久久9999| 狠狠色狠狠色狠狠五月| 亚洲九九九| 久久人妻少妇| 国产女人高潮视频| 26uuu国产免费观看| 九九九九九九九九九国产精品| 狠狠狠一区二区三区| 偷拍偷窥与盗摄视频专区| 亚洲 另类 丝袜 自拍 动漫| 这里只有精品久久| 国产99精品一区二区三区免费| 日本不卡免费二区| 日韩内射视频| 色婷婷五月综合激情中文字幕| 四虎影视精品| 日韩精品大香蕉伊人在线| 国产无马av| 尹人免费观看视频在线| 久久久青青草| 丰满人妻一区| 久久免费精品96| JULIA一区二区三区在线播放| 精品国产乱码久久久久久网站入口| 台湾肥佬网一区二区三区| 欧美国产成人在线| 色狠狠综合| 日韩性爱视频在线免费观看| 亚洲色电影在线| 人妻免费观看| 亚州久久9| 日韩精品一区二区三区四虎影视| 亚洲最大的综合性av| 国产女人视频三四五区| 欧美色图自拍| 97精品一区二区视频在线观看| 九九九久千久久激情蜜桃在线看| 久99| 91操人| 国产精品成人无码av无码免费| 翔田千里AV无码秘 三区| 国产精品电| 91亚洲欧美色图| 亚欧精品久久久久久久久久久| 婷婷丁香五月天综合东京热| 岛国毛片手机在线观看| 中文字幕黄片在线| 操一操摸一摸| 久久国产成人精品国产成人亚洲 | 韩三级a视频在线观看| 久久久久久97| 91亚洲在线| 蜜臀久久99精品久久久久久成人小说| 日本高清一本二本免费不卡| 后入日本1234| 亚洲中文字幕久久无码精品| 欧美精品亚洲精品日韩传电影| 婷婷情色五月天| 久久av网| 色天使大香蕉| 成人A片男人的天堂| 日韩三四五区| 香蕉99秘 精品一区丁香| 夜色五月天| 亚洲男人天堂Av| 可以看的av| 日本天天操| 超碰在线成人| 色婷婷电影网| 天美传媒av 在线| 日韩情色视频| 一区二区三区蜜桃成人撸久久东京热| 欧美色一二三| 啊啊啊啊好大好硬啊啊啊啊啊 | 中文字幕五月婷婷免费| 成人av福利在线观看| 欧美精品23| 免费看黄视频亚洲网站| 国产一区二区在线电影| 激情五月天视频| 日本久久网| 水澄无码AV| 97蜜桃综合| 欧美 日韩 婷婷 五月| 亚洲 另类 丝袜 自拍 动漫| 天天搞欧美| 欧美色网络| 亚洲性爱成人| 天堂8在线新版官网| 婷婷六月天| 超碰天天久久79| 日韩免费一级性爱视频| 国产特级毛片AAAAAA高潮流水| 秋霞无码av鲁丝片一区| 99热这里| 欧美亚洲se91| suv精产一二三区| 色在线视频导航| 黄片免费久久久久久久| 麻豆2区1区天美| 二三四区精品| 诱惑网综合| 秋霞成人做爱| 日韩精品一二三四| 久久久久久久久久久久九| 五月天婷婷社区| 久久久国产av美女私房| 人人爱操| 制服诱惑亚洲一区二区三区在线观看| 少妇淫妇久久久久久久| 亚洲αv一区二区三区| 91大学精品激情戏| 亚洲图片偷拍欧美| 欧美日韩另类在线播放| 婷婷大香蕉| 91超碰碰在线| 国产精品成人AV片免费看网站| 操逼视频免费日韩无码| 伊人成人情色综合| 伊人91| 日韩A优精品在线观看| 久久超碰爱| 久射吧| 乱伦Av网| 天天综合网1| 思思热一热婷婷热一热| 91人精品妻入口| 日产狠狠干| …中文字幕亚洲乱,97人妻无码费视…| 婷婷爽人人婷婷爽视频| 99亚洲天堂| 黄色一区三区| 久久九九视频九九视频| 91亚州欧美| 91美女视频在线观看| 两性综合网| 亚洲色入欧美| 黑人狂躁日本妞一区二区三区| 欧美亚男人的天堂| 五月婷亚洲精品天堂| 五月激情综合网| 久久禁| 国产精品无码在线| 日夜尻逼网| 成年人一级黄色毛片大全在线观看| 国产午夜视频| 日本欧美一区二区三区免费| 欧美午夜视频| 操逼啊啊啊91| 色九色久| 天天综合91在线| 久久久久久久| 99热97| 亚洲欧美另类激情小说| 中文字幕在线观看网页| 人妻二区| 午夜综合在线| 久久久九九网站| 久久久无码精品人妻二区 | 欧美亚洲清纯| 欧美一级色| 亚洲欧美在线丝袜| 日韩在线视频1234| 亚洲熟女乱色一区二区三区| 久久色一区二区| 天天干干天天干干| 男人天堂最新手机版在线青青草| 丁香婷婷久久| 17c嫩草51久久91嫩草| 亚洲精品 超碰| 欧美成人A天堂片在线观看| 91处女在线视频| 三级三久久线久久99久目本WW| 欧美草草高清日韩视频| 黑丝91视频| 午夜福利精品| 青娱乐91| 色亚州人久干视频在线观看免费版| 玖玖爱免费观看视频| 9久9久9久9久视频网站| 91久久久久久久久久久| 欧美性生活免费网| 欧美宗合色| 久久久∴| 无码9区| 天天操人人操狠狠插| 激情内射| 嫩草伊人久久精品| 亚洲天堂热| 欧美爆乳精品一区二区| 日韩欧视频| 久久九七| 日本一本一区二区三区四区五区欧美日韩中文字幕| 三级日韩一区二区三区| 日本国产二线女色| 一区二区三区日韩欧美 | 久久久穴999| 1769精品一区二区三区| 精品国产一区探花在线观看| 91在线丝袜| 蜜桃久久久久久久| 久久男女激情视频网站| 91视频精品| 超碰久草| 精品人妻一区二区三区夜夜| 久久久久久久久久久久久久久性生活视频| 黄色在线网站| 思思热在线视频免费| 九九九九九九免费视频| 一区中文字幕二区日韩| 五月色综合| 精品人妻美妇91job| 操逼无码操逼| 国产区日韩区在线观看| 91欧美www| 国产风韵犹存熟妇三区| 四虎视频在线观看| 超碰1024久久| 成人日韩中文字幕| 亚洲男人天堂网久久| 亚洲AV免费在线| 亚洲中文日韩精品| 3P乱轮视频| 2019精品国产无码成人| 日韩无码人妻| 激情小说亚洲| 中文乱码字幕观看视频| 欧美91网| 亚洲中文字幕熟女少妇一区二区| 上床啊啊啊| 国产精品另类| 96国产精品| 亚洲综人| 国产丁香精品露脸视频| 青青草影视蜜久久| 欧美精品,四区。五区| 天天摸夜夜操视频| 超碰97首页| 日日夜夜模| 91操人| 超碰欧美97资源| 操逼无毒无码免费视频| 偷拍欧美亚洲| 亚洲图片91| 天天日夜干| 香蕉人欧美综合| 日本色日夜干| 午夜男女爽爽爽影院视频| 国产拍偷精品网站| 国内毛片无遮挡国产| 国产极品精品美女视频| 青青久久手机线视频| 嫩草影院性色| 丁香六月婷婷久久综合| 91n美女视频| 国产污视频麻豆传媒一区二区| 激情欧美日韩女同久久| 久湿久久| 操久久久久| 一级二级在线观看| jk白丝没脱就开始啪啪| 日韩免费看黄片| 99在线精品视频| 超碰爽人妻熟女Av| 国产精品不卡av免费在线观看| 欧美色涩| 3028国产精品| 婷婷伊人綜合中文字幕小说| 亚洲熟妇图片| 国产免费一区| 成人国产二区三区在线,男女精品。| av中亚| 亚欧成人综合影院| 精品国产一区二区三区av在线资源| 人妻啊啊人妻啊啊| 夜夜人妻爽| 亚洲欧美清纯| 中国一级操逼视频| 屌逼麻豆| 97干综合网| 日韩无码一区二区三区| 台湾成人无码AV| 亚洲高潮少妇| 亚av顶级裸体一区二区三区四区五区| 青草一区二区| 午夜电影在线观看无码专区| 男人下部插入女人下部| 久久久精| 精品国产乱码| 亚洲一区深夜| 欧美91色| 26uuu偷拍亚洲欧洲综合| 99精品久久| 伊人精品视频| 一级一性爱免费视频| 偷看洗澡一二三区美女| 99re在线观看| 久久久久国产精品久久久| 网页导航五月天免费一二三区 | 一二三区操逼国产91| 成人三级片无码| 国产AV天美| 97aiaiai| 99热精品免费| 亚洲素人综合| 欧美亚洲| 91 综合 色| 欧美日韩另类在线| 人人爱夜夜爱| 91av熟女人妻| 91是天天| 日本精品五区| 好吊妞转入那个网| 日韩欧视频| 日韩无码成人电影| 蜜臀99久久精品| 大伊香蕉在线视频免费| 亚洲精品1区| 免费福利视频中文字幕| 一区二区三区男女操逼黄色小电影| 91A欧美电影网站| 国产成人无码久久精品| 欧美激情一| 免费在线观看国内色片网站网址| 无码久| 操逼天美3区| 精品人妻视频一区二区三区蜜桃视频| 99久久亚洲精品无码毛片潘甜甜 | 免费精品国偷自产在线在线| 久久色一区| 精品人妻一二三| 国产四虎在线| 国产精品久久久久久亚洲色欲| 色月天AV导航| 大香蕉免费3| 97中文字幕色| 日韩av不卡在线看| 新视频sss国产| 操逼逼福利视频| 久久亚洲日韩国产欧| 久久精品色欧美aⅴ一区二区| www.acm成人黄色毛片| 黄色av片三级三级三级免费看| Julia Annxxxxx| 亚卅熟女乱色| 亚洲欧美不卡线| 中文字幕av久久爽Av| 色就色综合| 久艹99| 婷婷五月成人| 97超碰磁| 高清孕妇孕交 交孕妇| www色色色com| 男女日B国产| 中国AV美女| 97bbn| 中文字幕在线观看视频www| 色香综合| 欧美激情久久久久| 日韩一级片| 国产中出内射一区二区| 蜜臀亚洲综合一二三四区| 熟妇一区,二区,三区。| 啊啊啊啊嗯嗯嗯用力好爽 | 老鸭窝日丰县女人| 视频分类 国内精品| 91操熟女视频| 日韩不卡a级视频专区| 97久久综合网| 97青青操视频| 极品尤物自安慰| 色老大| 蜜桃精品一区二区三区ww| 亚洲av综合色区图片亚洲| 97在线/亚洲| 国产精品网站www| 亚洲国产日韩欧美熟妇在线| 亚洲欧美日韩制服另类| 久久风骚城市| 免费网站观看www在线观| 丁香婷婷九月| 岛国黄| 亚州欧美色图| 亚洲se电影| 看黑丝美女操逼青青网站| 精品超碰国产| 高清成年美女黄网站免费大全| 91色宗合| 中文字幕欧美精品亚洲日韩蜜臀| 久久久久久久久久久999| 男人夜色天堂ss| 精品毛片久久久精品毛片| 日韩熟女无码| 97天天日| 91精品久久久久| 亭亭在线资源| 久久精品国产99国产精品亚洲| 婷婷月色| 我爱大香蕉| 欧美人妻一区| 性爱Av免费| 亚洲国产一区二区日韩专区| 国产精品视频内谢女人| 欧美亚洲今日在线| 熟女少妇一区二区三区| 精品人妻视频一区二区在线播放| 日韩 成人 有码| 久视频在线观看| 亚洲无套久久嗯嗯| 日本福利社| 大香蕉AV在线| 五月天成人综合| 五月大香蕉| 久操精品网| 中国亚洲呦女专区| 久久av成人无码免费| 国产一区二区三三视频| 亚洲码在线中文在线观看| 国产成人在线观看网址| 欧美第一页| 日韩无码一级黄色av片| 激情小说亚洲| 2024年最新色情网站在线观看| 大香蕉78| 呦呦影院| 青娱乐欧美激情一区二区| 国产日韩在线播放av| 精品国产一区二区三区香蕉欧美| 亚瑟国产精品久久无码| 欧美亚洲色图另类国产| 日韩久久.一级黄色片| 不卡一区二区日本视频| 久久精品三级影视| 五月丁香| 九九玖玖精品| 亚洲涩涩| 超碰色美女| 日骚逼视频| 激情黄色片在线观看| 亚洲无无码αⅴ每日更新| 国产精品无码久久久久2025| 日逼国产| 香蕉在线一区二区三区| 亚洲国产剧情少妇激情| 性性久久| 一卡二卡在线播放| 久久久久国产精品久久久| 男人天堂网站| xxxx网站亚洲精品| 国产AV高清AV无码| 九九九九久久久| 亚洲男人的天堂一区二区| 伊人青青草久久| 亚洲伊人久久综合97| 欧美性爱精品七区| 粉嫩在线一区二区懂色| 爱爱动态120秒| 久久99精品国产| 超碰色97| 欧美一区二区三区另类精品| 超碰成人免费| 欧美夜色| 欧美色另类| 在线免费观看日韩一区| 激情小说五月天| 狠狠图片青青草| 中文字幕一二三av| 岛国黄片网站| 色婷婷成人| 91nbbbbbb| 麻豆天美传媒毛片| 天天操天天舔| 国产乱弄免费在线视频。 | 亚洲欧美在线观看免费| 99热这里是精品| 天美传媒av在线| 2021国产成人精品久久| 国产一级αv免费看片| 97这里都是精品| 三四中文字幕| 亚洲码专区| 色五月第四色| 秋霞色色影院| 激情第四色| 国产超碰欧美| 人人操人人操人人操人人操人人操人人人11.CM| www.色五月| 国产中午字一暮区| 亚洲一区二区三区不卡国产欧美| 人妻天天夜夜爽一区二区| 欧美手机在线综合| 欧美αv.com| 国产成自自拍在线观看| 极品色| 丁香九月婷婷| 亚洲欧美校园| 亚洲AV永久无码一区仙野| 熟女欧美日韩综合婷婷| 日韩免费簧片| 精品久久久中文字幕不| 亚州综合色| 天天综合精品| 97超碰欧美精品| 婷婷激情综合网| 日1区2区3区2020| 久久一区二区三区入口| 一区二区不卡免费| 八人操人人摸人人看| 天天澡天天爽日日av| 特级特黄一级毛片免费| 香蕉久久精品| 久久精品国产99精品亚洲蜜...| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 欧美成人一区二区三区在线播放| 欧洲与亚洲欧美精品中文字幕| 强奸乱伦免费网站| 一区| 综合 欧美 亚洲 日本| 日本黄色裸日本黄色裸体| 蜜乳av一区二区| 色妇91| 岛国黄色大片网站| 久射吧| www.色五月| 亚州综合色| 伊人大香蕉在线| 思思视频免费看网站| 久草婷婷| 大香网站| 日韩精品午夜操呦呦不卡影院| 91碰碰| 色综合一本| 国产熟女精品区| 伊人女女资源在线观看| 91操熟女视频| 精品人妻一区二区三区-国产| 日本精品一级二级三级| 伊人991| 人、人、摸,人、人、草| 日韩成人小视频| 小草精彩毛片| 日日噜噜夜夜狠狠视频无| 久久久精品视频欧州站| 农村妇女一级二级三级视频| 国产综合日韩伦理| 91n免费处女| 成人草草视频| 亚洲欲色9532548967一区| 内射夫妻三片| 久超碰这里只有精品| www.婷婷六月天| 亚洲日本激情| 夜夜高潮夜夜爽夜夜爱爱一区| AV色天香在线| 欧美午夜视频精品久久| 综合久久2017| 色综合99999| 六九九九| 国产午夜激片Av毛片不卡| 欧美日韩久久精品爱爱| 区二区亚洲婷| 色噜噜狠狠色综无码久久合欧美| 亚洲高清无毛一区二区| 五月天精品| 久久精品老司| 激情婷婷五月天| 日韩人妻播放| 麻豆国产97在线| 久久久一区二区三区麻豆| 麻豆天美制片厂网站视频| 色九九综合| 久久精品日韩| 亚洲美女AV无码| asc国产精品| 99九九久久| 色综合美国| 新版天堂中文资源8在线| 少妇熟女1区2区3区| 97鸡把在线视频| 天天超级碰碰碰| 第二页中文字幕| 天天干天天做| 中文字幕精品资源在线| 免费福利视频中文字幕| 91中文字幕| 久久蜜桃一区二区| 日本性一区| 国产成人天堂| 操逼精品视频| 91AV老熟女视频| 九九成人| 五月丁香综合激情| 新婚人妻扶着粗大强行坐下| 亚洲AV成人无码一二三久久| 国产传媒日韩欧美| 欧美激情1区| 国产9熟妇视频网站| 亚洲日本天堂| 午夜福利在线合集| 东京热精品97综合网| 成人日本精品九区| 啪啪视频mP4| 97爱免费插| 一区二区 韩日AV| 久久久久久久人妻| 色色操| 丁香五月婷婷基地| 五月香婷婷| 天美麻花大全视频| 青青草丝袜在线视频| 精品在线观看视频在线| 伊人网综合在线视频| 激情抓乳插进去啪啪啪日韩 | 97 九色| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 六六久久日韩不卡| 亚洲日产专区| 无码99| 欧美日韩黄色片一区二区三区四区人与兽做爱| 99国产精品人妻人伦| 日韩女优中文字幕| 色老汉色| 日日噜噜夜夜久久亚洲一区二区 | 国产欧美精选自拍一区| 久久精品日韩| 多乙久久久久久| 717影院理论午夜伦八戒| 热九九精品| 色色色色色色色色色色色色色色综合| 亚洲色吧网| 91色图片| www. 男人天堂成人在线| 怡红院亚洲怡春院av| 久久久久久久久9| 人妻铁牛TV| 老子午夜伦不卡影院| 日本操逼视频导航| a在线观看| 久久9 9 9精品| 天天影视射综合网| 亚洲AV不卡在线观看| 人人澡人人干| 一级人妻性爱视频| 欧美人妻一区| 亚洲五月丁香花狠狠干一区二区三区| 九九九网页| 亚洲色图 综合| 欧美劲爆第一页| 成人无码在线视频网站| 亚洲αv一区二区三区| 色婷婷电影网| 亚洲第一二区另类图| 久久久一二三四区| 无码精品久久久久久亚洲| 欧美成人AⅤ大片在线观看| 国产精品电影| 亚洲一本色码中文字幕| 日本一卡二区在线| AⅤ片水多多| 三级片网站在线播放| 少妇国产不卡| 日本ZZ高免费A级视频| 日韩综合无码一区久久92| 欧亚性爱啪啪| 蜜桃久久久久久久| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 伊人久久大香线综合无码| 青青草中出视频| 亚洲黄色视频在线观看视频| 妺妺跟我一起洗澡没忍住| 亚洲欧美中日韩| 一级特级aaaa毛片免费观看| 日韩成人综合网| 97日视频| 蜜臀久久99精品久久久| 国产精品视频白浆免费| 久久只有精品一区二区三区| 欧美性爱超碰97| 亚洲暴力强奸AV| 青青草视频久久久久| 欧美性夜| 久久婷婷色| 性交一区二区在线播放| 中文字幕一区二区视频在线观看| 囯产乱伦一区二区三女| 精品无码一二三四区| 大JI巴好深好爽又大又粗视频| 人妻人人操| 啊啊啊不要嗯嗯在线观看| 精品日韩人妻视频| 台湾佬激情综合| 中国熟妇| 欧美精品999| 精品9999| 手机在线看片免费人成视频| 超碰人妻中文在线| 人人操 欧美| 蜜臀精品1区2区| 精品人妻一区二区三区四区不卡在| 第一高清av中文字幕| 97超碰中文字幕| 日本午夜操逼| 国产99999久久精品| 91精品久久久久五月天精品| 欧美少妇第一页| 亚洲视频中文一区| 精品视频123区小说区| 久久久亚洲| 91狠婷| 欧美色网| 91丝袜美腿网站| a片自拍直播视频| 成年男人的天堂| 成人26uuu| 97久久精品国产| 精品人妻中文字幕4399| 97公开久久| 亚洲无码免费看| 任你干在线视频| 欧美性爱伊人| 欧日韩一二三f区| 久久激情视频| 亚州色综合| 一区二区三区网站日日骚| 精品无码秘 人妻一区二区| 日本久久久久久久久| 国产精品美女视频诱惑| 黑人中出21连凳花野真衣| 亚洲日韩精品久久久久一区壹牛| 亚洲色图欧美色图制服丝袜 | 狠狠躁天天躁日日躁| 口爆吞精在线观看| 91麻豆天美国产欧美高潮| 夜夜操狠狠操| 日韩三级伦理中文字幕| 欧美精品久久96人妻无码| 亚洲 自拍偷拍 欧美| 日本一级不卡一二区| 99综合| 国产精品黑人一区二区三区| 国产乱人妻精品入口| AV免费在线播放一区| 亚洲美女精品九九视频| 粘花网06av视频| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 俺去啦自拍| 在线黄页看毛片| 人人看人人插| 久超碰这里只有精品| 天天狠| 天天操天天干一区二区| 美女91网| 欧美 日韩 国产传媒| 1禁看欧美黄片免费看| 蜜臀99久| 96国产污污污丝袜| 99久热| 亚洲一区二区三区不卡国产欧美| 成人开心网在线视频| 亚洲另类久操网| 少妇高潮对白在线观看| 校园春色五月天| 日日摸日日碰| 亚洲无套久久嗯嗯| 99久久e免费热视| 久久午夜色播影院免费高清| 欧美激情色婷婷花野真衣一区二区| 久久香蕉影院| 免费精品中文字幕| 国产三级片在线观看| 日韩精品大香蕉伊人在线| 欧美精品第3页| 秋霞久久亚洲精品成人| 91爱网| 97久久精品不卡| 激情文学欧美| 亚洲一区深夜| 亚洲第一成人影院色播| 国产婷婷综合在线观看| 综合熟妇一区二区三区| 动漫区日韩区欧美区| 亚洲少妇色| 自拍偷拍2025在线观看| 无码免费在线观看黄色片| 97鸡把在线视频| 九七人妻在线| 精品一区二区三区四区女| 无码9区| 综合激情婷婷| 黄色区免费观看中文字幕| 国产精品福利资源在线尤物| 水滴偷拍| 果冻传媒一区二区三区| 久久蜜色情在线视频xxx免费观看| 69人妻精品一区二区绯色| 日本女优在线视频福利| 国产隔壁老王影院在线| 日韩欧美日韩| 久久 精品| 成人青青草原伊人| 97综合久第一页| 91N综合网在线| 91爱看| 超碰98综合网| 中文字幕免费观看| 青青草吊丝| 射丝袜高跟鞋99| 97超碰国产精品| 六六久久日韩不卡| 99久久婷婷国产综合精品草原| 97国产高清视频在线观看| 国产一区二区a毛片| 国产操伦| 97在线观看播放视频| 欧日韩不卡视.频| 欧美日韩国产在线| 99热这里只有精品8| 99啪啪| 午夜精品久久久久久久男人的天堂 | 日韩97超碰中文字幕| 资源在线观一 二| 久久久久13| 一二三啪啪专区| 欧美三级免费伊人| 亚洲熟女乱熟乱熟妇综合网二区| www久久久| 蜜臀网址在线| 91操熟妇| 久久久精精精| 日本色日夜干| 明星性猛交ⅹxxx乱大交| 白丝被操91| 国产黄色影片在线观看| 密乳AV免费观看| 美中日韩无码| 大香蕉520| 大香蕉色十月| 少妇与黑人高潮在线| 超碰这里只有精品| 日夜尻逼网|