99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

深度學(xué)習(xí)字符驗(yàn)證碼識(shí)別CNN逐位分類Python實(shí)戰(zhàn)

深度學(xué)習(xí)字符驗(yàn)證碼識(shí)別CNN逐位分類Python實(shí)戰(zhàn) 簡(jiǎn)介面向深度學(xué)習(xí)圖像識(shí)別初學(xué)者、安全方向開發(fā)者及課程設(shè)計(jì)學(xué)習(xí)者的字符型驗(yàn)證碼識(shí)別實(shí)踐包圍繞數(shù)字與字符驗(yàn)證碼的卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)建模、訓(xùn)練與預(yù)測(cè)流程展開可用于入門項(xiàng)目復(fù)現(xiàn)、算法練手和驗(yàn)證碼識(shí)別方案調(diào)研。壓縮包共1210個(gè)文件約9.58MB其中978張png、202張jpg及少量bmp、jpeg圖片構(gòu)成驗(yàn)證碼樣本17個(gè)py腳本覆蓋數(shù)據(jù)處理、模型構(gòu)建、訓(xùn)練預(yù)測(cè)等環(huán)節(jié)另含txt說(shuō)明、rst文檔、zip壓縮包與模型文件等輔助內(nèi)容。已有1542人學(xué)習(xí)下載具備一定參考熱度。讀者可從中獲得從樣本歸一化、數(shù)據(jù)增強(qiáng)、one-hot編碼到CNN/RNN模型搭建、交叉熵訓(xùn)練與結(jié)果組合的完整源碼脈絡(luò)并借助示例圖片和腳本理解字符序列識(shí)別、過擬合監(jiān)控及多字符輸出思路便于改造成自己的驗(yàn)證碼識(shí)別項(xiàng)目。1. 從一批糊掉的字符圖說(shuō)起這個(gè)基于深度學(xué)習(xí)的字符識(shí)別項(xiàng)目到底能干什么前陣子有人拿著一批自己生成的四位字符圖來(lái)找我圖上壓著干擾線和噪點(diǎn)人眼掃過去都得愣一下。他要的不是接個(gè)現(xiàn)成接口敷衍過去而是基于深度學(xué)習(xí)的字符型圖片數(shù)字驗(yàn)證碼識(shí)別——從零訓(xùn)一個(gè)模型出來(lái)。這份資源就是那條完整鏈路的 Python 實(shí)現(xiàn)數(shù)據(jù)生成、圖像預(yù)處理、網(wǎng)絡(luò)定義、訓(xùn)練收斂、推理解碼一步不落源碼能直接跑起來(lái)。它的適用面比看上去寬。想完整走一遍「圖像輸入到字符串輸出」流程的深度學(xué)習(xí)新手可以拿它當(dāng)?shù)谝粋€(gè)真正跑通的實(shí)戰(zhàn)做 OCR、票據(jù)編號(hào)、工牌數(shù)字、集裝箱號(hào)這類字符識(shí)別落地的開發(fā)者可以把它當(dāng)成一個(gè)能直接改的基線。字符集小、長(zhǎng)度固定、單通道灰度圖訓(xùn)練成本低到一張消費(fèi)級(jí)顯卡幾小時(shí)就出結(jié)果這才是它適合入門的核心原因。2. 目錄結(jié)構(gòu)與技術(shù)選型一個(gè)字符識(shí)別項(xiàng)目該有的骨架先別急著看模型。字符識(shí)別這類項(xiàng)目跑不起來(lái)的原因九成不在網(wǎng)絡(luò)結(jié)構(gòu)而在目錄沒分好、配置散在各處、訓(xùn)練和推理各寫一套預(yù)處理。這套源碼的目錄劃分是我比較認(rèn)可的一種改起來(lái)不牽一發(fā)動(dòng)全身。2.1 六個(gè)文件撐起整條鏈路captcha_rec/ ├── config.py # 訓(xùn)練/推理共用配置超參只在這里改 ├── charset.py # 字符集與索引映射訓(xùn)練推理共用同一份 ├── data/ │ ├── gen_captcha.py # 自建數(shù)據(jù)集生成器 │ ├── dataset.py # Dataset 與預(yù)處理流水線 │ ├── train.txt # 每行 路徑\t標(biāo)簽 │ └── val.txt ├── models/ │ └── cnn.py # CNN 主干 逐位分類頭 ├── train.py # 訓(xùn)練循環(huán)、驗(yàn)證、保存權(quán)重 ├── predict.py # 單圖/批量推理與解碼 └── utils/ ├── metric.py # 整串準(zhǔn)確率、單字符準(zhǔn)確率 └── seed.py # 固定隨機(jī)種子 └── requirements.txt這個(gè)劃分的關(guān)鍵在于三個(gè)「單一出口」config.py管參數(shù)、charset.py管字符和索引、dataset.py管預(yù)處理。很多人在自己寫的時(shí)候把預(yù)處理寫在訓(xùn)練腳本里推理時(shí)又抄一遍抄錯(cuò)一個(gè)cv2.resize的插值參數(shù)線上準(zhǔn)確率立刻掉十幾個(gè)點(diǎn)這種血淚經(jīng)驗(yàn)我在別人的項(xiàng)目里見過不止一次。工程約定上train.txt和val.txt用制表符分隔路徑和標(biāo)簽不用 CSV因?yàn)閳D片路徑里偶爾會(huì)出現(xiàn)逗號(hào)。標(biāo)簽一律小寫不做大小寫混排——字符集里0和O、1和l這類形近字符如果都保留模型在低分辨率下幾乎必然混淆除非你的業(yè)務(wù)真的需要區(qū)分。charset.py是全篇最容易翻車的地方把它單獨(dú)拎出來(lái)是值得的# charset.py 訓(xùn)練和推理都必須 import 這一份禁止在別處重寫 CHARSET 0123456789abcdefghijklmnopqrstuvwxyz # 0 號(hào)位固定留給 CTC 的 blank逐位分類時(shí)從 1 開始用也不會(huì)浪費(fèi)多少參數(shù) CHAR2IDX {c: i 1 for i, c in enumerate(CHARSET)} IDX2CHAR {i 1: c for i, c in enumerate(CHARSET)} BLANK 0 NUM_CLASSES len(CHARSET) 1 # 36 blankNUM_CLASSES加 1 是為了兼容后面第 6 章要講的 CTC 改造逐位分類時(shí)多出來(lái)的那一類永遠(yuǎn)學(xué)不會(huì)對(duì)結(jié)果沒有影響。參數(shù)說(shuō)明CHAR2IDX的索引從 1 開始BLANK0是 CTC 的硬性約定改不了。IDX2CHAR必須和CHAR2IDX嚴(yán)格互逆我一般寫個(gè)斷言assert len(IDX2CHAR) len(CHAR2IDX)擋住手抖。config.py里我把所有數(shù)字集中了# config.py 所有超參的唯一來(lái)源 IMG_H, IMG_W 60, 160 # 統(tǒng)一尺寸寬高比 8:3 比較接近 4 位字符的排版 MAX_LEN 4 # 固定長(zhǎng)度變長(zhǎng)方案見第 6 章 BATCH_SIZE 64 EPOCHS 40 LR 1e-3 WEIGHT_DECAY 1e-4 DEVICE cuda # 沒有顯卡就寫 cpu訓(xùn)練慢但能跑 TRAIN_LIST data/train.txt VAL_LIST data/val.txt CKPT ckpt/best.pthIMG_H和IMG_W不是隨便定的。4 位字符橫排寬度至少要是單字符寬度的 4 倍還留出間隙60 高度能保住字符的筆畫細(xì)節(jié)又不至于讓全連接層參數(shù)爆炸。把IMG_W提到 320 而模型不變Flatten后的維度翻倍全連接層參數(shù)量直接四倍小數(shù)據(jù)集上過擬合會(huì)來(lái)得非常快。2.2 技術(shù)選型為什么先做逐位分類而不是一上來(lái)就 CRNN 配 CTC字符識(shí)別主流兩條路一條是固定長(zhǎng)度逐位分類一條是 CRNN CTC 的序列識(shí)別。這個(gè)項(xiàng)目選的是前者理由很實(shí)在固定長(zhǎng)度場(chǎng)景下逐位分類的訓(xùn)練信號(hào)更直接。逐位分類把「識(shí)別 4 個(gè)字符」拆成 4 個(gè)獨(dú)立的分類任務(wù)每個(gè)位置一個(gè) softmax損失是 4 個(gè)交叉熵的均值。梯度回傳路徑短收斂快20 到 30 個(gè) epoch 就能把整串準(zhǔn)確率推到很高的水位。CTC 則是把模型輸出當(dāng)成一條時(shí)間序列靠動(dòng)態(tài)規(guī)劃把所有可能的對(duì)齊方式加起來(lái)它對(duì)齊能力更強(qiáng)、支持變長(zhǎng)但訓(xùn)練早期收斂慢標(biāo)簽長(zhǎng)度和輸入長(zhǎng)度不匹配時(shí)還會(huì)直接給你inf損失。對(duì)比項(xiàng)逐位分類本項(xiàng)目CRNN CTC字符長(zhǎng)度必須固定任意長(zhǎng)度收斂速度快幾十 epoch 見效慢常要上百 epoch實(shí)現(xiàn)復(fù)雜度低多一個(gè) view 就行中要處理 input_lengths對(duì)字符粘連的魯棒性一般靠位置先驗(yàn)硬扛較好典型翻車點(diǎn)字符集順序錯(cuò)亂標(biāo)簽長(zhǎng)度 時(shí)間步導(dǎo)致 inf選逐位分類不等于偷懶。字符長(zhǎng)度固定的業(yè)務(wù)場(chǎng)景——四位驗(yàn)證碼、六位工單號(hào)、固定位數(shù)的批次號(hào)——占了實(shí)際需求的大頭用 CTC 屬于殺雞用牛刀還多背一份對(duì)齊邏輯的維護(hù)成本。真到了變長(zhǎng)那天主干網(wǎng)絡(luò)和數(shù)據(jù)集代碼基本不用動(dòng)只換分類頭和損失函數(shù)第 6 章會(huì)給具體的改法。主干網(wǎng)絡(luò)用的是最樸素的四段卷積。這套結(jié)構(gòu)在字符識(shí)別上有個(gè)隱含優(yōu)勢(shì)四段MaxPool把 60×160 壓到 2×10特征圖上橫向還剩 10 個(gè)位置剛好夠 4 個(gè)字符各自找到自己的感受野又不會(huì)因?yàn)閴旱锰莅严噜徸址谝黄?。換成三段卷積特征圖剩 7×20全連接層參數(shù)量漲到四倍小數(shù)據(jù)集上直接過擬合。2.3 環(huán)境和依賴別在版本上栽跟頭依賴不多但鎖版本這件事別省# requirements.txt torch2.0,3.0 torchvision0.15 opencv-python4.8 numpy1.24 pillow10.0 tqdm4.66opencv-python和opencv-python-headless千萬(wàn)別同時(shí)裝裝重了cv2.imread在無(wú)圖形界面的服務(wù)器上會(huì)報(bào)libGL.so.1找不到。這種錯(cuò)誤看起來(lái)像系統(tǒng)環(huán)境問題實(shí)際是依賴裝串了浪費(fèi)半天時(shí)間排查。我一般在服務(wù)器上只裝 headless 版本。charset.py里的字符集順序一旦定下來(lái)就不能隨便動(dòng)。改了字符集順序而不重訓(xùn)模型輸出的索引全部錯(cuò)位表現(xiàn)是「訓(xùn)練時(shí)好好的推理出來(lái)全是亂碼」這個(gè)坑在第 5 章會(huì)單獨(dú)展開。種子也要固定utils/seed.py里把random、numpy、torch三家的種子一起設(shè)復(fù)現(xiàn)實(shí)驗(yàn)才有意義。3. 數(shù)據(jù)管線從字符圖片到能喂進(jìn)網(wǎng)絡(luò)的張量模型再漂亮數(shù)據(jù)管線錯(cuò)了全白搭。這一章拆的是data/gen_captcha.py和data/dataset.py兩個(gè)文件前者負(fù)責(zé)造數(shù)據(jù)后者負(fù)責(zé)把圖片變成張量。3.1 自建數(shù)據(jù)集字符圖怎么生成、怎么標(biāo)注沒有現(xiàn)成數(shù)據(jù)集的時(shí)候自己生成是最快的路。真實(shí)業(yè)務(wù)里的字符圖片通常來(lái)自截圖或掃描件但練手階段用 PIL 合成完全夠用關(guān)鍵是干擾要加到「人眼勉強(qiáng)能認(rèn)」的程度太干凈學(xué)不到東西太臟模型直接放棄。# data/gen_captcha.py 生成一張四位字符圖并寫入標(biāo)注文件 import random from PIL import Image, ImageDraw, ImageFont, ImageFilter def gen_one(text, size(160, 60), font_pathfonts/mono.ttf): img Image.new(RGB, size, (255, 255, 255)) draw ImageDraw.Draw(img) font ImageFont.truetype(font_path, 34) cell size[0] // len(text) for i, ch in enumerate(text): # 每個(gè)字符獨(dú)立抖動(dòng)坐標(biāo)模擬真實(shí)場(chǎng)景的排版漂移 x i * cell random.randint(-2, 4) y random.randint(0, 8) color tuple(random.randint(0, 90) for _ in range(3)) draw.text((x, y), ch, fontfont, fillcolor) # 干擾線1~3 條顏色比字符略淺避免完全遮住筆畫 for _ in range(random.randint(1, 3)): x1, y1 random.randint(0, size[0]), random.randint(0, size[1]) x2, y2 random.randint(0, size[0]), random.randint(0, size[1]) draw.line((x1, y1, x2, y2), fill(random.randint(120, 200),) * 3, width1) # 椒鹽噪點(diǎn)密度控制在千分之五左右 for _ in range(int(size[0] * size[1] * 0.005)): draw.point((random.randint(0, size[0] - 1), random.randint(0, size[1] - 1)), fill(random.randint(0, 255),) * 3) return img.filter(ImageFilter.GaussianBlur(radius0.6))參數(shù)說(shuō)明cell是單個(gè)字符分到的橫向格子寬度x的抖動(dòng)范圍[-2, 4]讓字符略微越界模擬真實(shí)排版里的擠壓fill取0~90的深色而不是純黑是因?yàn)榧兒谠诙祷髮?duì)比過強(qiáng)模型會(huì)過度依賴筆畫粗細(xì)這個(gè)捷徑特征。噪點(diǎn)密度0.005是我試下來(lái)比較平衡的值提到0.02之后整串準(zhǔn)確率會(huì)掉但單字符準(zhǔn)確率還在說(shuō)明模型開始靠猜。生成完記得寫標(biāo)注文件路徑和標(biāo)簽用制表符隔開一次寫一行訓(xùn)練集和驗(yàn)證集用不同的隨機(jī)種子分開生成——這一步是很多人的翻車點(diǎn)同一個(gè)種子生成兩批圖驗(yàn)證集里混進(jìn)和訓(xùn)練集幾乎一模一樣的樣本準(zhǔn)確率虛高得嚇人。3.2 預(yù)處理流水線灰度、去噪、歸一化與尺寸統(tǒng)一預(yù)處理的目標(biāo)只有一個(gè)讓訓(xùn)練和推理走完全相同的代碼路徑。dataset.py里這段是核心# data/dataset.py 預(yù)處理 張量化訓(xùn)練和推理共用 import cv2 import torch from torch.utils.data import Dataset class CaptchaDataset(Dataset): def __init__(self, list_file, char2idx, img_w160, img_h60): self.items [] with open(list_file, encodingutf-8) as f: for line in f: path, label line.rstrip(\n).split(\t) if len(label) ! 4: # 長(zhǎng)度對(duì)不上直接丟掉別讓它污染訓(xùn)練 continue self.items.append((path, label)) self.char2idx char2idx self.img_w, self.img_h img_w, img_h def __len__(self): return len(self.items) def __getitem__(self, idx): path, label self.items[idx] img cv2.imread(path, cv2.IMREAD_GRAYSCALE) # 單通道省顯存也省參數(shù) if img is None: raise FileNotFoundError(path) img cv2.resize(img, (self.img_w, self.img_h), interpolationcv2.INTER_AREA) img cv2.medianBlur(img, 3) # 3x3 中值濾波壓椒鹽噪點(diǎn) img img.astype(float32) / 255.0 # 歸一到 0~1 img (img - 0.5) / 0.5 # 拉到 -1~1 tensor torch.from_numpy(img).unsqueeze(0) # (1, H, W) target torch.tensor([self.char2idx[c] for c in label], dtypetorch.long) return tensor, target邏輯說(shuō)明先 resize 再濾波是有講究的先濾波再 resize 會(huì)讓噪點(diǎn)在插值時(shí)被拉伸成條狀反而更難去掉。INTER_AREA用于縮小是最不容易產(chǎn)生摩爾紋的插值方式換成INTER_LINEAR在 160 寬度下問題不大但換成INTER_CUBIC會(huì)引入振鈴邊緣出現(xiàn)假的筆畫。參數(shù)說(shuō)明medianBlur的核大小必須是奇數(shù)且大于 13 是最小有效值5 會(huì)開始吃掉細(xì)筆畫。歸一化用(x - 0.5) / 0.5拉到[-1, 1]配合 BatchNorm 收斂更快如果網(wǎng)絡(luò)里全是 ReLU 而沒有 BN用[0, 1]也能跑差別不大但別兩套混用。DataLoader那邊兩個(gè)參數(shù)值得調(diào)from torch.utils.data import DataLoader train_loader DataLoader( CaptchaDataset(data/train.txt, CHAR2IDX), batch_size64, shuffleTrue, num_workers4, pin_memoryTrue, drop_lastTrue, # 最后一批不足 batch_size 時(shí)丟掉 )drop_lastTrue在 BatchNorm 上很關(guān)鍵。最后一批如果只剩 1 張圖BN 在單個(gè)樣本上算方差結(jié)果接近 0反向傳播時(shí)對(duì)這兩層參數(shù)的影響是災(zāi)難性的表現(xiàn)出來(lái)就是「每個(gè) epoch 最后 loss 尖刺一下」。我見過有人為此把學(xué)習(xí)率砍半其實(shí)是數(shù)據(jù)加載的問題。num_workers4在機(jī)械硬盤上開太高反而更慢開了pin_memory才真正省下主機(jī)到顯存的那段拷貝時(shí)間。3.3 數(shù)據(jù)增強(qiáng)的邊界能加什么不能加什么字符識(shí)別的增強(qiáng)比自然圖像窄得多??梢约虞p微旋轉(zhuǎn)±3 度、小幅平移±5%、對(duì)比度抖動(dòng)、隨機(jī)加噪點(diǎn)。不能加水平翻轉(zhuǎn)字符會(huì)變成鏡像、大角度旋轉(zhuǎn)超出手寫體常識(shí)、隨機(jī)裁剪會(huì)切掉字符。import random def augment(img): # 只在訓(xùn)練集上調(diào)用驗(yàn)證集和推理一律走原圖 if random.random() 0.3: img cv2.convertScaleAbs(img, alpharandom.uniform(0.8, 1.2), betarandom.randint(-20, 20)) if random.random() 0.2: h, w img.shape[:2] M cv2.getRotationMatrix2D((w / 2, h / 2), random.uniform(-3, 3), 1.0) img cv2.warpAffine(img, M, (w, h), borderValue255) return img增強(qiáng)函數(shù)里最忌諱的是「訓(xùn)練加了、驗(yàn)證也加了」。驗(yàn)證集的唯一職責(zé)是反映真實(shí)分布一旦對(duì)它做隨機(jī)變換準(zhǔn)確率曲線就失去了參考價(jià)值你根本不知道模型是在進(jìn)步還是在適應(yīng)增強(qiáng)。這條我在自己項(xiàng)目里定成硬規(guī)則augment只在trainTrue的分支里調(diào)用。4. 網(wǎng)絡(luò)與訓(xùn)練CNN 逐位分類頭的完整實(shí)現(xiàn)前面鋪墊的數(shù)據(jù)和結(jié)構(gòu)到這里收口。這一章拆三段代碼網(wǎng)絡(luò)定義、訓(xùn)練循環(huán)、推理解碼每一段都能直接抄進(jìn)自己的項(xiàng)目改。4.1 CNN 主干與逐位分類頭網(wǎng)絡(luò)結(jié)構(gòu)上沒有花活四段卷積加兩層全連接重點(diǎn)是最后一層的形狀處理。# models/cnn.py import torch.nn as nn class CaptchaCNN(nn.Module): def __init__(self, num_classes, max_len4): super().__init__() self.max_len max_len self.features nn.Sequential( nn.Conv2d(1, 32, 3, padding1), nn.BatchNorm2d(32), nn.ReLU(inplaceTrue), nn.MaxPool2d(2), # 60x160 - 30x80 nn.Conv2d(32, 64, 3, padding1), nn.BatchNorm2d(64), nn.ReLU(inplaceTrue), nn.MaxPool2d(2), # - 15x40 nn.Conv2d(64, 128, 3, padding1), nn.BatchNorm2d(128), nn.ReLU(inplaceTrue), nn.MaxPool2d(2), # - 7x20 nn.Conv2d(128, 128, 3, padding1), nn.BatchNorm2d(128), nn.ReLU(inplaceTrue), nn.MaxPool2d((3, 2)), # - 2x10 ) self.head nn.Sequential( nn.Flatten(), nn.Linear(128 * 2 * 10, 512), nn.ReLU(inplaceTrue), nn.Dropout(0.3), nn.Linear(512, max_len * num_classes), ) def forward(self, x): x self.features(x) x self.head(x) # 關(guān)鍵一步把一維輸出拆回 (batch, 字符位置, 類別) return x.view(-1, self.max_len, self.num_classes)邏輯說(shuō)明四次池化把空間維度壓到2×10Flatten后的長(zhǎng)度是 2560接 512 維隱層。最后的view是整個(gè)設(shè)計(jì)的樞紐——如果不拆模型輸出是個(gè) 144 維向量沒法逐位算交叉熵拆開之后logits[:, i, :]就是第 i 個(gè)字符位置的分類分布損失可以直接逐位相加。參數(shù)說(shuō)明Dropout(0.3)放在兩層全連接之間字符識(shí)別這種小數(shù)據(jù)集上 0.3 到 0.5 都試過0.5 會(huì)欠擬合0.3 比較穩(wěn)。最后一個(gè)池化用(3, 2)是為了把 7 壓成 2、20 壓成 10非對(duì)稱池化在這種寬扁輸入上比強(qiáng)行方形池化更合理。num_classes傳NUM_CLASSES含 blankmax_len傳MAX_LEN兩個(gè)都從config.py來(lái)。還有一點(diǎn)容易忽略輸入必須是(B, 1, H, W)且 H、W 和訓(xùn)練時(shí)完全一致。動(dòng)態(tài)尺寸的網(wǎng)絡(luò)不是不能寫但全連接層會(huì)立刻鎖死尺寸后面改圖片寬高就得重訓(xùn)所以一開始統(tǒng)一到 60×160 是省事的做法。4.2 訓(xùn)練循環(huán)損失、優(yōu)化器和學(xué)習(xí)率調(diào)度訓(xùn)練循環(huán)里最值得講的是損失怎么算以及為什么必須做梯度裁剪。# train.py節(jié)選 import torch import torch.nn.functional as F def train_one_epoch(model, loader, optimizer, device): model.train() loss_sum, char_correct, char_total 0.0, 0, 0 for imgs, targets in loader: imgs, targets imgs.to(device), targets.to(device) logits model(imgs) # (B, L, C) # 逐位交叉熵取平均 loss 0.0 for i in range(model.max_len): loss loss F.cross_entropy(logits[:, i, :], targets[:, i]) loss loss / model.max_len optimizer.zero_grad() loss.backward() torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm5.0) optimizer.step() loss_sum loss.item() * imgs.size(0) char_correct (logits.argmax(-1) targets).sum().item() char_total targets.numel() return loss_sum / len(loader.dataset), char_correct / char_total邏輯說(shuō)明F.cross_entropy內(nèi)部已經(jīng)做了log_softmax加負(fù)對(duì)數(shù)似然不要在它前面再手動(dòng)過一遍 softmax否則等于算了兩遍梯度會(huì)被壓扁到幾乎不動(dòng)。逐位求和再除以max_len而不是直接相加是為了讓損失量級(jí)和單個(gè)分類任務(wù)對(duì)齊學(xué)習(xí)率不用跟著字符長(zhǎng)度重新調(diào)。參數(shù)說(shuō)明clip_grad_norm_的max_norm5.0是經(jīng)驗(yàn)值字符識(shí)別里梯度爆炸大多來(lái)自 BatchNorm 在小 batch 上的方差抖動(dòng)裁剪能擋住絕大部分尖刺。訓(xùn)練循環(huán)外配套調(diào)度器optimizer torch.optim.Adam(model.parameters(), lr1e-3, weight_decay1e-4) scheduler torch.optim.lr_scheduler.ReduceLROnPlateau( optimizer, modemax, factor0.5, patience3 ) # 每個(gè) epoch 結(jié)束用驗(yàn)證集整串準(zhǔn)確率驅(qū)動(dòng) scheduler.step(val_acc)patience3表示連續(xù) 3 個(gè) epoch 驗(yàn)證準(zhǔn)確率不漲就把學(xué)習(xí)率砍半。這個(gè)策略比固定步長(zhǎng)衰減更適合小數(shù)據(jù)集因?yàn)槭諗壳€經(jīng)常是階梯式的卡住三個(gè) epoch 之后往往還能再上一個(gè)臺(tái)階。weight_decay1e-4對(duì) Adam 來(lái)說(shuō)相當(dāng)于 L2 正則在三千張左右的訓(xùn)練集上能明顯壓住過擬合。驗(yàn)證函數(shù)里我只算兩個(gè)指標(biāo)——整串準(zhǔn)確率和單字符準(zhǔn)確率torch.no_grad() def evaluate(model, loader, device): model.eval() full_ok, full_total 0, 0 char_ok, char_total 0, 0 for imgs, targets in loader: imgs, targets imgs.to(device), targets.to(device) pred model(imgs).argmax(-1) # (B, L) full_ok (pred targets).all(dim1).sum().item() full_total imgs.size(0) char_ok (pred targets).sum().item() char_total targets.numel() return full_ok / full_total, char_ok / char_total關(guān)鍵在all(dim1)只有四個(gè)位置全對(duì)才算整串正確這個(gè)指標(biāo)才是業(yè)務(wù)真正關(guān)心的。單字符準(zhǔn)確率 95% 聽起來(lái)漂亮四個(gè)字符乘起來(lái)只剩 81%整串準(zhǔn)確率才是能拿去交付的數(shù)字。兩個(gè)指標(biāo)一起看還能定位問題——單字符高、整串低說(shuō)明模型在個(gè)別位置上系統(tǒng)性混淆通常是對(duì)應(yīng)字符樣本不足。4.3 推理解碼把 logits 還原成字符串推理代碼短但坑集中。# predict.py節(jié)選 import cv2 import torch from charset import IDX2CHAR torch.no_grad() def predict_one(model, path, device, img_w160, img_h60): model.eval() img cv2.imread(path, cv2.IMREAD_GRAYSCALE) img cv2.resize(img, (img_w, img_h), interpolationcv2.INTER_AREA) img cv2.medianBlur(img, 3) img img.astype(float32) / 255.0 img (img - 0.5) / 0.5 x torch.from_numpy(img).unsqueeze(0).unsqueeze(0).to(device) # (1,1,H,W) ids model(x).argmax(-1)[0].cpu().tolist() return .join(IDX2CHAR[i] for i in ids)邏輯說(shuō)明unsqueeze用了兩次第一次補(bǔ)通道維、第二次補(bǔ) batch 維最后得到(1, 1, 60, 160)和訓(xùn)練時(shí)DataLoader吐出來(lái)的形狀完全對(duì)齊。model.eval()不能漏它把 BatchNorm 從按 batch 統(tǒng)計(jì)切到用滑動(dòng)平均值漏掉這一行單張推理時(shí) BN 會(huì)拿自己這一張圖的方差去歸一化輸出會(huì)飄得非常離譜——這個(gè)現(xiàn)象很像「模型沒訓(xùn)好」實(shí)際只是忘了切模式。參數(shù)說(shuō)明img_w、img_h必須和config.py里的IMG_W、IMG_H一致建議直接從 config import 而不是寫默認(rèn)值寫死默認(rèn)值是遲早要出事的。IDX2CHAR從charset.py來(lái)和訓(xùn)練時(shí)的CHAR2IDX同源這是保證索引不亂的根本。批量推理時(shí)把循環(huán)換成DataLoader再把join換成列表推導(dǎo)即可速度能快三到五倍。如果要導(dǎo)出 ONNX 給別的語(yǔ)言用torch.onnx.export的輸入形狀要寫死成(1, 1, 60, 160)動(dòng)態(tài) batch 雖然支持但很多推理引擎對(duì)動(dòng)態(tài)軸的處理不一致反而增加調(diào)試成本。5. 常見問題排查訓(xùn)練不收斂、準(zhǔn)確率虛高、顯存爆掉的真實(shí)踩坑下面五條是這類項(xiàng)目里出現(xiàn)頻率最高的問題每條按現(xiàn)象、原因、解決寫。看的時(shí)候?qū)φ兆约旱娜罩緞e急著改模型結(jié)構(gòu)。5.1 loss 一路降到 0.1 就卡死驗(yàn)證整串準(zhǔn)確率停在 30% 左右現(xiàn)象訓(xùn)練損失很漂亮前 10 個(gè) epoch 從 4.0 掉到 0.1之后紋絲不動(dòng)。驗(yàn)證集整串準(zhǔn)確率在 30% 上下徘徊單字符準(zhǔn)確率能到 70%。原因最典型的是學(xué)習(xí)率太大導(dǎo)致模型掉進(jìn)一個(gè)「只認(rèn)部分位置」的局部解。四個(gè)位置里有三個(gè)位置猜得準(zhǔn)第四個(gè)位置全錯(cuò)整串準(zhǔn)確率就恒定在低位。另一種可能是最后一個(gè)位置的樣本分布和前面不同——比如生成數(shù)據(jù)時(shí)第四個(gè)字符的坐標(biāo)抖動(dòng)范圍更小模型學(xué)到的特征沒有泛化。解決先把學(xué)習(xí)率從1e-3降到3e-4重跑看曲線形狀有沒有變化。還是卡就打印每個(gè)位置的單獨(dú)準(zhǔn)確率定位到具體是哪個(gè)位置在拖后腿。如果確實(shí)是某個(gè)位置的問題檢查數(shù)據(jù)生成代碼里那個(gè)位置的坐標(biāo)范圍、顏色范圍是不是和其他位置不一致。我遇到過一次是生成腳本里random.randint(0, 6)寫成了random.randint(0, 60)字符被抖到畫布外模型學(xué)不到任何東西。提示逐位打印準(zhǔn)確率的代碼只有五行加上去比盲猜快得多。5.2 訓(xùn)練集 99%驗(yàn)證集 40%但兩批圖明明是分開生成的現(xiàn)象訓(xùn)練集準(zhǔn)確率一路飆到 99% 以上驗(yàn)證集卡在 40% 不動(dòng)損失曲線在兩邊分叉得越來(lái)越大。原因數(shù)據(jù)泄漏。最常見的形式是訓(xùn)練集和驗(yàn)證集用了同一個(gè)隨機(jī)種子生成或者生成完之后按文件順序切分導(dǎo)致高度相似的樣本兩邊都有。另一種隱蔽的情況是標(biāo)簽寫錯(cuò)——驗(yàn)證集的標(biāo)注文件里有一批標(biāo)簽和實(shí)際圖片對(duì)不上模型輸出其實(shí)是對(duì)的評(píng)測(cè)腳本判它錯(cuò)。解決先把驗(yàn)證集里挑 20 張圖人眼看一遍確認(rèn)標(biāo)簽沒錯(cuò)。然后算一下兩批圖的哈希md5重復(fù)的直接揪出來(lái)。生成腳本里訓(xùn)練集和驗(yàn)證集必須用不同的種子并且切分時(shí)按標(biāo)簽分層抽樣別讓某個(gè)字符在驗(yàn)證集里完全缺席。我一般會(huì)在切分后打印兩邊字符頻率的分布做一次比對(duì)這一步花不了一分鐘能省下幾小時(shí)的懷疑人生。5.3 換了字符集之后模型輸出固定幾個(gè)字符怎么訓(xùn)都一樣現(xiàn)象把字符集從小寫字母擴(kuò)到大小寫加數(shù)字重新訓(xùn)練之后模型輸出永遠(yuǎn)是0000或者aaaa。原因CHAR2IDX改了但I(xiàn)DX2CHAR沒同步改或者推理腳本里 import 的是另一份舊的映射表。訓(xùn)練時(shí)標(biāo)簽編碼用的是新表解碼用的是舊表兩邊一錯(cuò)位輸出看起來(lái)就像模型啥也沒學(xué)會(huì)。解決字符映射表只能存在一個(gè)地方訓(xùn)和推理都從charset.pyimport。加一個(gè)自檢函數(shù)訓(xùn)練啟動(dòng)時(shí)跑一遍from charset import CHARSET, CHAR2IDX, IDX2CHAR assert all(IDX2CHAR[CHAR2IDX[c]] c for c in CHARSET), 字符映射不互逆 assert len(CHARSET) len(set(CHARSET)), 字符集有重復(fù)字符第二行斷言防的是字符集里混進(jìn)重復(fù)字符比如013456789里漏看了個(gè)3映射表的長(zhǎng)度和實(shí)際類別數(shù)對(duì)不上模型最后一層維度會(huì)算錯(cuò)但報(bào)錯(cuò)信息很難指向根因。5.4 把 batch_size 從 64 調(diào)到 8loss 直接變成 NaN現(xiàn)象為了在顯存小的機(jī)器上跑把 batch 改小訓(xùn)練幾百步之后損失變成nan之后再也回不來(lái)。原因BatchNorm 在極小 batch 上方差估計(jì)極不穩(wěn)定。batch 為 8 時(shí)每個(gè)通道只有 8 個(gè)樣本參與統(tǒng)計(jì)方差可能接近 0除下來(lái)數(shù)值爆炸反向傳播時(shí)梯度變成inf參數(shù)被污染后整個(gè)訓(xùn)練崩掉。解決三條路按優(yōu)先級(jí)排。一是保持 batch 不小于 32顯存不夠就降分辨率或者減小通道數(shù)二是把 BatchNorm 換成 GroupNorm它對(duì) batch 大小不敏感代價(jià)是收斂稍慢一點(diǎn)三是用梯度累積optimizer.step()每累積 4 個(gè)小 batch 調(diào)一次等效于把 batch 放大四倍但 BN 統(tǒng)計(jì)仍然是按小 batch 算的所以必須配合方案二才徹底。# 梯度累積 GroupNorm 的組合寫法 loss loss / 4 loss.backward() if step % 4 0: torch.nn.utils.clip_grad_norm_(model.parameters(), 5.0) optimizer.step() optimizer.zero_grad()5.5 訓(xùn)練時(shí)準(zhǔn)確率很好換了批圖推理結(jié)果全錯(cuò)現(xiàn)象驗(yàn)證集上整串準(zhǔn)確率 90%拿幾張新生成的圖去推理輸出幾乎是隨機(jī)的。原因推理腳本的預(yù)處理和訓(xùn)練不一致。常見差異包括訓(xùn)練用cv2.imread讀灰度推理用 PIL 讀 RGB 再手動(dòng)轉(zhuǎn)灰度兩個(gè)庫(kù)的灰度轉(zhuǎn)換系數(shù)不同訓(xùn)練做了中值濾波推理忘了訓(xùn)練歸一化到[-1,1]推理只除以 255。這些差異單看都微不足道疊加起來(lái)足以讓模型失效。解決把預(yù)處理抽成一個(gè)函數(shù)訓(xùn)練和推理都調(diào)它。參數(shù)從同一個(gè) config 讀別在推理腳本里寫默認(rèn)值。我習(xí)慣在訓(xùn)練開始前隨手存一張預(yù)處理后的中間結(jié)果到磁盤推理時(shí)拿同樣一張圖跑一遍兩張圖逐像素比對(duì)差超過 1e-6 就說(shuō)明路徑不一致。這個(gè)檢查不用改任何業(yè)務(wù)代碼兩分鐘能做完。6. 二次開發(fā)換字符集、改變長(zhǎng)、上部署的改造路徑真拿這個(gè)項(xiàng)目去接需求改動(dòng)能落到三個(gè)地方按改動(dòng)成本從低到高排。6.1 換字符集與變長(zhǎng)輸出的具體改法換字符集是最簡(jiǎn)單的一種。只改charset.py的CHARSET字符串和config.py的MAX_LEN然后從頭重訓(xùn)。別試圖在舊權(quán)重上繼續(xù)訓(xùn)類別數(shù)一變最后一層全連接的維度就變了加載權(quán)重必然報(bào) shape 不匹配硬改strictFalse會(huì)丟掉整個(gè)分類頭等于重訓(xùn)還多了個(gè)錯(cuò)誤來(lái)源。字符長(zhǎng)度不固定時(shí)把逐位分類頭換成 CTC。主干網(wǎng)絡(luò)和數(shù)據(jù)集基本不動(dòng)改三處import torch.nn as nn # 1) 分類頭輸出時(shí)間步而非字符位置把最后的 view 改成 # return x.view(-1, self.num_classes, T) 然后 permute # 2) 損失換成 CTCLossblank 必須是 0 ctc nn.CTCLoss(blank0, zero_infinityTrue) log_probs model(imgs).log_softmax(2).permute(1, 0, 2) # (T, B, C) input_lengths torch.full((B,), T, dtypetorch.long) loss ctc(log_probs, targets_flat, input_lengths, target_lengths) # 3) 解碼走貪心argmax 之后去重、去 blank def greedy_decode(ids): out, prev [], -1 for i in ids: if i ! prev and i ! 0: out.append(IDX2CHAR[i]) prev i return .join(out)參數(shù)說(shuō)明zero_infinityTrue是必須開的否則當(dāng)某個(gè)樣本的標(biāo)簽長(zhǎng)度超過時(shí)間步 T 時(shí)損失會(huì)返回inf并污染整個(gè) batch 的梯度。T 的大小由特征圖的寬度決定輸入 160 寬經(jīng)過四次池化剩 10 個(gè)時(shí)間步意味著標(biāo)簽長(zhǎng)度最多 10四位字符綽綽有余但如果要識(shí)別十幾位的長(zhǎng)串就得減少池化次數(shù)或者加寬輸入。這個(gè)約束在寫網(wǎng)絡(luò)結(jié)構(gòu)的時(shí)候就要算清楚訓(xùn)到一半發(fā)現(xiàn) T 不夠只能推倒重來(lái)。改造前建議先用小數(shù)據(jù)集跑通整條鏈路確認(rèn)識(shí)別正確再上全量。判斷標(biāo)準(zhǔn)很直接訓(xùn)練 500 步之后loss應(yīng)該穩(wěn)定下降到 3 以下如果一直在 8 附近晃八成是input_lengths或target_lengths傳錯(cuò)了單位。6.2 落地前的驗(yàn)證清單上線前我會(huì)過一遍這張表每一項(xiàng)都對(duì)應(yīng)過真實(shí)的翻車場(chǎng)景。改造點(diǎn)涉及文件驗(yàn)證方法主要風(fēng)險(xiǎn)換字符集charset.py、config.py訓(xùn)練前跑互逆斷言新舊映射混用導(dǎo)致亂碼改圖片尺寸config.py、models/cnn.py打印 Flatten 后維度全連接層維度不匹配換 CTCmodels/cnn.py、train.py單 batch 過擬合測(cè)試時(shí)間步不足導(dǎo)致 inf導(dǎo)出 ONNXpredict.py與 PyTorch 輸出逐元素比對(duì)BN 未切 eval 模式加數(shù)據(jù)增強(qiáng)data/dataset.py驗(yàn)證集不加增強(qiáng)增強(qiáng)污染驗(yàn)證指標(biāo)單 batch 過擬合測(cè)試是我最常用的手段拿 8 張圖反復(fù)訓(xùn) 200 步如果損失降不到接近 0說(shuō)明網(wǎng)絡(luò)容量或者數(shù)據(jù)管線有問題跟超參無(wú)關(guān)。這個(gè)測(cè)試能在十分鐘內(nèi)排掉一大半「訓(xùn)練不收斂」的偽問題。從那以后我每次動(dòng)數(shù)據(jù)管線都會(huì)先拿 8 張圖做一遍過擬合測(cè)試確認(rèn)這條路走得通再去碰全量訓(xùn)練。字符識(shí)別這行沒有玄學(xué)絕大部分「模型學(xué)不會(huì)」都是數(shù)據(jù)和預(yù)處理在背后捅刀子把這條紀(jì)律守住能省下的時(shí)間遠(yuǎn)超想象。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
午夜精品久久久久久久爽| 狠狠色婷婷色| 欧美精品999| 操九色| 美女主播野战视步页| 天天草女人| 婷婷五月天伊人| 大香蕉精品视频| 91久久精品国产91性色TV| 丁香五月婷老师| 久久久思思热| 91avse| 成人 在线观看国产| 五月天天爱| 九九综合| 大香蕉欧美在线| 丁香婷婷久久| 91久热| 思思热久久久在线| www激情网| 91精品无码| 综合色五月亭亭| 激情五月婷婷网| 五月婷婷丁香网| 99re热精品在线视频| 婷婷五月天大香蕉在线视频观看| 久久婷婷五月天大香蕉| 夜夜爽77777妓女免费下载| 五月婷婷亚洲色视频| 丁香婷婷人妻综合网| 久久综合五月| 婷婷久久伊人| 欧美啪啪五月天| 在线看的免费网站| 琪琪色五月婷婷老师| 欧美大香蕉视频| 97韩国久久电影院| 无码人妻一区二区三区免费九色| 天天干天天爽天天操| 玖玖国产视频一区| 五月丁香网视频| 69精品无码一区二区三区| 97人人射| 青草视频在线观看视频| 日本不卡一区二区三区| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 欧亚洲在线高清视频| 成人在线免费网址| 丁香久久久| 日本天堂网站99| 亚洲12p| 人人操五月天| 综合天堂AV久久久久久久| 久久婷婷亚洲| 天天久综合网永久入口18| 日本不卡一区二区三区| 玖玖伊人网| 亚洲乱码日产精品BD| 成人无码精品1区2区3区免费看| 婷婷九月| 午夜精品久久久久久久爽| 精品国产AV色一区二区深夜久久| 九月丁香很很色| 日韩人妻白浆视频系列| 色99无码| 激情宗合哪里能看| 一级A片天天操夜夜操| 色五月视频无码播放| 色婷婷丁香五月高清在线| 五月丁香婷婷无码中文| 丁香五月天成人| 色操b| 色区域网站视频| 色久免费| 久久久91| 俺也去五月婷婷丁| www.久久久久久| 久Se视频在线观看| 狠狠久久婷五月综合色| 色五月婷婷很很操| 伊人色综合网| 欧美超碰亚洲| 久久久999精品| 综合激情五月综合激情五月激情1| 丁香婷婷五月天亚洲| 九九综合精品| 婷婷五月天无码| 狠狠爱婷婷丁香| 婷婷久久综合久| 国产看真人毛片爱做A片| 人妻有码乱操| 国产韩日亚洲美州欧亚综合在线| 久久这里只有精品视频1| 色婷婷丁香五月天在线观看| 久久思思热| 色欲AVV| 日韩激情网站| 亚洲综合干| 色色色色av色色色色| 天天草天天爽| 久久婷婷一级片| 久久婷婷五月综合成人d啪| 无码网| 开心激情综合| 超碰只有精品在线| 色噜噜狠狠色综合AV兰草影视| 99只有这里是精品| 99无码视频| 天堂在线伊久| 天天上天天爽| 操91| 99久久99视频| 狠狠操狠狠操AV| 来吧亚洲综合网| 欧美黄色一级| 婷婷五月丁香基| 久色大| 国产精产国品一二三在观看| 婷婷五月天最新综合你懂的 | 九九人人操| 色欲AVV| 五月丁香婷婷爱激情综合网| 综合伊人久久| 大香婷婷| 五月激情婷婷丁香| 中文字幕在线视频播放| 伊人婷婷色激情丁香| 婷婷综合色| 婷婷激情六月中文| 我要看激情五月天| 真实熟女-91九色| 六月婷婷色五月| 激情五月综合| 亚洲综合激情五月久久| 99在线精品视频| 丁香花大香蕉婷婷综合| 五月婷婷中文网| 欧美人妻一区二区| 操操啪| 99熟女啪啪视频| aaaa久久| 久久婷婷五月综合伊人| 人操91在线| 激情小说五月天中文字幕| 婷婷99中文字幕| 激情婷| 5月丁香六月婷婷| 97av在线视频| A A色色| 国产欧美日韩综合精品一区二区| 日日想日日夜日日操| 99精品在这里| 久久这有这里精品| 亚洲电影在线观看| Www.激情| 婷婷天堂视频| 天天日,天天插| 91丨九色丨高潮丰满日本| 五月婷婷啪啪综合网| 香港九九六区八区99| 婷婷五月激情基地| 99精品久久久久久久久| 另类视在线| 丁香五月婷婷亚洲另类| 九九色欲网| av国产精品偷| 国产人妻777人伦精品HD| 五月婷婷xxx| 欧美日韩91| 欧洲亚洲免费视频9| 99无码| 丁香五月大香蕉AV| 五月天色社区| 丁香五月天激情AV| 久久9999| 亚洲色啪| 久久这里都是精品| 好好干Av| www,setingting| 特级片神马电影| 婷婷综合天堂| 97操碰| 欧美噜噜免费观看| 色色97丁香婷婷五月天| 伊人干综合| 成人精品在线| 久久精品凹凸分类| 五月天啪啪视频| 琪琪理论片| 欧美色男人网站| 天天爽综合网| 婷婷八月激情| 一起草aV| 丰满老熟妇BBBBB搡BBB| 婷婷五月天综合久久| 色综合色| 碰超在线九色| www五月| 精品皮股午夜AV| 国产操逼网站| 亚洲成人无码专区| www色婷婷| 五月婷色丁香| 99啪啪视频| http:色情日本com| 91狠狠综合久久| 亚洲精品五月| 六月激情久久婷婷| 激情久久久久久久久| 色色五月天激情| 99er6热在线观看精品6| 久久这里只精品66| 综合性爱网| 国产FREESEXVIDEOS性中国| 五月天婷婷在线AN| 密乳视频| 99 热国产在| 午夜微拍福利| 黑人巨粗进入警花疼哭A片| 色五月综合| 久久与婷婷| 99热在线看片| 亚洲影院婷婷色| 天天爽天天日| 久久婷婷五月综合伊人| 婷婷五月天免费视频| 丁香五月婷婷深爱综合激情 | 五月综合激情视频在线| 艾小青av| 九九热这里只有精品12| 色情·com| 色婷亚洲五月丁香| 91刘玥视频在线观看| 噜噜视频| 九九色精品| 欧美综合激情丁香五月六月婷| 五月天天天综合| 亚洲第二AV| 99性爱| 超碰99热| 亚洲色啪| 色色色热热热| 另类小说五月天| 五月天播播| 婷婷丁香五月六月激情| 热99视频| 亚洲五月天狠狠| 精品久久人妻热| 色五月首页| 色色婷婷丁香五月天| 五月激情综合网婷婷| 这里有精品| 91精品婷婷国产综合久久| 这里只有精品1| 夜夜爽日日躁| 日日肏夜夜干| 美女丁香五婷婷| 婷婷五月天成人网站| 亚洲视频在线观看99| 婷婷五月天色色| 久久免费操| 色五月婷婷五月天激情综合| 日韩AV在线免费观看| www.91AV.COM| 婷婷六月激情| 色五月婷婷天天干| 99aese| 伊人久久婷婷五月天激情四射| WWW色五月天| 五月丁香综合啪啪| sewuyue第四色| 激情五月色综合国产精品| 久久视频婷婷视频| 人人视频色| 九九久久网| 婷婷综合在线| 九九色综合九九色| 人人插操| 9999热在线观看| 婷婷五月精品中文字幕| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 天天激情站| 九九婷| 蒲京久久无码视频| 在线成人网址| 婷婷丁香五另类网站| 婷婷激情五月综合基地| 五月婷婷六月丁香在线视频免费在线观看| 操91| 丁香五月熟女| 久久久久妻| 免费视频舔| 九九爱看亚洲| 91碰| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 激情婷婷综合| 五月天婷婷久久视频| 亚洲天堂爱爱| 9 7总站超级碰免费视频| 五月色亭丁香| 日日日,com| 九九久久视频| 色婷婷五月综合| WWW.久久.COM| 久久久久9| 久久视频婷婷视频| 91超碰在线观看| 强辱丰满人妻HD中文字幕| 日本A片一区| 九九精品视频免费在线| 欧美Va日本Va| 日韩少妇内射免费播放| 婷婷综合网站| 日本色爽| 亚洲中文字幕在线电影| 丁香六月婷婷开心| 天天射综合网站| 婷婷五月欧美综合| 激情文学天天| 99操碰| 啪啪日本欧美| 色丁香综合影院| 国产免费一区二区三州老师F1F1| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 精品亚洲国产成人A片在线鸭王| 秋霞网在线免费基地五月婷婷丁香| a在线观看| 丁香五月五婷| 国产婷婷婷| 另类亚洲2| 欧美色爱五月天| 99热这里只有精品9| 色色综合激情| 天天日天天干天天操| 嫩草AV久久伊人妇女超级A| 日本WWW九九九| 色碰碰视频| 99热久久这里只有精品| wWwCom夜操wwW| 99热亚洲精品| 操操综合网婷婷| 成人深爱丁香五月| 五月婷视频| 日本操碰碰| 天天综合中文| 五月天丁香欧美激情| 五月综亚洲| 成人丁香| 都市激情久久| 婷婷五月天网| 五月综合视频在线| 久久久人人操A V| 丁香五月色播中文在线播放| 99热九九热| 久久精品五月| 久久这里有精品视频| 婷婷五月花| 久热精品视频在线观| 婷婷丁香五月综合免费视频百花| 五月天丁香久久综合| 婷婷五月丁香av网站| 伊人激情啪啪| 97人人操在线| 九九热黄色| 色婷婷综合电影| 日日日日操| 爱99干99| 五月丁香激情婷婷综合| 丁香久久激情俄| 亚洲男人的天堂婷婷色五月| 色五月丁香com| 日逼免费视频| 男人的天堂99| www.激情五月| 91ncm视频| 成人精品人妻| 成人电影AV在线观看| 色婷综合| www,99热| 影音先锋一区二区三区| 色噜噜狠狠色综无码久久合欧美| WWW色综合| 国产AV一区二区三区最新精品| 性爱动图国产麻豆一区二区三区| 成人国产欧美大片一区| 五月丁香色婷婷综合| 天天久久九九| 色婷婷97| 狠狠干天天内射| 国产成人+综合亚洲+天堂| 色婷婷五月天激情久久| 激情五月天天| 深爱激情五月天| 丁香五月婷婷欧美激情-中文天堂最新版在线观看 | 成人一级片| 九九视频免费| 亚洲六月色| 五月丁香婷爱在线| 狼友超碰| 九九九激情综合| 婷婷五月六月| 丁香五月天人体| 国产探花一片区| 超碰99资源站| 色色亚洲无码| 六月婷婷综合久久| 国产一区二区三区影院| 亚洲最大视频| 天天射影| 国内9l视频自拍老熟女九色| 久99视频在线观看| 国产丁香五月天婷婷| 色九九丁香九月色九九色| 98色花堂98t.R| 女人露出p毛视频www网站| 伊人激情AV一区二区三区| 翔田千里aV中文字幕| 欧美男女婷婷| 免费无码毛片一区二区A片| 色婷婷亚洲在线| 9久热在线视频精品| 99热这里是精品| 丁香五月乱中文字幕| 丁香六月狠狠干| 成人做爰高潮A片免费视频| 激情五婷网| 四虎成人精品永久免费AV九九| 99亚洲天堂| 天天射影视综合网| 天天综合激情| 欧美日比视频| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 色吊操色妞| 久久综合丁香| 久久综合激情婷婷激情| 狠狠色官网| 婷婷五月综合色拍| 亞洲自怕| 欧美色一级色| 色日本五月天| 日韩淑女人妻luan伦激情精品一区二| 激情综合五月色丁香婷婷| 精品人人操| 五月婷护士| 99精品无码| 991精品在线视频| 能看的AV网站| 久久在这里有精品| 久久er视频6| 激情五月婷黄版| 五月婷婷黄色网址| 乱精品一区字幕二区| 91九色中文字幕女在线观看| 91人人爽久久涩噜噜噜| av操一操| 婷婷五月花西瓜| 翔田千里aV中文字幕| 91丁香五月| 五月丁香婷婷啪啪网| 熟妇内谢69XXXXXA片| 99re免费精品视频| 日本3级片一区2区| 日韩人妻在线观看| 97碰碰在线看视频免费| 婷婷狠狠97| 五月婷婷五月天| 天堂草在线观| 激情五月天婷婷视频| 精热在线综合网| 五月丁香六月久久| 欧美色狠婷久| 99热欧| 操人91| 婷婷色激情网| 久久久思思热| 亚洲五月丁香综合网| 五月婷婷激情综合在线| 婷婷第六色| 欧美人人操| 日本精品99网站| 婷婷九月在线| 婷婷99视频精品| 99精品九九| 超碰在线观看caop| 国产AV不卡福利| 四射综合网| 久久综合影院| 九九色逼| 亚洲精品操一操、噜一噜、摸一摸、爽 | 深爱五月日韩| 婷婷欧美激情综合| 久久久五月天| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 狠狠狠狠狠狠| 熟妇高潮一区av| 九月色婷婷综合亚洲| 高清a片基地| www色哟哟| 丁香五月婷婷色偷偷| 久久aaaaa| 大香蕉婷婷丁香| 色情丁香五月婷婷精品| 色狠狠综合网| 色五月婷婷九月| 欧美乱码国产一级A片| 久久xxxx| www.97视频| 激情五月天.色网| 日本天堂久久| 99re这里只有精品国产99| 色五月亚洲五月天| 亚洲综合99| 色狠狠综合| 七月丁香婷婷 色色| 色九综合| 亚州激情在线视频| 在线视频99| 99精品无码| 99干免费视频| 精品婷婷五| 激情五月少妇| 色999;丁香五月| 开心五月激情网| 亚洲成人AV在线| 婷婷五月av| 伊人六月丁香婷婷| 人妻操逼视频| 狠狠色丁香久久综合婷婷亚洲成人福利 | 丁香五月AV在线| 五月色婷婷激情| 99这里有精品| 国产成人精品123区免费视频| 亚洲成人九九九| 色八月婷婷| 一起草性爱不卡视频| 久久伊人五月天| 久久久人人操A V| 久热这里只有精品3| 五月激情视频| 97色欧美| www网站在线观看| 另类天堂| 日本一级一片免费视频| 久久婷婷七月丁香| 久久人妻久久久久| 大香蕉五月丁香| 五月停性愛| 99久在线精品99re8热| 人人射av| 成人精品视频99在线观看免费| 人人插9| 五月天激情啪啪| 久久精品这里只有精品免费首页| 丁香五月婷婷激情完整版| 开心五月婷婷激情网| 婷婷在线视频| 99九九在线视频| 亚洲成人va| 丁香五月av| 五月色网| 五月丁香久久久久| 日本99在线视频| 99热精品中文字幕| 天天肏视奸| 久热最新视频| 中文幕无线码中文字蜜桃| 青青.com| 婷婷午夜| 日本九九九九| 久久免费精彩视频| 99小视频在线| 激情小说五月天| 夜夜 操无码| 九九亚洲| 99操无码视频观看| 99九九久久| 另类伊人婷婷| 丁香五月欧美色综合| 亚洲色图五月丁香五月婷婷| 婷婷五月激情在线视频| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 99久久国产宗和精品1上映| 婷婷九月激情| 综合欧美五月婷婷| 欧美99热| 久久国产精品乱子伦_靑青草…| 久久香蕉网| 五月丁香色色综合| 久久五月婷| 五月天自拍网| 天堂在线观看视频| 操日挥操日日| 成人 AV播放| 激情小说婷婷| 色五月激情| 97操视频| 婷婷 激情 五月| 夫妇交换刺激做爰| 99久久99热这里只有精品| 精品99*| 青草激情在线| 色射7856五月天激情四射| 国产激情在线| 婷婷五月天堂网| 色婷婷影视| 亚洲 五月 婷婷 成人| 狠狠色综合图片| 99色性爰网络| 色啪影院| 啪啪日本欧美| 99热热这里只精品996小说| 激情爱爱网站超大免费| 天天爽夜夜操| 99热无码首页| 婷婷永久在线| 夜色五月天| 天天爽天天干| 成人五月天婷婷| 大鸡巴伊人网| 91viP在线看| 久久婷婷丁香五月一二三| 天天插操| 久久新地址| site:esunnet.com| 亚洲午夜Av| 欧美色婷婷| 日日干日日s| 日本3级片一区2区| 激情又色又爽又黄的A片| 五月天激情网页| 丁香综合网| 97caop| www.99热精品| 婷婷六月综合在线| 成人AV中文字幕| 久久久久9999| 色五月婷婷操逼| 激情综合网之激情五月| 九九偷拍网| 国产日产亚系列精品版优势| 啪色综合| www.sezonghe| 日韩色色网| 殴美97色| 无码成人AAAAA毛片AI换脸| 久久久久久综合88| 久久偷拍综合五月天| 丁香六月婷婷综情欧美| 全高清无码视頻| 激情涩播| 欧洲色| yellow视频在线观看91| 久久aaaa片一区二区| 91婷婷在线| 超级碰碰碰碰视频| 黄色av高清| 日韩人妻无码专区| 99热6精品| 久久婷婷五月| 日日狠狠久久偷偷四色综合免费 | 欧美色色色色色色| 国产欧美va| 天天干天天射色综合| 中文网AV| 人操91在线| 男人先锋久久| 5月丁香综合图区| 婷婷97狠狠成人网站| 六月婷婷五月天| 欧美性猛交99久久久99| 精品色色| 色久丁香五| 五月婷婷丁香av| 丁香五月亚洲综合| 无码激情精品色婷婷久久久久| 婷婷久久婷婷色五月| 五月丁香精品| 99福利导航| 99热免费精品| 久碰婷婷视频| 成人毛片在线免费观看| 五月综合丁香婷婷| 中文字幕AV网址| 欧美人人女女精品综合五月天| 伊人五月天久久| 真实熟女-91九色| 色综合99无码| 玖玖综合玖玖| 美国不卡视频| 欧美精品A片一区在线观看| 97久久五月丁香婷婷| 成人资源在线| 在线观看亚洲AV| 99热热这里只精品996小说| www激情网站| 久久综合丁香| 激情综合无码| 五月花婷婷在线精品视频| 五月婷婷伦理| 思思99re这里只有| 亚洲日日日| 五月天综合在线观看| 天天干天天操天天拍| 丁香五月综合激情性爱| 人妻熟妇国产精品| 婷婷成人五月天成人文学| 伊人无码高清| 六月色丁香婷婷| 97婷婷丁香五月天激情图片| 精品网站:999WWW| 粉嫩av懂色av蜜臀av熟妇| 人人草成人视频| 色天天综合色| 伊人久久五月天综合| 久9免费视频| 99热这里有精品| 99re热视频这里只精品| 亚洲精品网址| 4399成人黄A片| 另类小说五月天综合网| 亚洲va欧美va天堂v国产综合| 激情综合五月天| www超碰| 九九XX视频| 六月丁香成人| 色综久久久| 激情小说视频图片网| 台湾无码A片一区二区| 五月丁香影视| 丁香五月婷婷少妇| 99热视| 日夜夜久久| AV在线中文| 狠狠操狠狠色| 激情综合五月天| 日日日影院| 中文AV在线播放| 亚洲精品V天堂中文字幕| 草榴视频网| 日韩三级片一区二区| 深爱五月日韩| 成人无码髙潮喷水A片| 狠狠综合久久综合| 插插干干干色| 色婷婷中文在线| 国产美女无遮挡裸体毛片A片| 日韩精品成人在线| 久久草婷婷丁香网站| 五月丁香六月色| 久热re视频在线观看网站| 大香蕉婷婷五月天| 亚洲第一精品成人999久久精品| 超碰99在线观看| 亚洲9久久精品| 色国产五月| 国产成人在线精品| 九九在线91| 天天艹天天色| 亚洲综合五月天婷婷| 日本WWW九九九| 五月激情丁香| 91操人| 99re这里只有精品99| 天天摸色吧天天摸色吧| 婷婷综合中文字幕| 丁香六月婷婷综合色| 五月丁香婷婷免费视频| 五月婷婷丁香综合,亚洲天堂| 青青草a在线| 色色射| 五月丁香婷草| 五月丁香六月婷婷综合网站| 123日本不卡在线| 婷婷六月色丁香视频在线观看| 婷婷丁香97| 五月婷av| 亚洲丁香网| 亚洲激情四射色| 先锋资源 996| 国产欧美日韩综合精品一区二区| 青青热久久综合| 婷婷开心激情| 色五月激情综合网| 99re8这里只有精品99re8热视频| 九九热啪啪| 内射综合网| 4399在线观看免费高清黄色视频| 伊人久久五月天综合| 久久人人添人人爽添人人片αV | 影音先锋色婷婷| 密乳Va| 亚洲综合五月| www.日本91| 婷婷五月,偷窥偷拍网| 94干大香蕉| 99re视频精品| 婷婷五月综合免费在线| 中文av网站| 91丁香婷婷综合资源| 狠狠色综合网| 九九热99熟女| 91人人操人人| 色五月涩涩婷婷蜜桃| 九九在线视频| 色噜噜在线| 超碰人人在线观看| 欧美色色色色色色| 亚洲第一成人无码A片| 色综合久久88色综合天天99| 五月丁香综合在线| 五月丁香六月婷婷中文版| 六月婷婷色综合| 678五月丁香亚洲综合| 中文字幕视频色婷婷| 丁香色五月婷婷91桃色| 激情五月最新网址| 182TV大香蕉| 五月丁香六月婷综合成人综合| 丁香九月激情| 五月婷婷综合色啪首页| 超热久碰.com| 五月丁香婷婷在线| 日韩人妻无码一区二区| 欧美五月婷婷综合| 天天干天天插| 99热日韩这里只有精品| 8050一级网| 五月色色激情网| 久久综合干| 搡BBBB搡BBB搡18| 深爱激情丁香| 五月天堂色| 影音先锋91在线资源站| 亚洲天堂aaaa| 91久久久久久| 色在线免费观看| 婷婷丁香九月| 天天操夜夜肏| 婷婷激情人妻| 日韩综合成人| 五月天婷婷伊人| 这里有精品99| 色约约视频一区二区三区四区五区 | 日本三级日本三级99| 韩国三级五月天婷婷。| 五月天婷婷社区久久综合| 专区无日本视频高清8| 夜夜撸日日骑| 色情五月丁香| 五月婷婷狠狠久久| 婷婷五月天色色| 99热这里只有精品99| 亚洲色色色色色| 久久99三级在线视频| 五月婷激情| 人人爱人人摸人人澡| 天天肏屄夜夜爽| 91日精品| 人人操9| 丁香六月情| 五月婷婷在线综合| 六月丁香啪| 五月婷婷日本| 成人免费超碰| 日本色婷婷| 日本一级| 天天操综合网站| 狠狠色婷婷丁香六月| 99热最新| 亚洲AV第二区国产精品| 婷婷五月丁香亚洲| 双性美人被调教到喷水A片| 人妻AV在线观看| 岛国av电影网站| 亚洲激情无码久久| 91九色精品女同系列| 婷婷丁香www视频日本韩国| 丁香色色网| 大香蕉九九| 亚洲综合五月天婷婷| 五月丁香花开综合网| 91超碰在线播放| 五月婷无码| 九九热这里有精品23| 99热爱爱干干日| www.久久爱.com| 男女激情久久| 日本色99网站| 欧美槡BBBB槡BBB少妇| 亚洲欧美婷婷五月色综合| 五月天丁香婷婷社区| 无套内射极品大美女| 青青草视频福利| 99热这里只有精品50| 这里只有精品99视频| 久/久精品99看9| 婷婷丁香六月| 97操在线视频| 六月丁香婷| 久久人人九九| 色五月琪琪| 亚欧州精品视频| 亚洲情色一区| 97干综合网| 爆乳熟妇一区二区三区爆乳照片| 色五月婷婷AV| 99视频在线观看视频| 亚洲9久久精品| 68热超碰在线| 9色免费网| www.亚洲激情.com| 天综合日日夜综合7799| 99日本视频在线观看专区| 欧美碰碰碰| 色五月色情| 操日视频| 99日本黄站| 天天噜天天插| 久久久er热| 丁香婷婷久久老熟女综合网| 九九九九九九九热| 日韩五月丁香| 天天插天天射| 天天爽天天| 91精品丝袜久久久久久| 97人人干人人操| 日本99视频| 激情五月六月婷婷综合啪啪| 丁香五月aV| 婷婷开心久久| 色色com| 精品婷婷| 五月丁香六月综合激情| 乱精品一区字幕二区| 99riAV成人在线视频| 成人AV中文字幕| 五月丁香激情综合网| 国产欧美婷婷五月| 中文国产五月天| 婷婷日日夜夜| 久青操| 图片区 小说区 区 亚洲五月| 香蕉AV777XXX色综合一区| 日韩精品99久久| 超碰91av| 五月丁香欧美| 可以免费观看的AV| 五月天婷婷综合网| 九九99热精品| 婷婷五月激情综合| 丁香婷婷啪啪啪| 亚洲AV综合网| 婷婷综合视频| 玖玖婷婷精品| 中文字幕婷婷五月天| 91精品久久久久久综合五月天| 91大屁股精品| 爱久久小说下载网| 丁香五月最新网址| 久久五月婷综合网| 能看的av网站| 中文中文在线| 亚洲欧洲午夜成人精品av| 五月丁香啪啪激情| 日韩aaaaa| 成人午夜视频精品一区| 狠狠色狠狠爱| 天天久久综合| 人人操97| 激情五月婷婷色色| 五月丁香色情| 天天日综合| 亚洲激情另类| 色色丁香五月| 天天艹夜夜爽| 99色热| 五月天激情日色在线| 亚洲成色综合网站免费观看| www色五月| 日本三级成人秘书精品片| 久久婷婷五月综合啪| 亚洲色综合性| 99热这里是精品| 在线中文亚洲| 99色综合久久| 91狠狠色丁香婷婷综合久久精品| 欧美色色色色色色色| 久久人妻视频| 欧美色99| 另类综合色| 亚洲情综合五月天| 国产1区2区3区在线观| 天天干夜晚夜操| 色级停停| www。五月天激情| 国产97色在线| 婷婷久久爱| 婷婷丁香亚洲五月天| 丁香五月天啪啪| 婷婷五月丁香啪啪| 精品人妻一区二区三区四区不卡在| 久久国产一区二区三区| 久久婷婷五月综合| 婷婷91| 精品九九网| 五月天婷婷青青草| 熟女少妇内射日韩亚洲| 好好干Av| 99色在线| 久久ww| 美女激情综合| 国产在线黄色| 五月天婷婷色色网| 玖玖婷婷精品| 六月丁香社区| 精品自拍99| 五月天涩涩| 色婷婷亚洲综合网站| 开心五月婷| 99燥99日| 九九热这里只有精品31| 国产午夜精品一区二区三区四区| 都市激情五月婷婷综合| 五月丁香亭亭| sS丁香五月婷婷| 另类小说五月天| 婷婷激情小说网| 婷婷色综合| 玖玖伦理电影| 97久久久久久久久久久| 婷婷综合网伊人| 99热热热天天人人人超超碰| 亚洲国产成人裸舞| 97在线天堂| 亚洲热久久| 操碰久| 五月婷婷婷丁香播| 成人午夜免费电影| 日日干天天爽| 丁香婷婷精品视频| 操操操B| 蜜乳中文字| 久久婷综合网| 日韩人妻在线观看| 99热精品少| 亚洲愉拍99热成人精品| www.色五月.com| 2017狠狠干| 99热官网| 99热.com| 欧美日综合| 成人超碰网| 亚洲综合五月天| 99色色热| 激情婷婷五月社区| 亚洲av综合网| 26UUU欧美激情一区二区| 伊人久久大香线蕉亚洲五月天,| 亚洲无线视频| 亚洲午夜精品久久久久久人妖| 高清资源站日A美A欧亚…| 狠狠色噜噜狠狠狠狠综合| 超碰人人艹| 婷婷色色网站| 日日干天天| 天天日夜夜B久久| 色婷婷狠狠禁18久久| 五月天婷婷伊人| 情欲综合网| 五月婷婷六月综合| 午夜大香蕉| 婷婷五月天视频亚洲| 激情网战码亚洲A| 色激情网| AA丁香综合激情| 欧美色色色色色色色| 超碰av在线| www婷婷色| 99热偷拍| 日日夜夜爽| 婷婷久久大香蕉| 五月婷婷黄网站大全| 色丁香五月天| 六月婷婷九月丁香亚洲综合| 极品九九九九九九| 99无码| 99热在线看片| 99综合婷婷五月| √天堂资源在线人妻熟女| 中文字幕乱码亚洲精品一区| 激情婷婷久久| 色久五月天| 草综合网| 日本天堂免费99| 三男玩一女三A片| 久操激情| 天天摸天天日天天舔| 婷婷五月成人色综合| 超碰在线综合| 超喷97免费在线视频| 大香蕉五月天| 中文字幕婷婷五月天在线观看| 国庆精品久久| 婷婷色在线视频| 伊人激情网| 操碰色一区就去操| 99re这里| 猫咪伊人久久| 亭亭五月天成人| 婷婷色播综合五月| 久久永久网址| 99久久.www| 色色色五月| 在线中文字幕免费视频| 思思久久99热只有频精品66| 丁香六月啪啪| 五月天停婷基地| 五月婷婷六月丁香在线| 婷婷五月天深爱| 亚洲综合新99视频| 狠狠色婷婷在线| 国产97色在线| 91日日日| 97婷婷久久丁香| 67194线路二在线观看| 风流少妇A片一区二区蜜桃| 狠狠操综合| 六月婷婷激情图片| 天天干天天干天天干天天干天天干| 99热爱爱干干日| 男男野外做爰全过程69| 久色| 激情五月天网站| 九九五月天| 91色在线/日韩| 玖玖热视频| 月婷婷婷婷五月| 这里只有精品无码| 五月开心深爱激情网| 伊人久久五月天综合| 丁香六月高清视频| 丁香丁香激情网| 欧美色色色色色色色色色色影视| 六月丁香久久| 日日噜人人人做人| Av性爱网| 婷婷第六色| 婷婷色播综合五月| 678五月丁香亚洲综合| 欧洲激情五月天婷婷| 91啪啪视频| 99热日韩| 婷婷精品在线| 91精品久久久久久77777| 久久六月天| 99热老网站| 色综合婷婷| 亚洲激情亚洲激情 | av国产精品偷| 99干日本| 91人人操人人| 高清不卡一区| 99精品激情| 欧洲永久精品| 丁香五月图片| 色婷婷五月天成人网| 激情五月天啪啪| 激情婷婷五月天日本系列| 色婷婷色99国产综合精品| 99精品无码| 五月丁香六月婷婷啪啪| 天堂成人A片永久免费网站| 丁香,开心成人,久久| 婷婷丁香综合色AV| 日韩在线视频网站| 丁香五月色情| 激情五月婷婷综合网| 思思久久精品| 久婷| 亚洲精品国产A久久久久久| 91人妻九色大屁股| 亚洲AV网站在线观看| 欧美色色色色色色色色色色影视| 日本成人噜噜噜噜噜| 五月婷丁香久久综合| 婷婷五月天网址| 色噜噜狠狠色综合无码久久欧美| 伊人五月久久| 草做免费在线观看| 婷婷激情在线| 老师的粉嫩小又紧水又多A片视频| 激情98色婷婷五| 五月天婷婷基地综合网| 99精品视频在线6| 久香草视频在线观看| 色婷婷激情| 69超碰在线| 99玖玖精品| 婷婷激情五月天7| 婷婷五月六月| 婷婷激情五月综合| 7777久久亚洲中文字幕| 777久久久| 激情的五月婷婷蜜桃| 天天操天天操天天操天天操天天操| 综合大香蕉| 久婷婷久草| 六月婷婷六月天天在线免费| 五月婷婷之美女图片| 99视频精品在线| 色久一| 人人色人人摸人人看| 人妻久久人妻久久第一区| 蜜臀AV在线观看| 高清国产AV| 精久久色| 婷婷成人五月天| www.五月婷| 婷婷丁香水多多视频| 色欲丁香| 丁香婷婷浪潮AV久久综合| 思思99热在线| 综合一区二区三区| 97操操网| 丁香六月色婷婷欧美| 五月久久婷婷天堂视频| 国产乱妇乱子在线播视频播放网站| 激情五婷网| 天天日夜夜草进麻麻的子宫| 婷婷久热| www.五月天色色色| 五月婷婷狠天天色综合| 91玖玖| 久一网站| 色 丁香婷婷| 婷婷五月天AV| 久操综合| 能看的av网站| 五月婷婷婷色| 激情com| 天天爽夜爽| 婷婷五月天激情综合| 五月丁香天堂网| 狠狠色噜噜狠狠狠777奇米| 五月激情另类| 深爱激情丁香| 色墦五月丁香| 日本99久久| 色五月激情问网站| 六月丁香深深爱| 无码少妇高潮喷水A片免费| 久热精品视频在线观| 丁香五月欧美色综合| 色五月婷婷激情基地| 欧美日本va| 五月婷婷视频| 久久成人精品视频| 狠狠五月婷婷| 五月婷伊人| 风流少妇A片一区二区蜜桃| 99色色网站| 精品人妻一区二区三区四区不卡在| 五六月婷婷久久| 电影蜘蛛女| 五月天成人在线视频网站| 99在线精品视频观看免费下载|