精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

教你使用TensorFlow2對識別驗證碼

開發 前端
驗證碼是根據隨機字符生成一幅圖片,然后在圖片中加入干擾象素,用戶必須手動填入,防止有人利用機器人自動批量注冊、灌水、發垃圾廣告等等 。

[[405770]]

 驗證碼是根據隨機字符生成一幅圖片,然后在圖片中加入干擾象素,用戶必須手動填入,防止有人利用機器人自動批量注冊、灌水、發垃圾廣告等等 。

數據集來源:https://www.kaggle.com/fournierp/captcha-version-2-images

圖片是5個字母的單詞,可以包含數字。這些圖像應用了噪聲(模糊和一條線)。它們是200 x 50 PNG。我們的任務是嘗試制作光學字符識別算法的模型。

在數據集中存在的驗證碼png圖片,對應的標簽就是圖片的名字。

  1. import os 
  2. import numpy as np 
  3. import pandas as pd 
  4. import cv2 
  5. import matplotlib.pyplot as plt 
  6. import seaborn as sns 
  7. # imgaug 圖片數據增強 
  8. import imgaug.augmenters as iaa 
  9. import tensorflow as tf 
  10. # Conv2D MaxPooling2D Dropout Flatten Dense BN  GAP 
  11. from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense, Layer, BatchNormalization, GlobalAveragePooling2D  
  12. from tensorflow.keras.optimizers import Adam 
  13. from tensorflow.keras import Model, Input  
  14. from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau 
  15. # 圖片處理器 
  16. from tensorflow.keras.preprocessing.image import ImageDataGenerator 
  17. import plotly.express as px 
  18. import plotly.graph_objects as go 
  19. import plotly.offline as pyo 
  20. pyo.init_notebook_mode() 

對數據進行一個簡單的分析,統計圖像中大約出現了什么樣的符號。

  1. # 數據路徑 
  2. DIR = '../input/captcha-version-2-images/samples/samples' 
  3. # 存儲驗證碼的標簽 
  4. captcha_list = [] 
  5. characters = {} 
  6. for captcha in os.listdir(DIR): 
  7.     captcha_list.append(captcha) 
  8.     # 每張驗證碼的captcha_code 
  9.     captcha_code = captcha.split(".")[0] 
  10.     for i in captcha_code: 
  11.         # 遍歷captcha_code  
  12.         characters[i] = characters.get(i, 0) +1 
  13. symbols = list(characters.keys()) 
  14. len_symbols = len(symbols) 
  15. print(f'圖像中只使用了{len_symbols}符號'
  16.  
  17. plt.bar(*zip(*characters.items())) 
  18. plt.title('Frequency of symbols'
  19. plt.show() 

 

如何提取圖像的數據建立X,y??

  1. # 如何提取圖像 建立 model  X 的shape  1070 * 50 * 200 * 1  
  2. # y的shape 5 * 1070 * 19 
  3.   
  4. for i, captcha in enumerate(captcha_list): 
  5.     captcha_code = captcha.split('.')[0] 
  6.     # cv2.IMREAD_GRAYSCALE 灰度圖 
  7.     captcha_cv2 = cv2.imread(os.path.join(DIR, captcha),cv2.IMREAD_GRAYSCALE) 
  8.     # 縮放 
  9.     captcha_cv2 = captcha_cv2 / 255.0 
  10.     # print(captcha_cv2.shape) (50, 200)  
  11.     # 將captcha_cv2的(50, 200) 切換成(50, 200, 1) 
  12.     captcha_cv2 = np.reshape(captcha_cv2, img_shape) 
  13.     # (5,19) 
  14.     targs = np.zeros((len_captcha, len_symbols)) 
  15.      
  16.     for a, b in enumerate(captcha_code): 
  17.         targs[a, symbols.index(b)] = 1 
  18.     X[i] = captcha_cv2 
  19.     y[:, i] = targs 
  20.  
  21. print("shape of X:", X.shape) 
  22. print("shape of y:", y.shape) 

輸出如下

  1. print("shape of X:", X.shape) 
  2. print("shape of y:", y.shape) 

通過Numpy中random 隨機選擇數據,劃分訓練集和測試集

  1. # 生成隨機數 
  2. from numpy.random import default_rng 
  3.  
  4. rng = default_rng(seed=1) 
  5. test_numbers = rng.choice(1070, size=int(1070*0.3), replace=False
  6. X_test = X[test_numbers] 
  7. X_full = np.delete(X, test_numbers,0) 
  8. y_test = y[:,test_numbers] 
  9. y_full = np.delete(y, test_numbers,1) 
  10.  
  11. val_numbers = rng.choice(int(1070*0.7), size=int(1070*0.3), replace=False
  12.  
  13. X_val = X_full[val_numbers] 
  14. X_train = np.delete(X_full, val_numbers,0) 
  15. y_val = y_full[:,val_numbers] 
  16. y_train = np.delete(y_full, val_numbers,1) 

在此驗證碼數據中,容易出現過擬合的現象,你可能會想到添加更多的新數據、 添加正則項等, 但這里使用數據增強的方法,特別是對于機器視覺的任務,數據增強技術尤為重要。

常用的數據增強操作:imgaug庫。imgaug是提供了各種圖像增強操作的python庫 https://github.com/aleju/imgaug。

imgaug幾乎包含了所有主流的數據增強的圖像處理操作, 增強方法詳見github

  1. # Sequential(C, R)  尺寸增加了5倍, 
  2. # 選取一系列子增強器C作用于每張圖片的位置,第二個參數表示是否對每個batch的圖片應用不同順序的Augmenter list     # rotate=(-8, 8)  旋轉 
  3. # iaa.CropAndPad  截取(crop)或者填充(pad),填充時,被填充區域為黑色。 
  4. # px: 想要crop(negative values)的或者pad(positive values)的像素點。 
  5. # (topright, bottom, left
  6. # 當pad_mode=constant的時候選擇填充的值 
  7. aug =iaa.Sequential([iaa.CropAndPad( 
  8.     px=((0, 10), (0, 35), (0, 10), (0, 35)), 
  9.     pad_mode=['edge'], 
  10.     pad_cval=1 
  11. ),iaa.Rotate(rotate=(-8,8))]) 
  12.  
  13. X_aug_train = None 
  14. y_aug_train = y_train 
  15. for i in range(40): 
  16.     X_aug = aug(images = X_train) 
  17.     if X_aug_train is not None: 
  18.         X_aug_train = np.concatenate([X_aug_train, X_aug], axis = 0) 
  19.         y_aug_train = np.concatenate([y_aug_train, y_train], axis = 1) 
  20.     else
  21.         X_aug_train = X_aug 

讓我們看看一些數據增強的訓練圖像。

  1. fig, ax = plt.subplots(nrows=2, ncols =5, figsize = (16,16)) 
  2. for i in range(10): 
  3.     index = np.random.randint(X_aug_train.shape[0]) 
  4.     ax[i//5][i%5].imshow(X_aug_train[index],cmap='gray'

 

這次使用函數式API創建模型,函數式API是創建模型的另一種方式,它具有更多的靈活性,包括創建更為復雜的模型。

需要定義inputs和outputs

  1. #函數式API模型創建 
  2. captcha = Input(shape=(50,200,channels)) 
  3. x = Conv2D(32, (5,5),padding='valid',activation='relu')(captcha) 
  4. x = MaxPooling2D((2,2),padding='same')(x) 
  5. x = Conv2D(64, (3,3),padding='same',activation='relu')(x) 
  6. x = MaxPooling2D((2,2),padding='same')(x) 
  7. x = Conv2D(128, (3,3),padding='same',activation='relu')(x) 
  8. maxpool = MaxPooling2D((2,2),padding='same')(x) 
  9. outputs = [] 
  10. for i in range(5): 
  11.     x = Conv2D(256, (3,3),padding='same',activation='relu')(maxpool) 
  12.     x = MaxPooling2D((2,2),padding='same')(x) 
  13.     x = Flatten()(x) 
  14.     x = Dropout(0.5)(x) 
  15.     x = BatchNormalization()(x) 
  16.     x = Dense(64, activation='relu')(x) 
  17.     x = Dropout(0.5)(x) 
  18.     x = BatchNormalization()(x) 
  19.     x = Dense(len_symbols , activation='softmax' , name=f'char_{i+1}')(x) 
  20.     outputs.append(x) 
  21.      
  22. model = Model(inputs = captcha , outputs=outputs) 
  23. # ReduceLROnPlateau更新學習率 
  24. reduce_lr = ReduceLROnPlateau(patience =3, factor = 0.5,verbose = 1) 
  25. model.compile(loss='categorical_crossentropy', optimizer=Adam(learning_rate=0.0005), metrics=["accuracy"]) 
  26. # EarlyStopping用于提前停止訓練的callbacks。具體地,可以達到當訓練集上的loss不在減小 
  27. earlystopping = EarlyStopping(monitor ="val_loss",   
  28.                              mode ="min", patience = 10, 
  29.                               min_delta = 1e-4, 
  30.                              restore_best_weights = True)  
  31.  
  32. history = model.fit(X_train, [y_train[i] for i in range(5)], batch_size=32, epochs=30, verbose=1, validation_data = (X_val, [y_val[i] for i in range(5)]), callbacks =[earlystopping,reduce_lr]) 

 

下面對model進行一個測試和評估。

  1. score = model.evaluate(X_test,[y_test[0], y_test[1], y_test[2], y_test[3], y_test[4]],verbose=1) 
  2. metrics = ['loss','char_1_loss''char_2_loss''char_3_loss''char_4_loss''char_5_loss''char_1_acc''char_2_acc''char_3_acc''char_4_acc''char_5_acc'
  3.  
  4. for i,j in zip(metrics, score): 
  5.     print(f'{i}: {j}'

具體輸出如下:

  1. 11/11 [==============================] - 0s 11ms/step - loss: 0.7246 - char_1_loss: 0.0682 - char_2_loss: 0.1066 - char_3_loss: 0.2730 - char_4_loss: 0.2636 - char_5_loss: 0.0132 - char_1_accuracy: 0.9844 - char_2_accuracy: 0.9657 - char_3_accuracy: 0.9408 - char_4_accuracy: 0.9626 - char_5_accuracy: 0.9938 
  2. loss: 0.7246273756027222 
  3. char_1_loss: 0.06818050146102905 
  4. char_2_loss: 0.10664034634828568 
  5. char_3_loss: 0.27299806475639343 
  6. char_4_loss: 0.26359987258911133 
  7. char_5_loss: 0.013208594173192978 
  8. char_1_acc: 0.9844236969947815 
  9. char_2_acc: 0.9657320976257324 
  10. char_3_acc: 0.940809965133667 
  11. char_4_acc: 0.9626168012619019 
  12. char_5_acc: 0.9937694668769836 

字母1到字母5的精確值都大于

繪制loss和score

  1. metrics_df = pd.DataFrame(history.history) 
  2.  
  3. columns = [col for col in metrics_df.columns if 'loss' in col and len(col)>8] 
  4.  
  5. fig = px.line(metrics_df, y = columns) 
  6. fig.show() 

  1. plt.figure(figsize=(15,8)) 
  2. plt.plot(history.history['loss']) 
  3. plt.plot(history.history['val_loss']) 
  4. plt.title('model loss'
  5. plt.ylabel('loss'
  6. plt.xlabel('epoch'
  7. plt.legend(['train''val'], loc='upper right',prop={'size': 10}) 
  8. plt.show() 

 

  1. # 預測數據 
  2. def predict(captcha): 
  3.     captcha = np.reshape(captcha , (1, 50,200,channels)) 
  4.     result = model.predict(captcha) 
  5.     result = np.reshape(result ,(5,len_symbols)) 
  6.     # 取出最大預測中的輸出 
  7.     label = ''.join([symbols[np.argmax(i)] for i in result]) 
  8.     return label 
  9.      
  10. predict(X_test[2]) 
  11. # 25277 

下面預測所有的數據

  1. actual_pred = [] 
  2.  
  3. for i in range(X_test.shape[0]): 
  4.     actual = ''.join([symbols[i] for i in (np.argmax(y_test[:, i],axis=1))]) 
  5.     pred =  predict(X_test[i]) 
  6.     actual_pred.append((actual, pred)) 
  7. print(actal_pred[:10]) 

輸出如下:

  1. [('n4b4m''n4b4m'), ('42nxy''42nxy'), ('25257''25277'), ('cewnm''cewnm'), ('w46ep''w46ep'), ('cdcb3''edcb3'), ('8gf7n''8gf7n'), ('nny5e''nny5e'), ('gm2c2''gm2c2'), ('g7fmc''g7fmc')] 
  1. sameCount = 0 
  2. diffCount = 0 
  3. letterDiff = {i:0 for i in range(5)} 
  4. incorrectness = {i:0 for i in range(1,6)} 
  5. for real, pred in actual_pred: 
  6.     # 預測和輸出相同 
  7.     if real == pred: 
  8.         sameCount += 1 
  9.     else
  10.         # 失敗 
  11.         diffCount += 1 
  12.         # 遍歷 
  13.         incorrectnessPoint = 0 
  14.         for i in range(5): 
  15.             if real[i] != pred[i]: 
  16.                 letterDiff[i] += 1 
  17.                 incorrectnessPoint += 1 
  18.         incorrectness[incorrectnessPoint] += 1 
  19.  
  20.  
  21. x = ['True predicted''False predicted'
  22. y = [sameCount, diffCount] 
  23.  
  24. fig = go.Figure(data=[go.Bar(x = x, y = y)]) 
  25. fig.show() 

在預測數據中,一共有287個數據預測正確。

在這里,我們可以看到出現錯誤到底是哪一個index。

  1. x1 = ["Character " + str(x) for x in range(1, 6)] 
  2.      
  3. fig = go.Figure(data=[go.Bar(x = x1, y = list(letterDiff.values()))]) 
  4. fig.show() 

  

為了計算每個單詞的錯誤數,繪制相關的條形圖。

  1. x2 = [str(x) + " incorrect" for x in incorrectness.keys()] 
  2. y2 = list(incorrectness.values()) 
  3.  
  4. fig = go.Figure(data=[go.Bar(x = x2, y = y2)]) 
  5. fig.show() 

 

下面繪制錯誤的驗證碼圖像,并標準正確和錯誤的區別。

  1. fig, ax = plt.subplots(nrows = 8, ncols=4,figsize = (16,20)) 
  2. count = 0 
  3. for i, (actual , pred) in enumerate(actual_pred): 
  4.     if actual != pred: 
  5.         img = X_test[i] 
  6.         try: 
  7.             ax[count//4][count%4].imshow(img, cmap = 'gray'
  8.             ax[count//4][count%4].title.set_text(pred + ' - ' + actual) 
  9.             count += 1 
  10.         except
  11.             pass 

 

責任編輯:姜華 來源: Python之王
相關推薦

2021-06-15 06:39:43

深度學習TensorFlowKeras API

2021-06-11 05:37:20

TensorFlow2深度學習Keras API

2013-06-19 10:19:59

2020-12-29 05:33:03

Serverless驗證碼架構

2021-06-10 18:24:59

反爬蟲驗證碼爬蟲

2023-10-27 08:53:13

Python驗證碼圖片識別

2024-01-29 08:32:10

Python驗證碼識別

2014-04-24 10:09:05

驗證碼C#

2021-07-22 10:25:07

JS驗證碼前端

2020-11-16 07:28:53

驗證碼

2009-02-09 14:17:36

2009-08-11 14:05:28

JSP驗證碼

2021-01-19 10:29:34

短信驗證碼密碼

2015-09-21 15:31:05

php實現驗證碼

2017-12-21 07:38:19

2022-02-11 07:10:15

驗證碼

2015-03-23 17:58:04

驗證碼倒計時并行

2022-05-11 07:41:31

Python驗證碼

2021-09-09 08:55:50

Python項目驗證碼
點贊
收藏

51CTO技術棧公眾號

中文字幕亚洲综合久久筱田步美 | 久久99精品久久久久久青青日本| 国产无遮无挡120秒| 亚洲婷婷伊人| 67194成人在线观看| 国产二区视频在线| 在线a人片免费观看视频| 国产成人综合网| 国产成人一区二区三区电影| 中文字幕影音先锋| 九九热精品视频在线观看| 欧美精品自拍偷拍动漫精品| 国产二级片在线观看| 久久99精品久久| 久久综合九色综合97婷婷| 国产亚洲短视频| 日本中文字幕久久看| tube国产麻豆| 国产欧美日韩免费观看| 精品美女在线播放| 男人添女人下面免费视频| 成年人国产在线观看| 中文字幕免费不卡在线| 精品国产福利| 99国产在线播放| 日韩福利视频网| 国内精品中文字幕| 欧美丰满熟妇bbbbbb| 色综合综合网| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 91在线|亚洲| 国产一卡二卡三卡| 一本久道久久久| 欧美交受高潮1| 少妇被躁爽到高潮无码文| 成人高清av| 亚洲精品午夜精品| 中文字幕影片免费在线观看| 精品成人18| 欧美理论片在线| 亚洲成人福利在线观看| 欧洲亚洲两性| 欧美日韩一区二区三区在线免费观看 | 色琪琪久久se色| 综合久久五月天| 国产jjizz一区二区三区视频| 亚洲盗摄视频| 精品视频中文字幕| aa一级黄色片| 亚洲人成网www| 亚洲老头老太hd| 人体私拍套图hdxxxx| 成人av综合网| 亚洲成人精品av| 国产视频精品视频| 久久97久久97精品免视看秋霞| 亚洲精品一区二区三区香蕉 | 正在播放亚洲精品| 日韩专区欧美专区| 国产精品一区二区三区在线播放| 一区二区视频网| 激情五月婷婷综合| 99久久久精品免费观看国产| 囯产精品久久久久久| 国产激情91久久精品导航| 亚洲最大av在线| 男人的天堂a在线| 91网页版在线| 神马影院午夜我不卡| 日本在线观看免费| 亚洲精品欧美专区| 久久久久久免费看| 欧美日韩免费看片| 欧美日韩中文另类| 女人扒开腿免费视频app| 88久久精品| 亚洲欧美日韩国产精品| 懂色av蜜桃av| 欧美福利视频| 欧美一区二区三区图| 中文字幕免费视频观看| 国产综合色视频| 国产精品久久久久久久久久久久冷| 午夜小视频免费| 国产精品网曝门| 国产一区 在线播放| 亚洲妇女成熟| 欧美精品在线一区二区| 精品一区二区三区四区五区六区| 精品国产乱码久久久久久果冻传媒| 色多多国产成人永久免费网站 | 国产欧美二区| 国产欧美 在线欧美| 成人久久精品人妻一区二区三区| 93久久精品日日躁夜夜躁欧美| 亚洲一区三区视频在线观看| 69av成人| 欧美一区二区在线不卡| 国产伦精品一区二区三区妓女| 日韩影院二区| 欧美一区二区.| www天堂在线| 国产日韩欧美制服另类| 欧美中文字幕在线观看视频| 日韩一区二区三区在线免费观看| 欧美一级午夜免费电影| 国产人妻一区二区| 中文字幕一区二区av| 国产99久久精品一区二区 夜夜躁日日躁 | 福利视频久久| 五月香视频在线观看| 黄色成人在线免费| 亚洲精品中文字幕乱码无线| 美女网站一区| 午夜精品久久久久久久99热 | 日韩av综合网站| 三级影片在线观看| 久久综合图片| 国偷自产av一区二区三区小尤奈| 国产在线看片| 欧美日韩精品免费| 亚洲性猛交xxxx乱大交| 一本色道久久综合| 国产精品9999久久久久仙踪林| 色开心亚洲综合| 色香蕉久久蜜桃| 中文字幕影片免费在线观看| 激情六月综合| 69堂成人精品视频免费| 日本三级视频在线播放| 欧美最猛黑人xxxxx猛交| 国产三级国产精品| 亚洲精选国产| 精品国产一区二区三区麻豆免费观看完整版 | 成人a在线视频| 1pondo在线播放免费| 一本大道久久a久久精品综合| 日韩精品人妻中文字幕有码| 欧美激情日韩| 91午夜在线播放| 国产婷婷视频在线 | 成人亚洲免费视频| 精品久久久亚洲| 国产精品视频免费观看www| 精品无吗乱吗av国产爱色| 精品久久久久久久久久ntr影视| 亚洲成人福利视频| 欧美色图首页| 成人免费在线一区二区三区| 成全电影大全在线观看| 亚洲第一男人天堂| 日本亚洲欧美在线| 99re这里都是精品| 国产麻花豆剧传媒精品mv在线| 欧美一区二区三区红桃小说| 国产91精品不卡视频| 日韩欧美在线观看一区二区| 欧美日韩中国免费专区在线看| 日本黄色片在线播放| 亚洲专区一区| 日韩中文字幕一区二区| 99久久婷婷国产综合精品首页| 自拍亚洲一区欧美另类| 国产精品视频a| 亚洲一区二区中文在线| 四虎精品一区二区| 性色一区二区| 亚洲人成网站在线播放2019| 国产乱码精品一区二区三区亚洲人 | 欧美丰满老妇熟乱xxxxyyy| 全国精品久久少妇| 成人短视频在线看| 国产成人福利av| 欧美制服第一页| 四虎久久免费| 精品国产91乱码一区二区三区| 黑人一级大毛片| 日本一区二区免费在线| 亚洲色图欧美自拍| 亚洲一区欧美激情| 亚洲美女网站18| 97视频一区| 国产福利精品在线| 污污的视频在线观看| 日韩精品视频中文在线观看| 艳妇乳肉豪妇荡乳av无码福利| 综合精品久久久| 丰满大乳奶做爰ⅹxx视频| 久久狠狠亚洲综合| 男女激情无遮挡| 久久香蕉国产| 久久99精品久久久久子伦| 黄色成人小视频| 国内精品小视频在线观看| √天堂资源地址在线官网| 亚洲成人av片| 91在线视频国产| 精品国产31久久久久久| 蜜臀av午夜精品久久| 99国产精品久久久久久久久久久| 亚洲一级片网站| 国产亚洲亚洲| 18禁裸男晨勃露j毛免费观看| 成人精品视频| 玛丽玛丽电影原版免费观看1977 | 中文在线观看免费网站| 欧美国产欧美综合| 国产二级一片内射视频播放| 狠狠色综合播放一区二区| 少妇性饥渴无码a区免费| 午夜电影亚洲| 中文字幕一区二区三区精彩视频| 精品一区三区| 黑人中文字幕一区二区三区| 91精品一区| 国产精品va在线| 手机av在线| 欧美—级高清免费播放| 老司机福利在线视频| 亚洲欧美综合v| 亚洲 欧美 激情 小说 另类| 日韩一级片在线观看| 一级爱爱免费视频| 欧洲色大大久久| 日本视频网站在线观看| 欧美日韩另类视频| 日韩黄色a级片| 亚洲一区中文日韩| 天天综合天天做| 国产精品久久久久一区| japanese中文字幕| 26uuu精品一区二区在线观看| 中文在线观看免费视频| 国产v日产∨综合v精品视频| 国产免费中文字幕| 蓝色福利精品导航| 亚洲最大成人在线观看| 日日噜噜夜夜狠狠视频欧美人| 国产欧美高清在线| 亚洲欧美大片| 欧美一级黄色片视频| 国产精品美女| 亚洲欧洲日产国码无码久久99| 99国产精品久久久久久久成人热| 人体内射精一区二区三区| 欧美大片一区| av无码久久久久久不卡网站| 欧美日韩p片| 国产高清www| 亚洲国产一区二区三区a毛片 | 日韩黄色片在线观看| 国产熟人av一二三区| 久久久久久黄| 天堂av在线网站| 蜜桃视频在线观看一区| 亚洲欧美偷拍另类| 激情综合色综合久久综合| 日韩不卡的av| 成人免费av在线| av在线网站观看| 欧美高清在线视频| 少妇视频一区二区| 亚洲永久免费视频| 久久久久久久久久免费视频 | 青青青国产在线视频| 蜜臀av性久久久久蜜臀av麻豆| 亚洲美女性囗交| 成人一区二区视频| 波多野结衣福利| 国产精品成人午夜| 九九热视频精品| 日韩欧美高清视频| 91 中文字幕| 精品国产乱码久久久久久久久| 完全免费av在线播放| 免费网站在线观看视频| 亚洲专区一区| 国产欧美一区二| 成人美女视频在线看| av女人的天堂| 亚洲欧美日韩国产综合| 天天综合网入口| 欧美精品欧美精品系列| 亚洲精品一区二区口爆| 日韩毛片中文字幕| av基地在线| 欧美精品国产精品日韩精品| 精品国模一区二区三区| 69堂成人精品视频免费| 久久99国产精一区二区三区| 糖心vlog在线免费观看| 久久精品欧洲| 师生出轨h灌满了1v1| 国产亚洲欧美中文| 免费视频网站www| 欧美综合一区二区| 手机看片福利在线| 久久久av网站| 欧美激情喷水| 国产精品免费一区二区三区在线观看 | 亚洲综合五月天婷婷丁香| 精品国产乱码久久久久久图片 | 黄色视屏网站在线免费观看| 另类美女黄大片| 性感美女一区二区在线观看| 丁香五月网久久综合| 视频在线不卡免费观看| 免费无码国产v片在线观看| 国产高清精品网站| 美国黄色特级片| 欧美视频免费在线观看| 丰满肉嫩西川结衣av| 北条麻妃99精品青青久久| 2022成人影院| 国产精品国产亚洲精品看不卡15| 午夜久久免费观看| 国产精品一区二区羞羞答答| 91在线观看高清| 国产一级二级三级视频| 6080亚洲精品一区二区| 超碰在线国产| 日本亚洲欧洲色| 亚洲黄页网站| 欧美老熟妇喷水| 波多野结衣中文字幕一区| 国产高潮流白浆| 4438x亚洲最大成人网| 成人精品一区二区三区免费| 国产成人高清激情视频在线观看 | 国产成人午夜精品影院观看视频| 国产精品免费在线视频| 欧美午夜视频网站| 欧美拍拍视频| 日韩美女视频免费在线观看| 宅男在线一区| 成人在线免费在线观看| 91网址在线看| 国产成人精品777777| 精品亚洲一区二区三区四区五区| 国产v日韩v欧美v| 狠狠色伊人亚洲综合网站色| 亚洲国内精品| 亚州av综合色区无码一区| 亚洲va国产天堂va久久en| 黄色一级a毛片| 国内偷自视频区视频综合 | 精品一区二区三区日韩| 国产精品嫩草影院俄罗斯| 欧美精品亚洲一区二区在线播放| 欧美极品视频| 91久久久一线二线三线品牌| 欧美99在线视频观看| 性猛交╳xxx乱大交| 亚洲电影中文字幕在线观看| 五月激情六月婷婷| 欧美一级电影久久| 日韩国产专区| 伊人五月天婷婷| 亚洲国产欧美日韩另类综合 | 18禁男女爽爽爽午夜网站免费| 久久午夜国产精品| 亚洲无码精品在线播放| 欧美xxxx做受欧美| 久久久伦理片| 免费观看成人在线视频| 中文字幕一区免费在线观看| 999久久久久久| 亚州成人av在线| 精品一区二区三区在线| 搡的我好爽在线观看免费视频| 亚洲成人资源在线| 国产色在线 com| 成人综合网网址| 日韩午夜免费视频| 久久久久久国产免费a片| 91精品国产综合久久精品麻豆 | 精人妻一区二区三区| 欧美日韩亚洲精品一区二区三区 | 九九久久久久99精品| 午夜精品福利影院| 中文字幕视频三区| 亚洲成人av一区| 在线播放日本| 精品产品国产在线不卡| 久久69国产一区二区蜜臀| 久久香蕉精品视频| 亚洲天堂男人天堂| 伊人久久噜噜噜躁狠狠躁| 国产欧美高清在线| 亚洲婷婷国产精品电影人久久| 熟妇高潮一区二区高潮| 成人久久一区二区| 老司机一区二区三区| 国产suv精品一区二区68| 亚洲精品天天看| 亚洲第一二区| 午夜免费福利在线| 亚洲va欧美va人人爽午夜| 欧美jizzhd69巨大| 久久99久久精品国产|