久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > Caffe >内容正文

Caffe

Caffe MNIST 手写数字识别(全面流程)

發布時間:2023/12/14 Caffe 91 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Caffe MNIST 手写数字识别(全面流程) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

目錄

1.下載MNIST數據集

2.生成MNIST圖片訓練、驗證、測試數據集

3.制作LMDB數據庫文件

4.準備LeNet-5網絡結構定義模型.prototxt文件

5.準備模型求解配置文件_solver.prototxt

6.開始訓練并生成日志文件

7.訓練日志畫圖(可視化一些訓練數據)plot_training_log.py

7.2日志解析成txt文件(若干數據字段可供畫圖)parse_log.py

8.模型測試和評估(用于選取較優模型)

8.1.測試模型準確率

8.2評估模型性能

9.手寫數字識別(模型部署)

10.數據增強再訓練

10.1訓練數據增加方法

10.2 接著上次訓練狀態再訓練

10.3在訓練的時候實時增加數據的方法:第三方實時擾動的Caffe層

11.caffe-augmentation

Realtime data augmentation

How to use


?

環境:

OS:Ubuntu 18.04LTS

caffe環境

?

1.下載MNIST數據集

這里使用Bengio組封裝好的MNIST數據集

(題外話:Bengio:Yoshua Bengio:孤軍奮戰的AI學者和他的烏托邦情懷)

在控制臺下輸入:

wget http://deeplearning.net/data/mnist/mnist.pkl.gz

在當前文件夾下得到mnist.pkl.gz壓縮文件。

2.生成MNIST圖片訓練、驗證、測試數據集

?mnist.pkl.gz這個壓縮包中就是mnist數據集的? 訓練集train、驗證集validate、測試集test采用pickle導出的文件被壓縮為gzip格式,所以采用python中的gzip模塊當成文件就可以讀取。其中每個數據集是一個元組,第一個元素存儲的是手寫數字的圖片:長度為28*28=728的一維浮點型號numpy數組,這個數組就算單一通道的灰度圖像,歸一化后的,最大值1代表白色,最小值0 代表黑色;元組的第二個元素代表的是圖片的對于數字標簽,是一個一維的整型numpy數組,按照下標位置對應圖片中的數字。

知道了以上數據結構信息,就可以使用Python腳本完成數據->圖片的轉換:

執行以下convert_mnist.py 腳本:(這個腳本在當前文件夾下創建一個mnist文件夾,然后在mnist文件夾下創建3個子文件夾:train、val、test;分別用來表示對應生存的訓練、驗證、測試數據集的圖片;

train下有5萬圖像、val和test文件下分別有1萬幅圖像。

# Load the dataset, 從壓縮文件讀取MNIST數據集: print('Loading data from mnist.pkl.gz ...') with gzip.open('mnist.pkl.gz', 'rb') as f:train_set, valid_set, test_set = pickle.load(f)#在當前路徑下生成mnist文件夾 imgs_dir = 'mnist' os.system('mkdir -p {}'.format(imgs_dir))#datasets是個字典 鍵-值對 dataname-dataset 對 datasets = {'train': train_set, 'val': valid_set, 'test': test_set} for dataname, dataset in datasets.items():print('Converting {} dataset ...'.format(dataname))data_dir = os.sep.join([imgs_dir, dataname]) #字符串拼接os.system('mkdir -p {}'.format(data_dir)) #生成對應的文件夾# i代表數據的序號,用zip()函數讀取對應的位置的圖片和標簽for i, (img, label) in enumerate(zip(*dataset)):filename = '{:0>6d}_{}.jpg'.format(i, label)filepath = os.sep.join([data_dir, filename])img = img.reshape((28, 28)) #將一維數組還原成二維數組#用pyplot保存可以自動歸一化生成像素值在[0,255]之間的灰度圖pyplot.imsave(filepath, img, cmap='gray')if (i+1) % 10000 == 0:print('{} images converted!'.format(i+1))

圖片的命令規則:第一個地段是6位數字是圖片的序號_第二個字段是該圖的標簽.jpg

3.制作LMDB數據庫文件

使用Caffe提高的工具:convert_imageset命令:

先看看該命令的幫助說明:

在控制臺執行以下命令:

/home/yang/caffe/build/tools/convert_imageset -help

得到一些說明,提取關鍵說明:

convert_imageset: Convert a set of images to the leveldb/lmdb format used as input for Caffe. Usage:convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME The ImageNet dataset for the training demo is athttp://www.image-net.org/download-images...Flags from tools/convert_imageset.cpp:-backend (The backend {lmdb, leveldb} for storing the result) type: stringdefault: "lmdb"-check_size (When this option is on, check that all the datum have the samesize) type: bool default: false-encode_type (Optional: What type should we encode the image as('png','jpg',...).) type: string default: ""-encoded (When this option is on, the encoded image will be save in datum)type: bool default: false-gray (When this option is on, treat images as grayscale ones) type: booldefault: false-resize_height (Height images are resized to) type: int32 default: 0-resize_width (Width images are resized to) type: int32 default: 0-shuffle (Randomly shuffle the order of images and their labels) type: booldefault: false

該命令需要一個圖片路徑和標簽的列表文件.txt;該文件的每一行是一幅圖片的全路徑 標簽?

比如:train.txt 局部如下:

mnist/train/033247_5.jpg 5
mnist/train/025404_9.jpg 9
mnist/train/026385_8.jpg 8
mnist/train/013058_5.jpg 5
mnist/train/006524_5.jpg 5

...

我們需要將第2步驟生成的train、val、test文件夾下的所有圖像的路徑和標簽生存三個train.txt、val.txt、test.txt文件:

執行如下的三條命令,分類生成train.txt;val.txt;test.txt文件

python gen_caffe_imglist.py mnist/train train.txt python gen_caffe_imglist.py mnist/val val.txt python gen_caffe_imglist.py mnist/test test.txt

其中gen_caffe_imglist.py腳本如下:傳入的第一個參數是包含圖片的文件路徑(相對路徑)第二個參數是 生存的.txt文件名(路徑)

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Mon Dec 3 18:35:55 2018 @author: yang """import os import sysinput_path = sys.argv[1].rstrip(os.sep) output_path = sys.argv[2]filenames = os.listdir(input_path)with open(output_path, 'w') as f:for filename in filenames:filepath = os.sep.join([input_path, filename])label = filename[:filename.rfind('.')].split('_')[1]line = '{} {}\n'.format(filepath, label)f.write(line) f.close()

這樣就生存了三個數據集圖片文件列表和對應的標簽了,下面就可以調用caffe提供的convert_imageset命令實現轉換了:

/home/yang/caffe/build/tools/convert_imageset ./ train.txt train_lmdb --gray --shuffle/home/yang/caffe/build/tools/convert_imageset ./ val.txt val_lmdb --gray --shuffle/home/yang/caffe/build/tools/convert_imageset ./ test.txt test_lmdb --gray --shuffle

然后就在當前文件夾下生成了3個LMDB文件夾了:train_lmdb;val_lmdb;test_lmdb;

4.準備LeNet-5網絡結構定義模型.prototxt文件

lenet_train_val.prototxt 這個文件是用來訓練模型用的;內容稍微區別于發布文件lenet.prototxt;

lenet_train_val.prototxt內容如下:(注意需要修改開頭的輸入數據lmdb文件的路徑)

name: "LeNet" layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {mean_value: 128scale: 0.00390625}data_param {source: "train_lmdb"batch_size: 64backend: LMDB} } layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TEST}transform_param {mean_value: 128scale: 0.00390625}data_param {source: "val_lmdb"batch_size: 100backend: LMDB} } layer {name: "conv1"type: "Convolution"bottom: "data"top: "conv1"param {lr_mult: 1}param {lr_mult: 2}convolution_param {num_output: 20kernel_size: 5stride: 1weight_filler {type: "xavier"}bias_filler {type: "constant"}} } layer {name: "pool1"type: "Pooling"bottom: "conv1"top: "pool1"pooling_param {pool: MAXkernel_size: 2stride: 2} } layer {name: "conv2"type: "Convolution"bottom: "pool1"top: "conv2"param {lr_mult: 1}param {lr_mult: 2}convolution_param {num_output: 50kernel_size: 5stride: 1weight_filler {type: "xavier"}bias_filler {type: "constant"}} } layer {name: "pool2"type: "Pooling"bottom: "conv2"top: "pool2"pooling_param {pool: MAXkernel_size: 2stride: 2} } layer {name: "ip1"type: "InnerProduct"bottom: "pool2"top: "ip1"param {lr_mult: 1}param {lr_mult: 2}inner_product_param {num_output: 500weight_filler {type: "xavier"}bias_filler {type: "constant"}} } layer {name: "relu1"type: "ReLU"bottom: "ip1"top: "ip1" } layer {name: "ip2"type: "InnerProduct"bottom: "ip1"top: "ip2"param {lr_mult: 1}param {lr_mult: 2}inner_product_param {num_output: 10weight_filler {type: "xavier"}bias_filler {type: "constant"}} } layer {name: "accuracy"type: "Accuracy"bottom: "ip2"bottom: "label"top: "accuracy"include {phase: TEST} } layer {name: "loss"type: "SoftmaxWithLoss"bottom: "ip2"bottom: "label"top: "loss" }

5.準備模型求解配置文件_solver.prototxt

lenet_solver.prototxt內容如下:

注意修改net定義文件的路徑(這里是相對路徑就是文件名)net: "lenet_train_val.prototxt"

和存儲訓練迭代中間結果的快照文件夾:snapshot_prefix: "snapshot" ,先在當前文件夾下創建一個快照文件夾snapshot

# The train/validate net protocol buffer definition net: "lenet_train_val.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of MNIST, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. test_iter: 100 # Carry out testing every 500 training iterations. test_interval: 500 # The base learning rate, momentum and the weight decay of the network. base_lr: 0.01 momentum: 0.9 weight_decay: 0.0005 # The learning rate policy lr_policy: "inv" gamma: 0.0001 power: 0.75 # Display every 100 iterations display: 100 # The maximum number of iterations max_iter: 36000 # snapshot intermediate results snapshot: 5000 snapshot_prefix: "snapshot" # solver mode: CPU or GPU solver_mode: GPU

6.開始訓練并生成日志文件

首先在當前文件夾下創建一個存儲日志的文件夾:trainLog文件夾

然后執行以下命令:

train命令需要帶 網絡模型定義文件lenet_solver.prototxt

其他參數可以通過-help 查看一下

/home/yang/caffe/build/tools/caffe train -solver lenet_solver.prototxt -gpu 0 -log_dir ./trainLog

訓練結束在快照文件夾下生成了不同迭代次數的求解狀態文件*.solverstate和網絡模型參數文件:*.caffemodel

7.訓練日志畫圖(可視化一些訓練數據)plot_training_log.py

caffe提供了可視化log的工具:

python /home/yang/caffe/tools/extra/plot_training_log.py

執行如下命令查看幫助:

python /home/yang/caffe/tools/extra/plot_training_log.py -help yang@yang-System-Product-Name:~/caffe/data/mnist_Bengio/trainLog$ python /home/yang/caffe/tools/extra/plot_training_log.py -help This script mainly serves as the basis of your customizations. Customization is a must. You can copy, paste, edit them in whatever way you want. Be warned that the fields in the training log may change in the future. You had better check the data files and change the mapping from field name tofield index in create_field_index before designing your own plots. Usage:./plot_training_log.py chart_type[0-7] /where/to/save.png /path/to/first.log ... Notes:1. Supporting multiple logs.2. Log file name must end with the lower-cased ".log". Supported chart types:0: Test accuracy vs. Iters1: Test accuracy vs. Seconds2: Test loss vs. Iters3: Test loss vs. Seconds4: Train learning rate vs. Iters5: Train learning rate vs. Seconds6: Train loss vs. Iters7: Train loss vs. Seconds

Caffe提供了可視化log的工具:在/home/yang/caffe/tools/extra 下面的polt_training_log.py.example 文件
把這個文件復制一份并命名為polt_training_log.py ,就可以用這個python腳本來畫圖:
這個腳本的輸入參數類型是:需要畫什么圖、生成的圖片存儲路徑與文件名、訓練得到log文件路徑

支持畫8中圖:
0:測試準確率 vs. 迭代次數
1:測試準確率 vs. 訓練時間(秒)
2:測試loss vs. 迭代次數
3:測試loss vs. 訓練時間
4:學習率lr vs. 迭代次數
5:學習率lr vs. 訓練時間
6:訓練loss vs.迭代次數
7: 訓練loss vs.訓練時間

在控制臺執行如下命令:生成以上8幅圖;

python /home/yang/caffe/tools/extra/plot_training_log.py 0 test_acc_vs_iters.png caffeLeNetTrain20181203.log python /home/yang/caffe/tools/extra/plot_training_log.py 1 test_acc_vs_time.png caffeLeNetTrain20181203.log python /home/yang/caffe/tools/extra/plot_training_log.py 2 test_loss_vs_iters.png caffeLeNetTrain20181203.log python /home/yang/caffe/tools/extra/plot_training_log.py 3 test_loss_vs_time.png caffeLeNetTrain20181203.log python /home/yang/caffe/tools/extra/plot_training_log.py 4 lr_vs_iters.png caffeLeNetTrain20181203.log python /home/yang/caffe/tools/extra/plot_training_log.py 5 lr_vs_time.png caffeLeNetTrain20181203.log python /home/yang/caffe/tools/extra/plot_training_log.py 6 train_loss_vs_iters.png caffeLeNetTrain20181203.log python /home/yang/caffe/tools/extra/plot_training_log.py 7 train_loss_vs_time.png caffeLeNetTrain20181203.log

如下是train的準確率-迭代次數圖:

7.2日志解析成txt文件(若干數據字段可供畫圖)parse_log.py

yang@yang-System-Product-Name:~/caffe/data/mnist_Bengio/trainLog$ python /home/yang/caffe/tools/extra/parse_log.py -h usage: parse_log.py [-h] [--verbose] [--delimiter DELIMITER]logfile_path output_dirParse a Caffe training log into two CSV files containing training and testing informationpositional arguments:logfile_path Path to log fileoutput_dir Directory in which to place output CSV filesoptional arguments:-h, --help show this help message and exit--verbose Print some extra info (e.g., output filenames)--delimiter DELIMITERColumn delimiter in output files (default: ',')

2.parse_log.py文件的作用就是:將你的日志文件分解成兩個txt(csv)文本文件。
終端輸入如下命令
python ./tools/extra/parse_log.py ./examples/myfile/a.log? ./examples/myfile/
便會在myfile/目錄下產生a.log.train 和a.log.test的文件,根據這兩個文件你可以使用matplotlib庫畫出你想要的圖像。

/home/yang/caffe/tools/extra/parse_log.py caffeLeNetTrain20181203.log ./


下面的指令解析caffeLeNetTrain20181203.log 并在當前文件夾./下生成 兩個.txt文件:caffeLeNetTrain20181203.log.train;caffeLeNetTrain20181203.log.test
這兩個文本文件包含這些字段:NumIters,Seconds,LearningRate,accuracy,loss

根據這兩個文件你可以使用matplotlib庫畫出你想要的圖像。

下面是訓練日志解析文件局部:caffeLeNetTrain20181203.log.train:

NumIters,Seconds,LearningRate,loss 0.0,0.155351,0.01,2.33102 100.0,0.482773,0.01,0.167176 200.0,0.806851,0.00992565,0.1556 300.0,1.1295,0.00985258,0.0575197 400.0,1.460222,0.00978075,0.0952922 500.0,1.897946,0.00971013,0.0684174 600.0,2.216532,0.00964069,0.0514046

下面是測試文件解析局部:caffeLeNetTrain20181203.log.test

NumIters,Seconds,LearningRate,accuracy,loss 0.0,0.129343,0.00971013,0.0919,2.33742 500.0,1.895023,0.00971013,0.976,0.0833776 1000.0,3.602925,0.00937411,0.9794,0.0671232 1500.0,5.299409,0.00906403,0.9853,0.0522081 2000.0,6.99157,0.00877687,0.9856,0.0475213 2500.0,8.691082,0.00851008,0.9859,0.0473052

利用Python的 pandas 和 matplotlib 可以畫出以上字段的各個字段的曲線:

import pandas as pd
import matplotlib.pyplot as plt

如下是畫出訓練和驗證(測試)的loss-NumIters迭代次數 曲線圖:

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Dec 4 10:53:28 2018@author: yang """import pandas as pd import matplotlib.pyplot as plt train_log = pd.read_csv("caffeLeNetTrain20181203.log.train") test_log = pd.read_csv("caffeLeNetTrain20181203.log.test") _, ax1 = plt.subplots() ax1.set_title("train loss and test loss") ax1.plot(train_log["NumIters"], train_log["loss"], alpha=0.5) ax1.plot(test_log["NumIters"], test_log["loss"], 'g') ax1.set_xlabel('iteration') ax1.set_ylabel('train loss') plt.legend(loc='upper left') ax2 = ax1.twinx() #ax2.plot(test_log["NumIters"], test_log["LearningRate"], 'r') #ax2.plot(test_log["NumIters"], test_log["LearningRate"], 'm') #ax2.set_ylabel('test LearningRate') #plt.legend(loc='upper right') plt.show() print('Done.')

?

?

?

?

8.模型測試和評估(用于選取較優模型)

8.1.測試模型準確率


訓練好后,就需要對模型進行測試和評估

其實在訓練過程中,每迭代500此,就已經在val_mldb上對模型進行了準確率的評估了;
不過MNIST除了驗證集還有測試集,對于模型的選擇,以測試集合為準進行評估(泛化能力)

對lenet_train_val.ptototxt 文件的頭部數據層部分稍作修改,刪去TRAIN層,將TEST層的數據源路徑改為test_lmdb文件路徑:

lenet_test.prototxt:

name: "LeNet" layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TEST}transform_param {mean_value: 128scale: 0.00390625}data_param {source: "test_lmdb"batch_size: 100backend: LMDB} }...

下面執行caffe的測試命令:并生成日志文件:

/home/yang/caffe/build/tools/caffe test -model lenet_test.prototxt -weights ./snapshot/lenet_solver_iter_5000.caffemodel -gpu 0 -iterations 100 -log_dir ./testLog

test命令參數說明:
-model 指定測試網絡定義文件lenet_test.prototxt
-weights 指定一個迭代次數下生成的權重文件lenet_solver_iter_5000.caffemodel(這個需要在所以這些權重文件下選取最優的一個)

-gpu 0 :使用0號GPU -iterations 100 -iterations參數與 lenet_solver.prototxt文件下的 test_iter參賽類似: # test_iter specifies how many forward passes the test should carry out. # In the case of MNIST, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. test_iter: 100

要遍歷所有的待測試圖像1萬張
需要滿足:-iterations * batch_size=10,000

batch_size是lenet_test.prototxt 中的測試數據層中指定的批處理的大小參數。

?

然后,在testLog文件夾下得到caffe.INFO的終端命令行輸出記錄? 和 ?
caffe.yang-System-Product-Name.yang.log.INFO.20181204-095911.3660 是測試日志文件;
caffe.INFO是終端屏幕輸出;

終端部分輸出如下(關注最后的Loss和accuracy):

... I1204 09:59:16.654608 3660 caffe.cpp:281] Running for 100 iterations. I1204 09:59:16.670982 3660 caffe.cpp:304] Batch 0, accuracy = 0.98 I1204 09:59:16.671051 3660 caffe.cpp:304] Batch 0, loss = 0.0443168 I1204 09:59:16.672643 3660 caffe.cpp:304] Batch 1, accuracy = 1 I1204 09:59:16.672709 3660 caffe.cpp:304] Batch 1, loss = 0.0175841 I1204 09:59:16.674376 3660 caffe.cpp:304] Batch 2, accuracy = 0.99 I1204 09:59:16.674437 3660 caffe.cpp:304] Batch 2, loss = 0.0308315 ... I1204 09:59:16.795164 3671 data_layer.cpp:73] Restarting data prefetching from start. I1204 09:59:16.795873 3660 caffe.cpp:304] Batch 97, accuracy = 0.98 I1204 09:59:16.795882 3660 caffe.cpp:304] Batch 97, loss = 0.0427303 I1204 09:59:16.797765 3660 caffe.cpp:304] Batch 98, accuracy = 0.97 I1204 09:59:16.797775 3660 caffe.cpp:304] Batch 98, loss = 0.107767 I1204 09:59:16.798722 3660 caffe.cpp:304] Batch 99, accuracy = 0.99 I1204 09:59:16.798730 3660 caffe.cpp:304] Batch 99, loss = 0.0540964 I1204 09:59:16.798734 3660 caffe.cpp:309] Loss: 0.0391683 I1204 09:59:16.798739 3660 caffe.cpp:321] accuracy = 0.9879 I1204 09:59:16.798746 3660 caffe.cpp:321] loss = 0.0391683 (* 1 = 0.0391683 loss)

可以看出程序對每一個Batch的準確率都進行了計算,最后得到了一個總的準確率;
當訓練生成的存檔模型不是很多的時候,可以對照驗證數據Loss 小,accuracy高的區域,手動人工選取一個最優的模型;
如是模型存檔快照比較多,可以利用測試數據集進行挑選模型,寫腳本來遍歷所有的模型,得到一個Loss小,accuracy高的模型;
一般而言,當數據多時,測試集合的loss最小和accuracy最高的 模型就越有可能是同一個,如果不是同一個,通常選取loss最小的模型泛化能力會好一些;

其實,訓練集、驗證集、測試集都只是對真是數據分布情況的采樣,
從大數據量挑選的模型比從小數據量更有信心而已了;

下面在訓練日志文件夾下 利用 7.2節中的parse_log.py解析訓練日志caffe.yang-System-Product-Name.yang.log.INFO.20181203-184414.8457文件得到的 驗證集合(TEST)的csv文件:

利用如下Python腳本畫出: val_loss-iterNums?? val_accuracy-iterNums 畫在一張圖中:

val_loss_val_accuracy.py 如下:

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Dec 4 10:53:28 2018@author: yang """import pandas as pd import matplotlib.pyplot as plt val_log = pd.read_csv("caffeLeNetTrain20181203.log.test") #驗證數據集 _, ax1 = plt.subplots() ax1.set_title("val loss and val accuracy") ax1.plot(val_log["NumIters"], val_log["loss"], 'g') ax1.set_xlabel('iterations') ax1.set_ylabel('val loss') plt.legend(loc='center left') ax2 = ax1.twinx() ax2.plot(val_log["NumIters"], val_log["accuracy"], 'm') ax2.set_ylabel('val accuracy') plt.legend(loc='center right') plt.show() print('Done.')

得到:val_loss_val_accuracy_vs_iterNums1.png

隨著迭代次數的增加,模型在驗證集上的loss下降,accuracy上升;所以可以選擇35000次的模型進行部署;

我們這里在測試集上測試一下35000次迭代生成的模型快照,與上面的5000次迭代生成的模型快照作對比。

在終端輸入:

/home/yang/caffe/build/tools/caffe test -model lenet_test.prototxt -weights ./snapshot/lenet_solver_iter_35000.caffemodel -gpu 0 -iterations 100 -log_dir ./testLog

查看輸出的最后三行:

I1204 14:58:12.377961 6560 caffe.cpp:309] Loss: 0.0267361 I1204 14:58:12.377966 6560 caffe.cpp:321] accuracy = 0.9904 I1204 14:58:12.377972 6560 caffe.cpp:321] loss = 0.0267361 (* 1 = 0.0267361 loss)

發現Loss 和accuracy確實比5000次迭代的更優了!

8.2評估模型性能

評估模型性能主要是時間和空間占用情況,即評估模型的一次前向傳播所需要的運行時間和內存占用情況:

Caffe支持此評估,使用Caffe提供的工具:

/home/yang/caffe/build/tools/caffe time 命令

只要有模型網絡描述文件.prototxt就可以:

在Caffe主目錄 examples/mnist/下得到 lenet.prototxt文件,然后執行如下命令:

/home/yang/caffe/build/tools/caffe time -model lenet.prototxt -gpu 0

部分輸出如下:

yang@yang-System-Product-Name:~/caffe/data/mnist_Bengio$ /home/yang/caffe/build/tools/caffe time -model lenet.prototxt -gpu 0 /home/yang/caffe/build/tools/caffe: /home/yang/anaconda2/lib/libtiff.so.5: no version information available (required by /usr/local/lib/libopencv_imgcodecs.so.3.4) I1204 15:12:33.080821 6687 caffe.cpp:339] Use GPU with device ID 0 I1204 15:12:33.266084 6687 net.cpp:53] Initializing net from parameters: ...I1204 15:12:33.266204 6687 layer_factory.hpp:77] Creating layer data I1204 15:12:33.266217 6687 net.cpp:86] Creating Layer data I1204 15:12:33.266227 6687 net.cpp:382] data -> data I1204 15:12:33.275761 6687 net.cpp:124] Setting up data I1204 15:12:33.275779 6687 net.cpp:131] Top shape: 64 1 28 28 (50176) I1204 15:12:33.275794 6687 net.cpp:139] Memory required for data: 200704 I1204 15:12:33.275801 6687 layer_factory.hpp:77] Creating layer conv1 I1204 15:12:33.275822 6687 net.cpp:86] Creating Layer conv1 I1204 15:12:33.275828 6687 net.cpp:408] conv1 <- data I1204 15:12:33.275837 6687 net.cpp:382] conv1 -> conv1 I1204 15:12:33.680294 6687 net.cpp:124] Setting up conv1 I1204 15:12:33.680315 6687 net.cpp:131] Top shape: 64 20 24 24 (737280) I1204 15:12:33.680322 6687 net.cpp:139] Memory required for data: 3149824 ... I1204 15:12:33.685878 6687 net.cpp:244] This network produces output prob I1204 15:12:33.685887 6687 net.cpp:257] Network initialization done. I1204 15:12:33.685910 6687 caffe.cpp:351] Performing Forward I1204 15:12:33.703292 6687 caffe.cpp:356] Initial loss: 0 I1204 15:12:33.703311 6687 caffe.cpp:357] Performing Backward I1204 15:12:33.703316 6687 caffe.cpp:365] *** Benchmark begins *** I1204 15:12:33.703320 6687 caffe.cpp:366] Testing for 50 iterations. I1204 15:12:33.705480 6687 caffe.cpp:394] Iteration: 1 forward-backward time: 2.14998 ms. I1204 15:12:33.707129 6687 caffe.cpp:394] Iteration: 2 forward-backward time: 1.63258 ms. I1204 15:12:33.709730 6687 caffe.cpp:394] Iteration: 3 forward-backward time: 2.58979 ms. ... I1204 15:12:33.783918 6687 caffe.cpp:397] Average time per layer: I1204 15:12:33.783921 6687 caffe.cpp:400] data forward: 0.0011584 ms. I1204 15:12:33.783926 6687 caffe.cpp:403] data backward: 0.00117824 ms. I1204 15:12:33.783929 6687 caffe.cpp:400] conv1 forward: 0.449037 ms. I1204 15:12:33.783933 6687 caffe.cpp:403] conv1 backward: 0.251798 ms. I1204 15:12:33.783936 6687 caffe.cpp:400] pool1 forward: 0.0626419 ms. I1204 15:12:33.783941 6687 caffe.cpp:403] pool1 backward: 0.00116608 ms. I1204 15:12:33.783943 6687 caffe.cpp:400] conv2 forward: 0.194311 ms. I1204 15:12:33.783947 6687 caffe.cpp:403] conv2 backward: 0.190176 ms. I1204 15:12:33.783965 6687 caffe.cpp:400] pool2 forward: 0.0201024 ms. I1204 15:12:33.783969 6687 caffe.cpp:403] pool2 backward: 0.00117952 ms. I1204 15:12:33.783972 6687 caffe.cpp:400] ip1 forward: 0.0706387 ms. I1204 15:12:33.783977 6687 caffe.cpp:403] ip1 backward: 0.0717856 ms. I1204 15:12:33.783980 6687 caffe.cpp:400] relu1 forward: 0.00906752 ms. I1204 15:12:33.783984 6687 caffe.cpp:403] relu1 backward: 0.0011584 ms. I1204 15:12:33.783988 6687 caffe.cpp:400] ip2 forward: 0.0247597 ms. I1204 15:12:33.783993 6687 caffe.cpp:403] ip2 backward: 0.0221478 ms. I1204 15:12:33.783996 6687 caffe.cpp:400] prob forward: 0.0119437 ms. I1204 15:12:33.784000 6687 caffe.cpp:403] prob backward: 0.00113536 ms. I1204 15:12:33.784006 6687 caffe.cpp:408] Average Forward pass: 0.938644 ms. I1204 15:12:33.784010 6687 caffe.cpp:410] Average Backward pass: 0.637078 ms. I1204 15:12:33.784014 6687 caffe.cpp:412] Average Forward-Backward: 1.61356 ms. I1204 15:12:33.784021 6687 caffe.cpp:414] Total Time: 80.678 ms. I1204 15:12:33.784029 6687 caffe.cpp:415] *** Benchmark ends ***

我的電腦的GPU是NVIDIA? GeForce GTX 960 2G顯存的,執行一次Lenet的前向傳播,平均時間不到1ms

Average Forward pass: 0.938644 ms.

再來測試一下CPU下運行的時間:去掉以上命令中的 -gpu 0參數

輸入:

/home/yang/caffe/build/tools/caffe time -model lenet.prototxt

結尾輸出:

I1204 15:18:10.153908 6768 caffe.cpp:397] Average time per layer: I1204 15:18:10.153916 6768 caffe.cpp:400] data forward: 0.00064 ms. I1204 15:18:10.153939 6768 caffe.cpp:403] data backward: 0.0009 ms. I1204 15:18:10.153951 6768 caffe.cpp:400] conv1 forward: 2.21126 ms. I1204 15:18:10.153965 6768 caffe.cpp:403] conv1 backward: 3.18376 ms. I1204 15:18:10.153981 6768 caffe.cpp:400] pool1 forward: 2.59676 ms. I1204 15:18:10.153996 6768 caffe.cpp:403] pool1 backward: 0.0006 ms. I1204 15:18:10.154012 6768 caffe.cpp:400] conv2 forward: 6.02428 ms. I1204 15:18:10.154027 6768 caffe.cpp:403] conv2 backward: 4.72778 ms. I1204 15:18:10.154043 6768 caffe.cpp:400] pool2 forward: 1.6211 ms. I1204 15:18:10.154058 6768 caffe.cpp:403] pool2 backward: 0.00072 ms. I1204 15:18:10.154073 6768 caffe.cpp:400] ip1 forward: 0.3852 ms. I1204 15:18:10.154086 6768 caffe.cpp:403] ip1 backward: 0.2337 ms. I1204 15:18:10.154150 6768 caffe.cpp:400] relu1 forward: 0.04076 ms. I1204 15:18:10.154165 6768 caffe.cpp:403] relu1 backward: 0.0005 ms. I1204 15:18:10.154181 6768 caffe.cpp:400] ip2 forward: 0.03236 ms. I1204 15:18:10.154196 6768 caffe.cpp:403] ip2 backward: 0.01712 ms. I1204 15:18:10.154213 6768 caffe.cpp:400] prob forward: 0.04284 ms. I1204 15:18:10.154230 6768 caffe.cpp:403] prob backward: 0.02084 ms. I1204 15:18:10.154249 6768 caffe.cpp:408] Average Forward pass: 12.9634 ms. I1204 15:18:10.154259 6768 caffe.cpp:410] Average Backward pass: 8.19254 ms. I1204 15:18:10.154268 6768 caffe.cpp:412] Average Forward-Backward: 21.2 ms. I1204 15:18:10.154278 6768 caffe.cpp:414] Total Time: 1060 ms. I1204 15:18:10.154287 6768 caffe.cpp:415] *** Benchmark ends ***

本臺計算機的CPU是Intel? Core? i7-6700K CPU @ 4.00GHz × 8 ,Caffe的基本線性代數子庫使用的是OpenBLAS

平均一次前向傳播需要 12.96ms的時間,遠遠比GPU的運算時間慢;

?

9.手寫數字識別(模型部署)

有了訓練好的模型,我們就可以用來識別手寫數字了,這里測試用的是test數據集的圖片和之前生成的test.txt文件列表:

下面是用來完成以上任務的recognize_digit.py

recognize_digit.py如下:

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Dec 4 15:29:44 2018@author: yang """import sys sys.path.append('/home/yang/caffe/python') import numpy as np import cv2 import caffeMEAN = 128 SCALE = 0.00390625imglist = sys.argv[1] #第一個參數輸入test.txt 文件路徑caffe.set_mode_gpu() caffe.set_device(0) net = caffe.Net('lenet.prototxt', './snapshot/lenet_solver_iter_36000.caffemodel', caffe.TEST) net.blobs['data'].reshape(1, 1, 28, 28)with open(imglist, 'r') as f:line = f.readline()while line:imgpath, label = line.split()line = f.readline()image = cv2.imread(imgpath, cv2.IMREAD_GRAYSCALE).astype(np.float) - MEANimage *= SCALEnet.blobs['data'].data[...] = imageoutput = net.forward()pred_label = np.argmax(output['prob'][0])print('Predicted digit for {} is {}'.format(imgpath, pred_label))

?

在終端執行:因為1萬張圖片太多,所以將屏幕的標準輸出重定向lenet_model_test.txt文件:

test.txt 參數是 測試數據集的文件路徑 和標簽的列表

python recognize_digit.py test.txt >& lenet_model_test.txt

如下是部分預測輸出結果:

Predicted digit for mnist/test/005120_2.jpg is 2 Predicted digit for mnist/test/006110_1.jpg is 1 Predicted digit for mnist/test/004019_6.jpg is 6 Predicted digit for mnist/test/009045_7.jpg is 7 Predicted digit for mnist/test/004194_4.jpg is 4 Predicted digit for mnist/test/006253_7.jpg is 7 Predicted digit for mnist/test/000188_0.jpg is 0 Predicted digit for mnist/test/001068_8.jpg is 8 Predicted digit for mnist/test/007297_8.jpg is 8 Predicted digit for mnist/test/000003_0.jpg is 0 Predicted digit for mnist/test/009837_7.jpg is 7 Predicted digit for mnist/test/000093_3.jpg is 3

?

10.數據增強再訓練

訓練數據的增加參考:https://github.com/frombeijingwithlove/dlcv_for_beginners/tree/master/chap6/data_augmentation

這里因為Mnist是灰度圖,所以我們就使用平移和旋轉來增加數據:

10.1訓練數據增加方法

在工作路徑文件夾下將以上鏈接的run_augmentation.py 和 image_augmentation.py 下載下來:

run_augmentation.py如下:

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Dec 4 16:00:27 2018@author: yang """import os import argparse import random import math from multiprocessing import Process, cpu_countimport cv2import image_augmentation as iadef parse_args():parser = argparse.ArgumentParser(description='A Simple Image Data Augmentation Tool',formatter_class=argparse.ArgumentDefaultsHelpFormatter)parser.add_argument('input_dir',help='Directory containing images')parser.add_argument('output_dir',help='Directory for augmented images')parser.add_argument('num',help='Number of images to be augmented',type=int)parser.add_argument('--num_procs',help='Number of processes for paralleled augmentation',type=int, default=cpu_count())parser.add_argument('--p_mirror',help='Ratio to mirror an image',type=float, default=0.5)parser.add_argument('--p_crop',help='Ratio to randomly crop an image',type=float, default=1.0)parser.add_argument('--crop_size',help='The ratio of cropped image size to original image size, in area',type=float, default=0.8)parser.add_argument('--crop_hw_vari',help='Variation of h/w ratio',type=float, default=0.1)parser.add_argument('--p_rotate',help='Ratio to randomly rotate an image',type=float, default=1.0)parser.add_argument('--p_rotate_crop',help='Ratio to crop out the empty part in a rotated image',type=float, default=1.0)parser.add_argument('--rotate_angle_vari',help='Variation range of rotate angle',type=float, default=10.0)parser.add_argument('--p_hsv',help='Ratio to randomly change gamma of an image',type=float, default=1.0)parser.add_argument('--hue_vari',help='Variation of hue',type=int, default=10)parser.add_argument('--sat_vari',help='Variation of saturation',type=float, default=0.1)parser.add_argument('--val_vari',help='Variation of value',type=float, default=0.1)parser.add_argument('--p_gamma',help='Ratio to randomly change gamma of an image',type=float, default=1.0)parser.add_argument('--gamma_vari',help='Variation of gamma',type=float, default=2.0)args = parser.parse_args()args.input_dir = args.input_dir.rstrip('/')args.output_dir = args.output_dir.rstrip('/')return argsdef generate_image_list(args):filenames = os.listdir(args.input_dir)num_imgs = len(filenames)num_ave_aug = int(math.floor(args.num/num_imgs))rem = args.num - num_ave_aug*num_imgslucky_seq = [True]*rem + [False]*(num_imgs-rem)random.shuffle(lucky_seq)img_list = [(os.sep.join([args.input_dir, filename]), num_ave_aug+1 if lucky else num_ave_aug)for filename, lucky in zip(filenames, lucky_seq)]random.shuffle(img_list) # in case the file size are not uniformly distributedlength = float(num_imgs) / float(args.num_procs)indices = [int(round(i * length)) for i in range(args.num_procs + 1)]return [img_list[indices[i]:indices[i + 1]] for i in range(args.num_procs)]def augment_images(filelist, args):for filepath, n in filelist:img = cv2.imread(filepath)filename = filepath.split(os.sep)[-1]dot_pos = filename.rfind('.')imgname = filename[:dot_pos]ext = filename[dot_pos:]print('Augmenting {} ...'.format(filename))for i in range(n):img_varied = img.copy()varied_imgname = '{}_{:0>3d}_'.format(imgname, i)if random.random() < args.p_mirror:img_varied = cv2.flip(img_varied, 1)varied_imgname += 'm'if random.random() < args.p_crop:img_varied = ia.random_crop(img_varied,args.crop_size,args.crop_hw_vari)varied_imgname += 'c'if random.random() < args.p_rotate:img_varied = ia.random_rotate(img_varied,args.rotate_angle_vari,args.p_rotate_crop)varied_imgname += 'r'if random.random() < args.p_hsv:img_varied = ia.random_hsv_transform(img_varied,args.hue_vari,args.sat_vari,args.val_vari)varied_imgname += 'h'if random.random() < args.p_gamma:img_varied = ia.random_gamma_transform(img_varied,args.gamma_vari)varied_imgname += 'g'output_filepath = os.sep.join([args.output_dir,'{}{}'.format(varied_imgname, ext)])cv2.imwrite(output_filepath, img_varied)def main():args = parse_args()params_str = str(args)[10:-1]if not os.path.exists(args.output_dir):os.mkdir(args.output_dir)print('Starting image data augmentation for {}\n''with\n{}\n'.format(args.input_dir, params_str))sublists = generate_image_list(args)processes = [Process(target=augment_images, args=(x, args, )) for x in sublists]for p in processes:p.start()for p in processes:p.join()print('\nDone!')if __name__ == '__main__':main()

image_augmentation.py 如下:

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Dec 4 15:59:29 2018@author: yang """import numpy as np import cv2crop_image = lambda img, x0, y0, w, h: img[y0:y0+h, x0:x0+w]def random_crop(img, area_ratio, hw_vari):h, w = img.shape[:2]hw_delta = np.random.uniform(-hw_vari, hw_vari)hw_mult = 1 + hw_deltaw_crop = int(round(w*np.sqrt(area_ratio*hw_mult)))if w_crop > w - 2:w_crop = w - 2h_crop = int(round(h*np.sqrt(area_ratio/hw_mult)))if h_crop > h - 2:h_crop = h - 2x0 = np.random.randint(0, w-w_crop-1)y0 = np.random.randint(0, h-h_crop-1)return crop_image(img, x0, y0, w_crop, h_crop)def rotate_image(img, angle, crop):h, w = img.shape[:2]angle %= 360M_rotate = cv2.getRotationMatrix2D((w/2, h/2), angle, 1)img_rotated = cv2.warpAffine(img, M_rotate, (w, h))if crop:angle_crop = angle % 180if angle_crop > 90:angle_crop = 180 - angle_croptheta = angle_crop * np.pi / 180.0hw_ratio = float(h) / float(w)tan_theta = np.tan(theta)numerator = np.cos(theta) + np.sin(theta) * tan_thetar = hw_ratio if h > w else 1 / hw_ratiodenominator = r * tan_theta + 1crop_mult = numerator / denominatorw_crop = int(round(crop_mult*w))h_crop = int(round(crop_mult*h))x0 = int((w-w_crop)/2)y0 = int((h-h_crop)/2)img_rotated = crop_image(img_rotated, x0, y0, w_crop, h_crop)return img_rotateddef random_rotate(img, angle_vari, p_crop):angle = np.random.uniform(-angle_vari, angle_vari)crop = False if np.random.random() > p_crop else Truereturn rotate_image(img, angle, crop)def hsv_transform(img, hue_delta, sat_mult, val_mult):img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV).astype(np.float)img_hsv[:, :, 0] = (img_hsv[:, :, 0] + hue_delta) % 180img_hsv[:, :, 1] *= sat_multimg_hsv[:, :, 2] *= val_multimg_hsv[img_hsv > 255] = 255return cv2.cvtColor(np.round(img_hsv).astype(np.uint8), cv2.COLOR_HSV2BGR)def random_hsv_transform(img, hue_vari, sat_vari, val_vari):hue_delta = np.random.randint(-hue_vari, hue_vari)sat_mult = 1 + np.random.uniform(-sat_vari, sat_vari)val_mult = 1 + np.random.uniform(-val_vari, val_vari)return hsv_transform(img, hue_delta, sat_mult, val_mult)def gamma_transform(img, gamma):gamma_table = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)]gamma_table = np.round(np.array(gamma_table)).astype(np.uint8)return cv2.LUT(img, gamma_table)def random_gamma_transform(img, gamma_vari):log_gamma_vari = np.log(gamma_vari)alpha = np.random.uniform(-log_gamma_vari, log_gamma_vari)gamma = np.exp(alpha)return gamma_transform(img, gamma)

我們使用上面兩個Python腳本文件,來增強 minst/train 文件夾下的5W萬張圖,生存25萬張圖,與之前的5萬合并的到30萬張圖,即將數據集增加為原來的6倍!

關閉除了旋轉和平移以外的一切選項:旋轉范圍設為正負15度:

在終端輸入如下命令:

python run_augmentation.py mnist/train/ mnist/augmented 250000 --rotate_angle=15 --p_mirror=0 --p_hsv=0 --p_gamma=0

這樣會在mnist/augmented/ 文件夾下生成25萬張增加平移和旋轉繞動后的圖,并且這些圖的命名規則也與gen_caffe_imglist.py的解析規則一致,接下來生存這些圖的文件和標簽列表文件:

python gen_caffe_imglist.py mnist/augmented augmented.txt

然后將訓練集和新增加的集的文件與標簽文件列表合并成:train_aug.txt:

cat train.txt augmented.txt > train_aug.txt

然后為這個文件train_aug.txt單獨建立一個lmdb文件夾:

因為擾動后的圖片分辨率不一定是28*28了,所以必須在這個使用 --resize_widrh=28 和 --resize_height=28 ,把輸入lmdb的圖像尺寸固定為28*28;另外使用--shuffle將輸入順序大散;

/home/yang/caffe/build/tools/convert_imageset ./ train_aug.txt train_aug_lmdb --resize_width=28 --resize_height=28 --gray --shuffle

然后將lenet_train_val.prototxt 復制一份 命名為lenet_train_val_aug.prototxt;

將lenet_train_val_aug.prototxt的輸入訓練數據層的數據原lmdb文件路徑改為:

? source: "train_aug_lmdb"

然后在工作文件夾下再創建 snapshot_aug文件夾,和一個train_aug_Log 存儲日志信息的文件夾;

然后再復制一份lenet_solver.prototxt文件,命名為lenet_aug_solver.prototxt文件:

修該lenet_aug_solver.prototxt 文件的

net 參數為:net: "lenet_train_val_aug.prototxt"

snapshot參數為:snapshot_prefix: "snapshot_aug"

然后就可以開始訓練了:訓練日志輸出到train_aug_Log文件夾下:

/home/yang/caffe/build/tools/caffe train -solver lenet_aug_solver.prototxt -gpu 0 -log_dir ./train_aug_Log

最后幾行的輸出:

I1204 17:12:28.571137 5109 solver.cpp:414] Test net output #0: accuracy = 0.9911 I1204 17:12:28.571157 5109 solver.cpp:414] Test net output #1: loss = 0.0319057 (* 1 = 0.0319057 loss)

然后到train_aug_Log文件夾下將log文件的名字修改為mnist_train_with_augmentation.log;

沒有增強數據前的訓練日志在 trainLog文件夾下的mnist_train.log;

然后使用Caffe的plot_training_log.py 工具 畫出這兩次訓練的一些對比圖:

python /home/yang/caffe/tools/extra/plot_training_log.py

下面的指令畫這兩次訓練的驗證集的 accu vs iters圖:

python /home/yang/caffe/tools/extra/plot_training_log.py 0 test_acc_vs_iters.png trainLog/mnist_train.log train_aug_Log/mnist_train_with_augmentation.log

下面的指令畫出這兩次訓練的在驗證集合上的 loss vs iters 圖;

python /home/yang/caffe/tools/extra/plot_training_log.py 2 test_loss_vs_iters.png trainLog/mnist_train.log train_aug_Log/mnist_train_with_augmentation.log

10.2 接著上次訓練狀態再訓練

原來的訓練數據只有5萬張,每個batch大小為50的情況下,迭代1000次就是一代(epoch);

增加后的數據量為30萬張圖,(50*6000=30W)迭代6000次才是一代,迭代到了36000次也才6代;

如果希望接著36000次迭代的狀態繼續訓練,訓練到20代,即最大迭代次數為120000

120000/6000=20(epooch)

將lenet_aug_solver.prototxt文件的 最大迭代次數:

max_iter: 36000

改為:max_iter: 120000

然后執行如下命令,就能接著36000次的訓練狀態繼續訓練:

python /home/yang/caffe/tools/caffe train -solver lenet_aug_solver.prototxt -snapshot_aug lenet_aug_solver_iter_36000.solverstate -gpu 0

/home/yang/caffe/build/tools/caffe train -solver lenet_aug_solver.prototxt -snapshot snapshot_aug/lenet_aug_solver_iter_36000.solverstate -gpu 0 -log_dir ./train_aug_Log

訓練輸出局部:

I1204 18:44:26.388453 6406 solver.cpp:414] Test net output #0: accuracy = 0.9911 I1204 18:44:26.388473 6406 solver.cpp:414] Test net output #1: loss = 0.0305995 (* 1 = 0.0305995 loss) I1204 18:44:26.388478 6406 solver.cpp:332] Optimization Done. I1204 18:44:26.388481 6406 caffe.cpp:250] Optimization Done.

下面畫一下accuracy-iterNums:

python /home/yang/caffe/tools/extra/plot_training_log.py 0 test_acc_vs_iters_120000.png train_aug_Log/mnist_train_augmentation_iter_120000.log

loss-iterNums:

python /home/yang/caffe/tools/extra/plot_training_log.py 2 test_loss_vs_iters_120000.png train_aug_Log/mnist_train_augmentation_iter_120000.log

10.3在訓練的時候實時增加數據的方法:第三方實時擾動的Caffe層

注意:這樣直接在原始樣本的基礎上做擾動來增加數據只是數據增加的一種方式之一,并不是最好的方案,因為增加的數據量有限,并且還要占用額外的硬盤存儲空間;

最好的方式是在訓練的時候對數據進行實時的擾動,這樣等效于無限多的隨即擾動。

Caffe的數據層已經自帶了最基礎的擾動方式:隨即裁剪和鏡像;

Github上有一些開源的第三方實現 實時擾動的Caffe層,會包含各種常見的數據擾動方式,在github上搜索:caffe augmentation:

比如:

https://github.com/kevinlin311tw/caffe-augmentation

11.caffe-augmentation

Caffe with real-time data augmentation

Data augmentation is a simple yet effective way to enrich training data. However, we don't want to re-create a dataset (such as ImageNet) with more than millions of images every time when we change our augmentation strategy. To address this problem, this project provides real-time training data augmentation. During training, caffe will augment training data with random combination of different geometric transformations (scaling, rotation, cropping), image variations (blur, sharping, JPEG compression), and lighting adjustments.

?

Realtime data augmentation

Realtime data augmentation is implemented within the ImageData layer. We provide several augmentations as below:

  • Geometric transform: random flipping, cropping, resizing, rotation
  • Smooth filtering
  • JPEG compression
  • Contrast & brightness adjustment

How to use

You could specify your network prototxt as:

layer { name: "data" type: "ImageData" top: "data" top: "label" include {phase: TRAIN } transform_param {mirror: truecrop_size: 227mean_file: "/home/your/imagenet_mean.binaryproto"contrast_adjustment: truesmooth_filtering: truejpeg_compression: truerotation_angle_interval: 30display: true } image_data_param {source: "/home/your/image/list.txt"batch_size: 32shuffle: truenew_height: 256new_width: 256} }

You could also find a toy example at /examples/SSDH/train_val.prototxt

Note: ImageData Layer is currently not supported in TEST mode

?

?

?

Caffe MNIST手寫數字識別 訓練_驗證 測試 模型測試評估與選擇 數據增強

參考:

https://github.com/frombeijingwithlove/dlcv_for_beginners

總結

以上是生活随笔為你收集整理的Caffe MNIST 手写数字识别(全面流程)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

丰满人妻被黑人猛烈进入 | 国产热a欧美热a在线视频 | 精品无码国产自产拍在线观看蜜 | 久精品国产欧美亚洲色aⅴ大片 | 国产精品嫩草久久久久 | 亚洲精品午夜国产va久久成人 | 国产又爽又猛又粗的视频a片 | 亚洲aⅴ无码成人网站国产app | 人妻尝试又大又粗久久 | 伊人久久大香线蕉午夜 | 窝窝午夜理论片影院 | 国产精品久久久久久久影院 | 无套内谢老熟女 | 国产无套粉嫩白浆在线 | 久久zyz资源站无码中文动漫 | 秋霞成人午夜鲁丝一区二区三区 | 国产成人精品无码播放 | 国产精品美女久久久网av | 国产精品久久久 | 色诱久久久久综合网ywww | 18禁黄网站男男禁片免费观看 | 亚欧洲精品在线视频免费观看 | 国产卡一卡二卡三 | 欧美xxxxx精品 | 色情久久久av熟女人妻网站 | 精品乱码久久久久久久 | 国产在线精品一区二区三区直播 | 内射老妇bbwx0c0ck | 无码国产色欲xxxxx视频 | 少妇一晚三次一区二区三区 | 伊人色综合久久天天小片 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 亚洲欧美国产精品专区久久 | 色婷婷综合中文久久一本 | 又粗又大又硬又长又爽 | 无码中文字幕色专区 | 亚洲精品一区二区三区大桥未久 | 亚洲一区二区三区 | av人摸人人人澡人人超碰下载 | 九九久久精品国产免费看小说 | 国产精品无码一区二区三区不卡 | 婷婷五月综合激情中文字幕 | 亚洲国产高清在线观看视频 | 亚洲男女内射在线播放 | 波多野结衣aⅴ在线 | 精品国产av色一区二区深夜久久 | 国产成人精品三级麻豆 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产在线精品一区二区三区直播 | 真人与拘做受免费视频一 | 国产国产精品人在线视 | 成人无码视频免费播放 | 国产成人精品无码播放 | 四虎国产精品免费久久 | 激情内射日本一区二区三区 | 天天av天天av天天透 | 超碰97人人射妻 | 在线成人www免费观看视频 | 国产在线精品一区二区高清不卡 | 国产成人亚洲综合无码 | 国产精品国产自线拍免费软件 | 偷窥日本少妇撒尿chinese | 无码人妻丰满熟妇区毛片18 | 亚洲欧洲日本综合aⅴ在线 | 国产精品18久久久久久麻辣 | 亚洲国产午夜精品理论片 | 日本一区二区更新不卡 | 久精品国产欧美亚洲色aⅴ大片 | 国内少妇偷人精品视频 | 亚洲午夜久久久影院 | 少妇一晚三次一区二区三区 | 色窝窝无码一区二区三区色欲 | 性色欲网站人妻丰满中文久久不卡 | 中文无码精品a∨在线观看不卡 | 麻豆md0077饥渴少妇 | 亲嘴扒胸摸屁股激烈网站 | 日本一区二区三区免费高清 | 性色欲网站人妻丰满中文久久不卡 | 久久久精品成人免费观看 | 国产午夜福利100集发布 | 小鲜肉自慰网站xnxx | 亚洲无人区一区二区三区 | 无码国模国产在线观看 | 精品欧美一区二区三区久久久 | 一本久道久久综合婷婷五月 | 人妻与老人中文字幕 | 黑人大群体交免费视频 | 亚洲中文字幕久久无码 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲 日韩 欧美 成人 在线观看 | 精品国产一区二区三区四区在线看 | 国产乱人无码伦av在线a | 女人被男人躁得好爽免费视频 | 成人影院yy111111在线观看 | 欧美午夜特黄aaaaaa片 | 国产无遮挡又黄又爽又色 | 精品人妻中文字幕有码在线 | 99久久精品无码一区二区毛片 | 久久久久久av无码免费看大片 | 免费看男女做好爽好硬视频 | 一本大道伊人av久久综合 | 性生交大片免费看l | 亚洲经典千人经典日产 | 性生交大片免费看l | 日韩欧美群交p片內射中文 | 亚洲精品综合五月久久小说 | 久久精品中文字幕大胸 | 永久免费观看美女裸体的网站 | 网友自拍区视频精品 | 未满小14洗澡无码视频网站 | 欧美精品一区二区精品久久 | 久久久久久久女国产乱让韩 | 国产激情艳情在线看视频 | 欧美激情内射喷水高潮 | 性欧美videos高清精品 | 亚洲国产综合无码一区 | 亚洲国产成人av在线观看 | 欧洲vodafone精品性 | av无码电影一区二区三区 | 综合激情五月综合激情五月激情1 | 日本熟妇浓毛 | 一本一道久久综合久久 | 婷婷色婷婷开心五月四房播播 | 无码人妻丰满熟妇区五十路百度 | 天天摸天天碰天天添 | 国产午夜精品一区二区三区嫩草 | 中文字幕乱妇无码av在线 | 免费播放一区二区三区 | 九一九色国产 | 日韩成人一区二区三区在线观看 | 丰满妇女强制高潮18xxxx | 久久精品人人做人人综合试看 | 精品aⅴ一区二区三区 | 日本一区二区三区免费高清 | 露脸叫床粗话东北少妇 | 67194成是人免费无码 | 精品熟女少妇av免费观看 | 国产va免费精品观看 | 内射巨臀欧美在线视频 | 97无码免费人妻超级碰碰夜夜 | 中文久久乱码一区二区 | www国产亚洲精品久久久日本 | 久久久久久国产精品无码下载 | 99久久精品无码一区二区毛片 | 精品夜夜澡人妻无码av蜜桃 | 奇米影视888欧美在线观看 | 女人色极品影院 | 亚洲成av人在线观看网址 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲一区二区三区偷拍女厕 | 中文字幕色婷婷在线视频 | 国产极品视觉盛宴 | 国产情侣作爱视频免费观看 | 一个人看的视频www在线 | 精品国产一区二区三区四区 | 成人无码视频免费播放 | 影音先锋中文字幕无码 | 亚洲日韩av一区二区三区四区 | 少妇高潮一区二区三区99 | 无码国产激情在线观看 | 亚洲精品一区二区三区四区五区 | 日韩精品无码一区二区中文字幕 | 在线精品国产一区二区三区 | 一个人免费观看的www视频 | 5858s亚洲色大成网站www | 激情内射日本一区二区三区 | 曰韩少妇内射免费播放 | 欧美精品无码一区二区三区 | 国产精品沙发午睡系列 | 性啪啪chinese东北女人 | 又粗又大又硬又长又爽 | 国产色xx群视频射精 | 无码午夜成人1000部免费视频 | 无码人妻丰满熟妇区毛片18 | 国产精品高潮呻吟av久久 | 亚洲成熟女人毛毛耸耸多 | 亚洲精品一区二区三区在线 | 乌克兰少妇xxxx做受 | 国内丰满熟女出轨videos | 精品无码国产一区二区三区av | 99久久久国产精品无码免费 | 日本护士xxxxhd少妇 | 国产在线精品一区二区三区直播 | 国产人妻精品午夜福利免费 | 精品久久8x国产免费观看 | 国内精品久久久久久中文字幕 | 粉嫩少妇内射浓精videos | 日产精品99久久久久久 | 中文字幕乱码中文乱码51精品 | 性色av无码免费一区二区三区 | 成人欧美一区二区三区黑人免费 | 欧洲欧美人成视频在线 | 久久精品无码一区二区三区 | 特大黑人娇小亚洲女 | 色老头在线一区二区三区 | 天天做天天爱天天爽综合网 | 特级做a爰片毛片免费69 | 丁香啪啪综合成人亚洲 | 骚片av蜜桃精品一区 | 亚洲高清偷拍一区二区三区 | 又黄又爽又色的视频 | 鲁鲁鲁爽爽爽在线视频观看 | 欧美zoozzooz性欧美 | 国产国语老龄妇女a片 | 国产熟妇另类久久久久 | 最近免费中文字幕中文高清百度 | 婷婷六月久久综合丁香 | 日本在线高清不卡免费播放 | 131美女爱做视频 | 学生妹亚洲一区二区 | 国内丰满熟女出轨videos | 正在播放老肥熟妇露脸 | 国产一区二区三区四区五区加勒比 | 久久伊人色av天堂九九小黄鸭 | 人妻人人添人妻人人爱 | 国产精品无码mv在线观看 | 少妇性l交大片欧洲热妇乱xxx | 色窝窝无码一区二区三区色欲 | 久久久久成人片免费观看蜜芽 | 国产成人综合美国十次 | 国产成人一区二区三区在线观看 | 无码人妻精品一区二区三区不卡 | 少妇人妻偷人精品无码视频 | 欧美人与禽zoz0性伦交 | 熟女少妇人妻中文字幕 | 亚洲国产欧美在线成人 | 中文字幕中文有码在线 | ass日本丰满熟妇pics | 日本精品人妻无码免费大全 | 狂野欧美激情性xxxx | 日欧一片内射va在线影院 | 日本va欧美va欧美va精品 | 日本va欧美va欧美va精品 | 欧美黑人乱大交 | 成人无码视频免费播放 | 无码人妻精品一区二区三区下载 | 成人亚洲精品久久久久软件 | 欧美性猛交xxxx富婆 | 亚洲国产精品无码一区二区三区 | 精品 日韩 国产 欧美 视频 | 精品乱码久久久久久久 | 成人精品一区二区三区中文字幕 | 久久精品女人的天堂av | 国产乱子伦视频在线播放 | 久久精品国产99精品亚洲 | 亚洲日韩一区二区 | 欧美激情综合亚洲一二区 | 亚洲狠狠色丁香婷婷综合 | 精品乱码久久久久久久 | 少妇的肉体aa片免费 | 国产成人无码一二三区视频 | 色诱久久久久综合网ywww | 国产高清av在线播放 | 国产精品视频免费播放 | 九九综合va免费看 | 无码人中文字幕 | 国产九九九九九九九a片 | 久久久久亚洲精品男人的天堂 | 国产明星裸体无码xxxx视频 | 久久这里只有精品视频9 | 领导边摸边吃奶边做爽在线观看 | 中文字幕无码人妻少妇免费 | 又粗又大又硬毛片免费看 | 天天燥日日燥 | 人人妻人人澡人人爽欧美一区九九 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲色在线无码国产精品不卡 | 精品国产一区二区三区av 性色 | 无码乱肉视频免费大全合集 | 国产欧美亚洲精品a | 曰韩无码二三区中文字幕 | 亚洲精品中文字幕乱码 | 伊人久久大香线蕉av一区二区 | 99国产欧美久久久精品 | 久久99精品久久久久久动态图 | 国产成人综合在线女婷五月99播放 | 给我免费的视频在线观看 | 国产精品久久久久久久9999 | 99久久精品日本一区二区免费 | 亚洲国产综合无码一区 | 久久久久99精品成人片 | 麻豆人妻少妇精品无码专区 | 亚洲七七久久桃花影院 | 一本久久伊人热热精品中文字幕 | 欧美怡红院免费全部视频 | 3d动漫精品啪啪一区二区中 | 日韩欧美中文字幕在线三区 | 成人三级无码视频在线观看 | 婷婷丁香六月激情综合啪 | 人妻少妇精品视频专区 | 亚洲成av人片在线观看无码不卡 | 精品无码国产自产拍在线观看蜜 | 内射后入在线观看一区 | 香蕉久久久久久av成人 | 亚洲精品国偷拍自产在线麻豆 | 国产亚av手机在线观看 | 黑森林福利视频导航 | 国产亚洲精品久久久闺蜜 | 中文字幕无码免费久久9一区9 | 国产av一区二区三区最新精品 | 蜜桃视频插满18在线观看 | 亚洲成a人一区二区三区 | 88国产精品欧美一区二区三区 | 国产精品沙发午睡系列 | 日韩精品无码一本二本三本色 | 四虎国产精品免费久久 | 成人精品一区二区三区中文字幕 | a片免费视频在线观看 | 久久无码中文字幕免费影院蜜桃 | 亚洲精品无码人妻无码 | 成人精品一区二区三区中文字幕 | 亚洲综合无码久久精品综合 | 午夜福利试看120秒体验区 | 六十路熟妇乱子伦 | 99久久亚洲精品无码毛片 | 欧美性生交活xxxxxdddd | 扒开双腿吃奶呻吟做受视频 | 精品久久综合1区2区3区激情 | 国产成人av免费观看 | 久久国产精品萌白酱免费 | 久久精品国产一区二区三区 | 中文字幕 亚洲精品 第1页 | 日韩人妻无码一区二区三区久久99 | 久久精品中文闷骚内射 | 久久99精品国产.久久久久 | 福利一区二区三区视频在线观看 | 亚洲中文字幕无码一久久区 | 日韩精品成人一区二区三区 | 小鲜肉自慰网站xnxx | 久久国语露脸国产精品电影 | 综合网日日天干夜夜久久 | 玩弄人妻少妇500系列视频 | 少妇无码吹潮 | 老熟女乱子伦 | 亚洲乱亚洲乱妇50p | 国产午夜视频在线观看 | 国产激情一区二区三区 | 国产精品亚洲一区二区三区喷水 | 久久无码中文字幕免费影院蜜桃 | 亚洲午夜无码久久 | 1000部夫妻午夜免费 | 老熟妇乱子伦牲交视频 | 搡女人真爽免费视频大全 | 亚洲小说春色综合另类 | 国产亚洲视频中文字幕97精品 | 永久黄网站色视频免费直播 | 麻豆果冻传媒2021精品传媒一区下载 | 日韩视频 中文字幕 视频一区 | 男人的天堂2018无码 | 欧洲欧美人成视频在线 | 国产精品第一国产精品 | 激情国产av做激情国产爱 | 嫩b人妻精品一区二区三区 | 国产性生大片免费观看性 | 国产成人久久精品流白浆 | a在线亚洲男人的天堂 | 色综合久久网 | 乱码av麻豆丝袜熟女系列 | 九九久久精品国产免费看小说 | 亚洲国产精品毛片av不卡在线 | 99久久久无码国产aaa精品 | 亚洲欧美国产精品专区久久 | 内射白嫩少妇超碰 | 精品国产成人一区二区三区 | 麻豆成人精品国产免费 | 波多野结衣乳巨码无在线观看 | 丁香啪啪综合成人亚洲 | 亚洲の无码国产の无码影院 | 久久综合给合久久狠狠狠97色 | 男女猛烈xx00免费视频试看 | 日本一卡二卡不卡视频查询 | 天堂一区人妻无码 | 免费人成网站视频在线观看 | 98国产精品综合一区二区三区 | 国产精品久久精品三级 | 98国产精品综合一区二区三区 | 色诱久久久久综合网ywww | 成熟妇人a片免费看网站 | 国产色xx群视频射精 | 国产亚洲日韩欧美另类第八页 | 97资源共享在线视频 | 精品人人妻人人澡人人爽人人 | 亚洲综合另类小说色区 | 99久久久国产精品无码免费 | 精品人妻中文字幕有码在线 | 在线精品国产一区二区三区 | 精品久久8x国产免费观看 | 性欧美熟妇videofreesex | 蜜臀av在线观看 在线欧美精品一区二区三区 | 亚洲成av人影院在线观看 | 欧美怡红院免费全部视频 | 亚洲精品鲁一鲁一区二区三区 | 男女爱爱好爽视频免费看 | 国产高清不卡无码视频 | 精品欧美一区二区三区久久久 | 成人试看120秒体验区 | 婷婷丁香五月天综合东京热 | 国产亚洲精品久久久久久国模美 | 欧美精品国产综合久久 | 国产成人午夜福利在线播放 | 欧美黑人性暴力猛交喷水 | 欧美丰满熟妇xxxx | 无码国模国产在线观看 | 亚洲国产一区二区三区在线观看 | 国产精品久久久午夜夜伦鲁鲁 | 天堂无码人妻精品一区二区三区 | 成人免费无码大片a毛片 | 国产午夜视频在线观看 | 丰满少妇高潮惨叫视频 | 成人女人看片免费视频放人 | 性生交大片免费看女人按摩摩 | av在线亚洲欧洲日产一区二区 | 小鲜肉自慰网站xnxx | 露脸叫床粗话东北少妇 | 午夜性刺激在线视频免费 | 亚洲成a人一区二区三区 | 国产精品亚洲五月天高清 | 亚洲欧美综合区丁香五月小说 | 国产人妖乱国产精品人妖 | 中文字幕色婷婷在线视频 | 无码纯肉视频在线观看 | 高清国产亚洲精品自在久久 | 天堂久久天堂av色综合 | 亚洲成a人片在线观看无码3d | 国产亚洲精品久久久久久大师 | 国产成人无码午夜视频在线观看 | 欧洲极品少妇 | 学生妹亚洲一区二区 | 久久精品视频在线看15 | 亚洲欧美精品aaaaaa片 | 免费人成在线视频无码 | 午夜熟女插插xx免费视频 | 久久aⅴ免费观看 | 中文字幕av日韩精品一区二区 | 国内精品久久毛片一区二区 | 久久精品国产亚洲精品 | 装睡被陌生人摸出水好爽 | 午夜男女很黄的视频 | 国产成人无码av片在线观看不卡 | 久久天天躁狠狠躁夜夜免费观看 | yw尤物av无码国产在线观看 | 日韩人妻无码一区二区三区久久99 | 荫蒂添的好舒服视频囗交 | 欧美性黑人极品hd | 日韩无码专区 | 国产69精品久久久久app下载 | 在线看片无码永久免费视频 | 人人澡人人透人人爽 | 国产又粗又硬又大爽黄老大爷视 | 中文字幕+乱码+中文字幕一区 | 欧美日韩视频无码一区二区三 | 亚洲色偷偷偷综合网 | 狠狠色噜噜狠狠狠7777奇米 | 色婷婷久久一区二区三区麻豆 | 无码av最新清无码专区吞精 | 国产绳艺sm调教室论坛 | 国产午夜视频在线观看 | 国产一区二区三区日韩精品 | 男女爱爱好爽视频免费看 | 婷婷五月综合激情中文字幕 | 国内精品九九久久久精品 | 最近的中文字幕在线看视频 | 巨爆乳无码视频在线观看 | 丝袜人妻一区二区三区 | 色婷婷久久一区二区三区麻豆 | 精品熟女少妇av免费观看 | 4hu四虎永久在线观看 | 99久久99久久免费精品蜜桃 | 人妻中文无码久热丝袜 | 精品成人av一区二区三区 | 少妇无码吹潮 | 日本一区二区三区免费播放 | 永久黄网站色视频免费直播 | 内射后入在线观看一区 | 又黄又爽又色的视频 | 欧美猛少妇色xxxxx | 国产办公室秘书无码精品99 | av无码电影一区二区三区 | 午夜成人1000部免费视频 | 精品无码一区二区三区爱欲 | 国产成人一区二区三区在线观看 | 亚洲 欧美 激情 小说 另类 | 欧美午夜特黄aaaaaa片 | 九月婷婷人人澡人人添人人爽 | 久久精品中文字幕大胸 | 国产亚洲精品久久久ai换 | 欧美性生交活xxxxxdddd | 亚洲中文字幕乱码av波多ji | 日本乱人伦片中文三区 | 亚洲自偷自拍另类第1页 | 久久精品中文闷骚内射 | 日韩人妻少妇一区二区三区 | 欧美午夜特黄aaaaaa片 | 初尝人妻少妇中文字幕 | 装睡被陌生人摸出水好爽 | 成在人线av无码免费 | 成人精品一区二区三区中文字幕 | 成在人线av无码免观看麻豆 | 国产av一区二区精品久久凹凸 | 99视频精品全部免费免费观看 | 欧洲精品码一区二区三区免费看 | 成 人 网 站国产免费观看 | 精品少妇爆乳无码av无码专区 | 亚洲中文字幕va福利 | 在线观看欧美一区二区三区 | 精品久久久中文字幕人妻 | 婷婷丁香五月天综合东京热 | 成人无码视频在线观看网站 | 国产成人一区二区三区别 | 久久久久免费精品国产 | 无码人妻丰满熟妇区五十路百度 | 精品水蜜桃久久久久久久 | 亚洲 激情 小说 另类 欧美 | 国产亚洲精品精品国产亚洲综合 | 国产suv精品一区二区五 | 无码av免费一区二区三区试看 | 欧美乱妇无乱码大黄a片 | 国产精品igao视频网 | 97无码免费人妻超级碰碰夜夜 | 亚洲欧美精品aaaaaa片 | 欧美国产日产一区二区 | 日本免费一区二区三区最新 | 澳门永久av免费网站 | 亚洲精品中文字幕 | 捆绑白丝粉色jk震动捧喷白浆 | 久久亚洲精品成人无码 | 亚洲色www成人永久网址 | 成人欧美一区二区三区黑人免费 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产亚洲精品久久久久久国模美 | 欧美 亚洲 国产 另类 | 国产亚洲日韩欧美另类第八页 | 国产精品久久久久影院嫩草 | 日韩人妻系列无码专区 | 国产高潮视频在线观看 | 成人无码影片精品久久久 | 国产明星裸体无码xxxx视频 | 久久综合九色综合欧美狠狠 | 国产精品高潮呻吟av久久4虎 | 在线成人www免费观看视频 | 国产精品久久久久影院嫩草 | 精品久久久无码中文字幕 | 动漫av网站免费观看 | 久久精品99久久香蕉国产色戒 | 久久国产精品精品国产色婷婷 | 在线播放免费人成毛片乱码 | 亚洲一区二区三区无码久久 | 欧美老妇交乱视频在线观看 | 巨爆乳无码视频在线观看 | 午夜熟女插插xx免费视频 | 亚洲天堂2017无码中文 | 国产一区二区不卡老阿姨 | 成熟女人特级毛片www免费 | 男人扒开女人内裤强吻桶进去 | 中文无码伦av中文字幕 | 激情五月综合色婷婷一区二区 | 99久久精品日本一区二区免费 | 午夜福利一区二区三区在线观看 | 伦伦影院午夜理论片 | 人人澡人摸人人添 | 国产精品沙发午睡系列 | 荫蒂添的好舒服视频囗交 | 九九在线中文字幕无码 | 少妇激情av一区二区 | 日本熟妇人妻xxxxx人hd | 4hu四虎永久在线观看 | 永久免费精品精品永久-夜色 | 未满小14洗澡无码视频网站 | www一区二区www免费 | 好爽又高潮了毛片免费下载 | 俺去俺来也www色官网 | 精品久久8x国产免费观看 | 任你躁在线精品免费 | 麻豆国产丝袜白领秘书在线观看 | 人人妻人人澡人人爽欧美精品 | 蜜臀aⅴ国产精品久久久国产老师 | 娇妻被黑人粗大高潮白浆 | 国产一区二区三区影院 | av无码不卡在线观看免费 | 性色欲情网站iwww九文堂 | 亚洲成a人片在线观看日本 | 四虎4hu永久免费 | av无码电影一区二区三区 | 欧洲精品码一区二区三区免费看 | 免费观看的无遮挡av | 欧美日韩综合一区二区三区 | 小鲜肉自慰网站xnxx | 国产偷抇久久精品a片69 | 国产午夜精品一区二区三区嫩草 | 伊在人天堂亚洲香蕉精品区 | 亚洲精品一区二区三区婷婷月 | 一区二区传媒有限公司 | 久久久精品成人免费观看 | 免费人成在线视频无码 | 狠狠cao日日穞夜夜穞av | 131美女爱做视频 | 特级做a爰片毛片免费69 | 亚洲国产精品无码久久久久高潮 | 国产激情精品一区二区三区 | 天堂无码人妻精品一区二区三区 | 老熟妇仑乱视频一区二区 | 亚洲国产精品一区二区美利坚 | 九九久久精品国产免费看小说 | 国语精品一区二区三区 | 欧美激情综合亚洲一二区 | 性欧美大战久久久久久久 | 日韩精品无码一区二区中文字幕 | 中文字幕无码热在线视频 | 亚洲小说图区综合在线 | 亚洲国产成人a精品不卡在线 | 国产精品高潮呻吟av久久4虎 | 亚洲精品无码人妻无码 | 亚洲成色www久久网站 | 国产精品无套呻吟在线 | 黑人大群体交免费视频 | 成 人 免费观看网站 | 亚洲成在人网站无码天堂 | 久久久无码中文字幕久... | 成年美女黄网站色大免费视频 | 国产精品久久久久影院嫩草 | 国产成人午夜福利在线播放 | 国产真实伦对白全集 | 国产偷自视频区视频 | 少妇高潮喷潮久久久影院 | 久久久中文字幕日本无吗 | 又大又硬又爽免费视频 | 青草视频在线播放 | 日本熟妇大屁股人妻 | 欧美人与善在线com | 午夜时刻免费入口 | 欧美人与牲动交xxxx | 亚洲 高清 成人 动漫 | 亚洲爆乳精品无码一区二区三区 | 无码av免费一区二区三区试看 | 爆乳一区二区三区无码 | 成人免费视频视频在线观看 免费 | 欧美自拍另类欧美综合图片区 | 中文字幕av无码一区二区三区电影 | 日韩精品久久久肉伦网站 | 丝袜 中出 制服 人妻 美腿 | 欧美日本免费一区二区三区 | 亚洲自偷精品视频自拍 | 性做久久久久久久免费看 | 日本在线高清不卡免费播放 | 亚洲人成网站在线播放942 | 国产精品人人妻人人爽 | 精品国产国产综合精品 | 久久99久久99精品中文字幕 | 无码av中文字幕免费放 | 亚洲成色www久久网站 | 两性色午夜视频免费播放 | 免费乱码人妻系列无码专区 | 天堂亚洲2017在线观看 | 四十如虎的丰满熟妇啪啪 | 久久精品一区二区三区四区 | 欧美变态另类xxxx | 欧美国产亚洲日韩在线二区 | 99麻豆久久久国产精品免费 | 婷婷综合久久中文字幕蜜桃三电影 | 免费中文字幕日韩欧美 | 欧美人与动性行为视频 | 玩弄人妻少妇500系列视频 | 天天摸天天透天天添 | 黄网在线观看免费网站 | 国产日产欧产精品精品app | 国产婷婷色一区二区三区在线 | 成人试看120秒体验区 | 国产在线精品一区二区高清不卡 | 特级做a爰片毛片免费69 | aⅴ在线视频男人的天堂 | 人妻人人添人妻人人爱 | 久久午夜无码鲁丝片 | 国产无遮挡又黄又爽免费视频 | а√天堂www在线天堂小说 | 波多野结衣乳巨码无在线观看 | 色爱情人网站 | av无码不卡在线观看免费 | 亚洲理论电影在线观看 | 成人影院yy111111在线观看 | 成人欧美一区二区三区黑人 | 亚洲一区二区三区偷拍女厕 | 成年美女黄网站色大免费全看 | 国产成人无码av一区二区 | 欧美日韩综合一区二区三区 | 又粗又大又硬又长又爽 | 亚洲a无码综合a国产av中文 | 熟妇人妻中文av无码 | 亚洲成色在线综合网站 | 日韩精品无码免费一区二区三区 | 国产精品美女久久久 | 亚洲一区二区三区在线观看网站 | 国产在线无码精品电影网 | 免费视频欧美无人区码 | 无码人妻出轨黑人中文字幕 | 高清国产亚洲精品自在久久 | 成人片黄网站色大片免费观看 | 无码国产色欲xxxxx视频 | 精品午夜福利在线观看 | 婷婷丁香六月激情综合啪 | 2020久久香蕉国产线看观看 | 中文字幕无码av激情不卡 | 久久99精品国产麻豆 | 国产乱人偷精品人妻a片 | 欧美老熟妇乱xxxxx | 久久精品无码一区二区三区 | 久久精品女人天堂av免费观看 | 国产莉萝无码av在线播放 | 国产精品久久久久久亚洲影视内衣 | 亚洲精品午夜国产va久久成人 | 免费国产黄网站在线观看 | 国内精品久久久久久中文字幕 | 色欲人妻aaaaaaa无码 | 在线观看欧美一区二区三区 | 欧美日韩一区二区三区自拍 | 免费人成网站视频在线观看 | 国产精华av午夜在线观看 | 日韩精品一区二区av在线 | 亚洲国产精品久久久久久 | 丁香啪啪综合成人亚洲 | 精品无码国产一区二区三区av | 亚洲精品无码国产 | 人妻夜夜爽天天爽三区 | 免费播放一区二区三区 | a国产一区二区免费入口 | 久久久精品成人免费观看 | 久久久成人毛片无码 | 中文无码伦av中文字幕 | 亚洲精品久久久久中文第一幕 | 国产精品久久久久久久9999 | 又色又爽又黄的美女裸体网站 | 亚洲国产高清在线观看视频 | 性欧美牲交在线视频 | 亚欧洲精品在线视频免费观看 | 97久久精品无码一区二区 | 日本高清一区免费中文视频 | 狠狠亚洲超碰狼人久久 | 综合网日日天干夜夜久久 | 国产在线精品一区二区高清不卡 | 中文字幕无码日韩专区 | 嫩b人妻精品一区二区三区 | 国产超级va在线观看视频 | 无码任你躁久久久久久久 | √天堂资源地址中文在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲中文无码av永久不收费 | 国产精华av午夜在线观看 | 51国偷自产一区二区三区 | 亚洲精品综合五月久久小说 | 澳门永久av免费网站 | 亚洲狠狠婷婷综合久久 | 中文字幕乱码中文乱码51精品 | 露脸叫床粗话东北少妇 | 999久久久国产精品消防器材 | 国产精品a成v人在线播放 | 激情国产av做激情国产爱 | 国产精品无码永久免费888 | 天堂在线观看www | 丰满妇女强制高潮18xxxx | 日韩在线不卡免费视频一区 | 亚洲无人区午夜福利码高清完整版 | 亚洲中文字幕无码一久久区 | 在线播放免费人成毛片乱码 | 成人无码视频免费播放 | 水蜜桃色314在线观看 | 蜜桃视频韩日免费播放 | 少妇激情av一区二区 | 麻豆成人精品国产免费 | 日本大乳高潮视频在线观看 | 久久伊人色av天堂九九小黄鸭 | 天天拍夜夜添久久精品大 | 日韩精品无码免费一区二区三区 | 国产精品久久久一区二区三区 | 婷婷丁香六月激情综合啪 | 欧美日韩人成综合在线播放 | 熟女俱乐部五十路六十路av | 性生交片免费无码看人 | 欧美人与物videos另类 | 黑人巨大精品欧美一区二区 | 亚洲啪av永久无码精品放毛片 | 国产手机在线αⅴ片无码观看 | 欧美精品免费观看二区 | 黑人玩弄人妻中文在线 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲va欧美va天堂v国产综合 | 国产免费观看黄av片 | 精品亚洲韩国一区二区三区 | 国产真实伦对白全集 | 久久国产精品_国产精品 | 中文字幕乱码亚洲无线三区 | 欧美 丝袜 自拍 制服 另类 | 国产乱人偷精品人妻a片 | 国产真人无遮挡作爱免费视频 | 中文无码伦av中文字幕 | 国产国语老龄妇女a片 | 国产成人精品视频ⅴa片软件竹菊 | 男女作爱免费网站 | 狠狠色丁香久久婷婷综合五月 | 国产成人无码午夜视频在线观看 | 午夜理论片yy44880影院 | 亚洲日本一区二区三区在线 | 精品偷拍一区二区三区在线看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产精品毛片一区二区 | 激情国产av做激情国产爱 | 一本久久a久久精品亚洲 | 国产激情无码一区二区app | 国产乱人无码伦av在线a | 欧美大屁股xxxxhd黑色 | 图片小说视频一区二区 | 天天躁日日躁狠狠躁免费麻豆 | 久久精品人妻少妇一区二区三区 | 中文字幕日韩精品一区二区三区 | 岛国片人妻三上悠亚 | 思思久久99热只有频精品66 | 欧美三级不卡在线观看 | 亚洲一区二区三区国产精华液 | 国产无遮挡吃胸膜奶免费看 | 麻豆md0077饥渴少妇 | 久久精品人妻少妇一区二区三区 | 中文精品久久久久人妻不卡 | 真人与拘做受免费视频 | 国产精品亚洲а∨无码播放麻豆 | 少妇厨房愉情理9仑片视频 | 国产精品怡红院永久免费 | 又大又硬又爽免费视频 | 呦交小u女精品视频 | 亚洲国产欧美日韩精品一区二区三区 | 久久综合香蕉国产蜜臀av | 色窝窝无码一区二区三区色欲 | 国产在线无码精品电影网 | 欧美精品国产综合久久 | 麻豆蜜桃av蜜臀av色欲av | 色婷婷av一区二区三区之红樱桃 | 国产偷自视频区视频 | 少妇的肉体aa片免费 | 乌克兰少妇性做爰 | 麻豆果冻传媒2021精品传媒一区下载 | 麻豆国产丝袜白领秘书在线观看 | 久热国产vs视频在线观看 | 国内精品人妻无码久久久影院蜜桃 | 成人毛片一区二区 | 成人免费视频一区二区 | 国产麻豆精品一区二区三区v视界 | 国产亚洲精品久久久久久久 | 亚洲国产高清在线观看视频 | 动漫av一区二区在线观看 | 无码国产激情在线观看 | 一本加勒比波多野结衣 | 成 人 网 站国产免费观看 | 成人欧美一区二区三区黑人免费 | 国产国语老龄妇女a片 | 国产免费久久久久久无码 | 久久综合狠狠综合久久综合88 | 爱做久久久久久 | 九九在线中文字幕无码 | a片免费视频在线观看 | 午夜福利不卡在线视频 | 漂亮人妻洗澡被公强 日日躁 | 图片区 小说区 区 亚洲五月 | 亚洲国产欧美日韩精品一区二区三区 | 强辱丰满人妻hd中文字幕 | 国产精品久久久久久亚洲影视内衣 | 亚洲欧洲日本无在线码 | 精品午夜福利在线观看 | 国精品人妻无码一区二区三区蜜柚 | 日产精品99久久久久久 | 国产又爽又黄又刺激的视频 | 天堂亚洲免费视频 | 色综合天天综合狠狠爱 | 日日天日日夜日日摸 | 欧美日韩久久久精品a片 | 久久久久亚洲精品男人的天堂 | 亚洲s色大片在线观看 | 亚洲男人av天堂午夜在 | 爽爽影院免费观看 | 国产精品99爱免费视频 | 日本xxxx色视频在线观看免费 | 亚洲日韩av一区二区三区中文 | 疯狂三人交性欧美 | 免费人成在线视频无码 | 久久久无码中文字幕久... | 亚洲国产精品久久久久久 | 一本久久伊人热热精品中文字幕 | 精品熟女少妇av免费观看 | 激情人妻另类人妻伦 | 欧美日韩色另类综合 | 中文字幕乱码亚洲无线三区 | 老司机亚洲精品影院无码 | 国产乱人偷精品人妻a片 | 欧美日本免费一区二区三区 | 暴力强奷在线播放无码 | 波多野结衣av在线观看 | 亚洲爆乳精品无码一区二区三区 | 国产精品沙发午睡系列 | 亚洲精品午夜国产va久久成人 | 亚洲欧美精品aaaaaa片 | 中文字幕无码免费久久99 | 久久久久亚洲精品中文字幕 | 精品无人区无码乱码毛片国产 | 大乳丰满人妻中文字幕日本 | 亚洲第一无码av无码专区 | 国产手机在线αⅴ片无码观看 | 无码人妻久久一区二区三区不卡 | 精品欧洲av无码一区二区三区 | a片免费视频在线观看 | 国内精品人妻无码久久久影院 | 国产精品a成v人在线播放 | 色五月丁香五月综合五月 | 中文字幕无码乱人伦 | 久久久精品成人免费观看 | 欧美精品免费观看二区 | 九九热爱视频精品 | 日韩av无码中文无码电影 | 免费看少妇作爱视频 | 国产熟妇另类久久久久 | 东京一本一道一二三区 | 成人精品视频一区二区三区尤物 | 亚洲一区二区观看播放 | 久久久精品人妻久久影视 | 永久免费精品精品永久-夜色 | 国产欧美亚洲精品a | 性欧美疯狂xxxxbbbb | 亚洲日韩乱码中文无码蜜桃臀网站 | 成熟人妻av无码专区 | 人妻有码中文字幕在线 | 欧美乱妇无乱码大黄a片 | 亚洲七七久久桃花影院 | 欧美日韩一区二区三区自拍 | 精品国产av色一区二区深夜久久 | 无码国内精品人妻少妇 | 精品 日韩 国产 欧美 视频 | 帮老师解开蕾丝奶罩吸乳网站 | 最近免费中文字幕中文高清百度 | 天天摸天天碰天天添 | 日韩欧美成人免费观看 | 亚洲中文字幕无码中文字在线 | 国产精品无码mv在线观看 | 少妇人妻偷人精品无码视频 | 国产人妻大战黑人第1集 | 国内揄拍国内精品人妻 | 麻豆国产97在线 | 欧洲 | 国产乱人偷精品人妻a片 | 曰本女人与公拘交酡免费视频 | 一本久道久久综合狠狠爱 | 午夜性刺激在线视频免费 | 国产乱人偷精品人妻a片 | 欧美国产日韩久久mv | 国产亲子乱弄免费视频 | 色妞www精品免费视频 | 久久久久久亚洲精品a片成人 | 偷窥村妇洗澡毛毛多 | 国产精品无码mv在线观看 | 少妇邻居内射在线 | 欧美精品无码一区二区三区 | 天天av天天av天天透 | 狂野欧美性猛xxxx乱大交 | 欧美丰满少妇xxxx性 | 中文字幕乱码人妻无码久久 | 双乳奶水饱满少妇呻吟 | 久久亚洲a片com人成 | 国产亚洲视频中文字幕97精品 | 欧美乱妇无乱码大黄a片 | 国产特级毛片aaaaaa高潮流水 | 色情久久久av熟女人妻网站 | 久热国产vs视频在线观看 | 精品国产av色一区二区深夜久久 | 老司机亚洲精品影院无码 | 欧美日韩精品 | 精品国产一区二区三区av 性色 | 国产亚洲欧美日韩亚洲中文色 | 国产熟女一区二区三区四区五区 | 精品亚洲韩国一区二区三区 | 国产人妻久久精品二区三区老狼 | 亚洲日韩一区二区三区 | 岛国片人妻三上悠亚 | 亚洲の无码国产の无码影院 | 欧美性黑人极品hd | 国产成人精品一区二区在线小狼 | 人妻少妇精品无码专区二区 | 丝袜人妻一区二区三区 | 久久久精品欧美一区二区免费 | 久久久无码中文字幕久... | 国产精品高潮呻吟av久久4虎 | 99国产精品白浆在线观看免费 | 久久久精品456亚洲影院 | 亚洲综合色区中文字幕 | 欧美精品国产综合久久 | 免费观看黄网站 | 色综合久久88色综合天天 | av无码不卡在线观看免费 | 成人无码精品1区2区3区免费看 | 国产精品久久精品三级 | 欧美老熟妇乱xxxxx | 人人爽人人爽人人片av亚洲 | 欧美日韩亚洲国产精品 | ass日本丰满熟妇pics | 国产成人午夜福利在线播放 | 亚洲成在人网站无码天堂 | 亚洲精品中文字幕久久久久 | 人妻少妇被猛烈进入中文字幕 | 少妇无码一区二区二三区 | 久久视频在线观看精品 | 亚洲 高清 成人 动漫 | 亚洲色大成网站www国产 | 88国产精品欧美一区二区三区 | 成熟女人特级毛片www免费 | 久久午夜无码鲁丝片午夜精品 | 男女作爱免费网站 | 对白脏话肉麻粗话av | 久久精品人人做人人综合试看 | 中文字幕无码av波多野吉衣 | 亚洲午夜福利在线观看 | 日本丰满熟妇videos | 学生妹亚洲一区二区 | 色欲av亚洲一区无码少妇 | 久久zyz资源站无码中文动漫 | 免费国产黄网站在线观看 | 中文字幕人妻无码一区二区三区 | 欧美日韩久久久精品a片 | 成人无码精品1区2区3区免费看 | 国产亚洲精品久久久久久久久动漫 | 无码人中文字幕 | 亚洲日韩中文字幕在线播放 | 国产精品久免费的黄网站 | 97资源共享在线视频 | www成人国产高清内射 | 夜夜躁日日躁狠狠久久av | 久久久久久九九精品久 | 粉嫩少妇内射浓精videos | 亚洲国产成人a精品不卡在线 | 国产精品永久免费视频 | 日本一本二本三区免费 | 波多野结衣乳巨码无在线观看 | 99久久久无码国产精品免费 | 午夜时刻免费入口 | 国产精品久久久久久久9999 | 国产激情无码一区二区app | 亚洲精品一区国产 | 国产精品嫩草久久久久 | 粗大的内捧猛烈进出视频 | 国产无av码在线观看 | 人妻人人添人妻人人爱 | 性欧美熟妇videofreesex | 国产网红无码精品视频 | 国产精品人人爽人人做我的可爱 | 性生交大片免费看l | 久久精品一区二区三区四区 | 国产精品第一区揄拍无码 | 丝袜 中出 制服 人妻 美腿 | 亚洲国产精品无码一区二区三区 | 国产亚洲精品久久久久久久 | 欧美人妻一区二区三区 | 色欲久久久天天天综合网精品 | 中国女人内谢69xxxx | 女人色极品影院 | 国产sm调教视频在线观看 | 精品欧洲av无码一区二区三区 | 亚洲综合无码一区二区三区 | 精品国产一区二区三区四区 | 天天摸天天透天天添 | 无码免费一区二区三区 | 亚洲精品一区二区三区四区五区 | 久久国语露脸国产精品电影 | 亚洲人成人无码网www国产 | 欧美放荡的少妇 | 在线观看欧美一区二区三区 | 免费人成网站视频在线观看 | 国产特级毛片aaaaaa高潮流水 | 97se亚洲精品一区 | 国产亚洲精品久久久久久国模美 | 奇米影视888欧美在线观看 | 精品成在人线av无码免费看 | 99精品无人区乱码1区2区3区 | 自拍偷自拍亚洲精品被多人伦好爽 | 成在人线av无码免观看麻豆 | 一本大道伊人av久久综合 | 强开小婷嫩苞又嫩又紧视频 | 熟女俱乐部五十路六十路av | 成年美女黄网站色大免费全看 | 国产精品无码一区二区三区不卡 | 图片区 小说区 区 亚洲五月 | 中文字幕人妻无码一区二区三区 | 久久99精品久久久久婷婷 | 亚洲理论电影在线观看 | 领导边摸边吃奶边做爽在线观看 | 内射爽无广熟女亚洲 | 乌克兰少妇xxxx做受 | 日日躁夜夜躁狠狠躁 | 国产成人无码a区在线观看视频app | 欧美熟妇另类久久久久久多毛 | 亚洲精品一区二区三区大桥未久 | 无码人妻黑人中文字幕 | 欧美老妇与禽交 | 国产激情艳情在线看视频 | 中文字幕av日韩精品一区二区 | 色 综合 欧美 亚洲 国产 | 久久99精品国产麻豆 | 国产熟妇另类久久久久 | 国产av一区二区精品久久凹凸 | 免费无码午夜福利片69 | 国产乱码精品一品二品 | 国产乱码精品一品二品 | 日日鲁鲁鲁夜夜爽爽狠狠 | 伊人久久大香线蕉av一区二区 | 久久五月精品中文字幕 | 久久综合色之久久综合 | 久久人人爽人人人人片 | 日本成熟视频免费视频 | 久久精品国产一区二区三区 | 一本久久伊人热热精品中文字幕 | 亚洲精品一区二区三区四区五区 | 国语自产偷拍精品视频偷 | 伊人久久大香线焦av综合影院 | 亚洲中文字幕在线观看 | 野外少妇愉情中文字幕 | 亚洲综合无码一区二区三区 | 久久99精品久久久久久动态图 | 中文字幕乱码人妻二区三区 | 思思久久99热只有频精品66 | 亚洲の无码国产の无码影院 | 国产无遮挡又黄又爽又色 | 亚洲男女内射在线播放 | 中文字幕 人妻熟女 | 久久精品国产精品国产精品污 | 老熟女重囗味hdxx69 | 亚洲精品鲁一鲁一区二区三区 | 四虎国产精品免费久久 | 国产亚洲视频中文字幕97精品 | 人人妻人人澡人人爽欧美精品 | 久久国语露脸国产精品电影 | 国产 浪潮av性色四虎 | аⅴ资源天堂资源库在线 | 久久精品中文字幕一区 | 性色欲网站人妻丰满中文久久不卡 | 亚洲一区av无码专区在线观看 | 日韩av无码一区二区三区不卡 | 人妻中文无码久热丝袜 | 67194成是人免费无码 | 色婷婷香蕉在线一区二区 | 少妇厨房愉情理9仑片视频 | 人人妻人人藻人人爽欧美一区 | 午夜福利试看120秒体验区 | 欧美日韩一区二区免费视频 | 国产熟妇另类久久久久 | 亚洲性无码av中文字幕 | 天堂在线观看www | 欧美黑人性暴力猛交喷水 | 久久午夜无码鲁丝片午夜精品 | 99久久无码一区人妻 | a在线亚洲男人的天堂 | 国产精品久久久av久久久 | 亚洲综合精品香蕉久久网 | 亚洲国产精品毛片av不卡在线 | 丰满少妇高潮惨叫视频 | 台湾无码一区二区 | 又湿又紧又大又爽a视频国产 | 超碰97人人射妻 | 99久久久无码国产aaa精品 | 亚洲啪av永久无码精品放毛片 | 无码人妻少妇伦在线电影 | 亚洲 另类 在线 欧美 制服 | 国内精品久久毛片一区二区 | 麻豆国产丝袜白领秘书在线观看 | 欧美午夜特黄aaaaaa片 | 99久久婷婷国产综合精品青草免费 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲最大成人网站 | 三上悠亚人妻中文字幕在线 | 精品国精品国产自在久国产87 | 国产精品高潮呻吟av久久 | 国产舌乚八伦偷品w中 | 国产精品人妻一区二区三区四 | 久久久久久a亚洲欧洲av冫 | 国产成人一区二区三区在线观看 | 亚洲色欲色欲天天天www | 精品久久久久久亚洲精品 | 亚洲成a人片在线观看无码 | 色 综合 欧美 亚洲 国产 | 国产成人精品视频ⅴa片软件竹菊 | 无码av岛国片在线播放 | 亚洲欧美日韩综合久久久 | 性做久久久久久久久 | 国产精品-区区久久久狼 | 久久亚洲日韩精品一区二区三区 | 伦伦影院午夜理论片 | 亚洲欧美国产精品久久 | 国产日产欧产精品精品app | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 亚洲の无码国产の无码影院 | www国产亚洲精品久久网站 | 成年女人永久免费看片 | аⅴ资源天堂资源库在线 | 在线精品亚洲一区二区 | 天海翼激烈高潮到腰振不止 | 国产一区二区三区影院 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 色欲av亚洲一区无码少妇 | 国产乱人伦av在线无码 | 波多野结衣av一区二区全免费观看 | 国产精品欧美成人 | aⅴ亚洲 日韩 色 图网站 播放 | 精品偷拍一区二区三区在线看 | 亚洲欧美日韩国产精品一区二区 | 国产女主播喷水视频在线观看 | 精品久久久无码人妻字幂 | 未满成年国产在线观看 | 人人妻在人人 | 99er热精品视频 | 给我免费的视频在线观看 | 久久久久成人精品免费播放动漫 | 国内综合精品午夜久久资源 | 中文字幕无码av波多野吉衣 | 久久成人a毛片免费观看网站 | 国产精品a成v人在线播放 | 偷窥村妇洗澡毛毛多 | 亚洲一区二区三区国产精华液 | 日日夜夜撸啊撸 | 一本久久a久久精品vr综合 | 人人妻人人澡人人爽欧美一区九九 | 欧美肥老太牲交大战 | 亚洲aⅴ无码成人网站国产app | 欧美激情一区二区三区成人 | 国产精品沙发午睡系列 | 国产免费观看黄av片 | 国产精品怡红院永久免费 | 帮老师解开蕾丝奶罩吸乳网站 | 日本免费一区二区三区最新 | 黄网在线观看免费网站 | 在线看片无码永久免费视频 | 欧美日韩视频无码一区二区三 | www成人国产高清内射 | 日韩精品一区二区av在线 | 免费看男女做好爽好硬视频 | 免费无码午夜福利片69 | 国精产品一品二品国精品69xx | 日本欧美一区二区三区乱码 | 欧美猛少妇色xxxxx | 丰满肥臀大屁股熟妇激情视频 | 精品无人国产偷自产在线 | 在线a亚洲视频播放在线观看 | 亚洲小说图区综合在线 | 人妻aⅴ无码一区二区三区 | 久久久www成人免费毛片 | 亚洲无人区午夜福利码高清完整版 | 丰满少妇弄高潮了www | 精品国产一区二区三区四区 | 成人免费视频在线观看 | 无码午夜成人1000部免费视频 | 麻豆国产人妻欲求不满 | 国产精品18久久久久久麻辣 | 成在人线av无码免观看麻豆 | 亚洲の无码国产の无码步美 | 青青青手机频在线观看 | 亚洲精品国产品国语在线观看 | 国产人妻大战黑人第1集 | 亚洲精品一区三区三区在线观看 | 美女极度色诱视频国产 | 成人三级无码视频在线观看 | 精品厕所偷拍各类美女tp嘘嘘 | 人人妻人人澡人人爽人人精品浪潮 | 国产亚洲tv在线观看 | 激情综合激情五月俺也去 | 麻豆md0077饥渴少妇 | 国产午夜精品一区二区三区嫩草 | 精品少妇爆乳无码av无码专区 | 国语精品一区二区三区 | 日产精品高潮呻吟av久久 | 纯爱无遮挡h肉动漫在线播放 | 成人动漫在线观看 | 亚洲人亚洲人成电影网站色 | 久久久久成人精品免费播放动漫 | 97夜夜澡人人双人人人喊 | 成人影院yy111111在线观看 | 波多野结衣 黑人 | 中文毛片无遮挡高清免费 | 精品国产精品久久一区免费式 | 国产成人无码a区在线观看视频app | 一区二区三区高清视频一 | 成年女人永久免费看片 | 高潮毛片无遮挡高清免费 | 欧美丰满熟妇xxxx性ppx人交 | 好男人www社区 | 捆绑白丝粉色jk震动捧喷白浆 | 久久久国产一区二区三区 | 国内精品久久久久久中文字幕 | 亚洲色在线无码国产精品不卡 | 久久精品国产亚洲精品 | 国产成人无码av片在线观看不卡 | 2019nv天堂香蕉在线观看 | 国产精品亚洲а∨无码播放麻豆 | 性做久久久久久久免费看 | 精品国偷自产在线 | 丰满人妻一区二区三区免费视频 | 欧美 日韩 亚洲 在线 | 超碰97人人射妻 | 鲁大师影院在线观看 | 欧美丰满少妇xxxx性 | 狠狠色噜噜狠狠狠狠7777米奇 | 欧美刺激性大交 | 久久久久成人片免费观看蜜芽 | 未满成年国产在线观看 | 欧美freesex黑人又粗又大 | 久久久久久a亚洲欧洲av冫 | 国产亚洲美女精品久久久2020 | 男女下面进入的视频免费午夜 | 老头边吃奶边弄进去呻吟 | 国产深夜福利视频在线 | 国产综合久久久久鬼色 | 亚洲国产欧美国产综合一区 | 亚洲人交乣女bbw | 国产精品无码mv在线观看 | av在线亚洲欧洲日产一区二区 | 欧美xxxx黑人又粗又长 | 国产亚洲日韩欧美另类第八页 | 波多野结衣av一区二区全免费观看 | 日本爽爽爽爽爽爽在线观看免 | 亚洲成av人在线观看网址 | 亚洲 另类 在线 欧美 制服 | 日韩精品乱码av一区二区 | 激情五月综合色婷婷一区二区 | 亚洲中文字幕成人无码 | 激情五月综合色婷婷一区二区 | 亚洲一区二区三区在线观看网站 | 欧美日本免费一区二区三区 | 国产人妻精品一区二区三区 | 久久久久亚洲精品男人的天堂 | 俄罗斯老熟妇色xxxx | 欧美午夜特黄aaaaaa片 | 麻豆精品国产精华精华液好用吗 | 动漫av网站免费观看 | 无码成人精品区在线观看 | 国产亚av手机在线观看 | 中文字幕乱码中文乱码51精品 | 图片区 小说区 区 亚洲五月 | 激情五月综合色婷婷一区二区 | 香港三级日本三级妇三级 | 少妇高潮一区二区三区99 | 国产av无码专区亚洲a∨毛片 | 人人妻人人澡人人爽人人精品浪潮 | 精品aⅴ一区二区三区 | 无码av免费一区二区三区试看 | 十八禁真人啪啪免费网站 | 亚洲国产av美女网站 | 精品国产成人一区二区三区 | 国产精品久久久久无码av色戒 | 婷婷综合久久中文字幕蜜桃三电影 | 久久成人a毛片免费观看网站 | 久久 国产 尿 小便 嘘嘘 | 亚洲成av人在线观看网址 | 亚洲日本一区二区三区在线 | 激情综合激情五月俺也去 | 成人性做爰aaa片免费看不忠 | 中文字幕中文有码在线 | 国产av剧情md精品麻豆 | 免费播放一区二区三区 | 丰满人妻精品国产99aⅴ | 精品无码成人片一区二区98 | 国产精品人人爽人人做我的可爱 | 伊在人天堂亚洲香蕉精品区 | 国产精品久久久一区二区三区 | 久久久婷婷五月亚洲97号色 | 国产精品无码永久免费888 | 青春草在线视频免费观看 | 中文字幕乱码人妻无码久久 | 欧美午夜特黄aaaaaa片 | 曰本女人与公拘交酡免费视频 | 无码人妻丰满熟妇区毛片18 | 日本xxxx色视频在线观看免费 | 无码av岛国片在线播放 | 少妇被粗大的猛进出69影院 | 亚洲熟妇自偷自拍另类 | 熟女俱乐部五十路六十路av | 亚洲 欧美 激情 小说 另类 | 色婷婷久久一区二区三区麻豆 | 欧美日韩一区二区综合 | 天堂无码人妻精品一区二区三区 | 日韩 欧美 动漫 国产 制服 | 2020久久香蕉国产线看观看 | 久久亚洲中文字幕无码 | 中文字幕av日韩精品一区二区 | 18禁止看的免费污网站 | 日日麻批免费40分钟无码 | 国产精品亚洲а∨无码播放麻豆 | 国产69精品久久久久app下载 | 久久久久久久久蜜桃 | 中文字幕乱码亚洲无线三区 | 久久人人爽人人爽人人片av高清 | 高清国产亚洲精品自在久久 | 无码成人精品区在线观看 | 国产97色在线 | 免 | 少妇无码一区二区二三区 | 亚洲人成影院在线观看 | 熟女俱乐部五十路六十路av | 国产真人无遮挡作爱免费视频 | 一二三四社区在线中文视频 | 欧美大屁股xxxxhd黑色 | 久青草影院在线观看国产 | 亚洲色www成人永久网址 | 乌克兰少妇xxxx做受 | 色五月五月丁香亚洲综合网 | 欧美精品国产综合久久 | 婷婷丁香六月激情综合啪 | 国产在线精品一区二区高清不卡 | 思思久久99热只有频精品66 | 久久精品中文字幕一区 | 强辱丰满人妻hd中文字幕 | 强开小婷嫩苞又嫩又紧视频 | 欧美性猛交内射兽交老熟妇 | 性做久久久久久久免费看 | 人人澡人摸人人添 | 亲嘴扒胸摸屁股激烈网站 | 亚洲热妇无码av在线播放 | 久久精品中文闷骚内射 | 成在人线av无码免观看麻豆 | 国产成人无码午夜视频在线观看 | 久久国产精品精品国产色婷婷 | 精品少妇爆乳无码av无码专区 | 一区二区三区乱码在线 | 欧洲 | 国产香蕉97碰碰久久人人 | 台湾无码一区二区 | 国产成人av免费观看 | 精品久久久久香蕉网 | 亚洲成av人片在线观看无码不卡 | 日韩精品成人一区二区三区 | 久久久精品国产sm最大网站 | 免费观看激色视频网站 | 国产精品人妻一区二区三区四 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 性色av无码免费一区二区三区 | 一本加勒比波多野结衣 | 久久综合给合久久狠狠狠97色 | 亚洲欧洲中文日韩av乱码 | 国产午夜亚洲精品不卡下载 | 色情久久久av熟女人妻网站 | 亚洲 a v无 码免 费 成 人 a v | 欧美丰满熟妇xxxx性ppx人交 | 爆乳一区二区三区无码 | 国产亲子乱弄免费视频 | 青青青爽视频在线观看 | 精品国精品国产自在久国产87 | 最新国产乱人伦偷精品免费网站 | 2019午夜福利不卡片在线 | 国产激情无码一区二区 | 亚洲精品久久久久avwww潮水 | 5858s亚洲色大成网站www | 日韩少妇内射免费播放 | 男女猛烈xx00免费视频试看 | 国产av一区二区精品久久凹凸 | 国产亚洲精品久久久ai换 | 国产人成高清在线视频99最全资源 | 欧美大屁股xxxxhd黑色 | 国产无av码在线观看 | 国产亚洲视频中文字幕97精品 | 欧美人与物videos另类 | 男女猛烈xx00免费视频试看 | 亚洲一区二区三区无码久久 | 男女下面进入的视频免费午夜 | 久久综合九色综合欧美狠狠 | 亚洲熟妇色xxxxx欧美老妇 | 国产精品人人爽人人做我的可爱 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产极品美女高潮无套在线观看 | 色欲人妻aaaaaaa无码 | 无码精品人妻一区二区三区av | 国产亚洲精品久久久久久久 | 中文毛片无遮挡高清免费 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲精品综合五月久久小说 | 亚洲理论电影在线观看 | 97精品人妻一区二区三区香蕉 | 国产精品亚洲五月天高清 | 中文亚洲成a人片在线观看 | 国产午夜亚洲精品不卡下载 | 欧美怡红院免费全部视频 | 无码人妻丰满熟妇区五十路百度 | 野狼第一精品社区 | 国产精品二区一区二区aⅴ污介绍 | 乱人伦人妻中文字幕无码久久网 | 少妇性荡欲午夜性开放视频剧场 | 国产精品久久久久久久影院 | 三级4级全黄60分钟 | 狠狠综合久久久久综合网 | 午夜无码区在线观看 | 奇米影视7777久久精品人人爽 | 久久熟妇人妻午夜寂寞影院 | 国产免费久久久久久无码 | 国产精品自产拍在线观看 | 精品乱码久久久久久久 | 久久精品视频在线看15 | 极品尤物被啪到呻吟喷水 | 日本大香伊一区二区三区 | 国产亚洲精品久久久闺蜜 | 亚洲一区二区三区播放 | 丰满人妻精品国产99aⅴ | 亚洲综合色区中文字幕 | 给我免费的视频在线观看 | 国产亚洲欧美在线专区 | 国产情侣作爱视频免费观看 | 国产综合在线观看 | 奇米影视888欧美在线观看 | 亚洲综合无码一区二区三区 | 欧美zoozzooz性欧美 | 福利一区二区三区视频在线观看 | 骚片av蜜桃精品一区 | 国产精品成人av在线观看 | 中文字幕无线码免费人妻 | 国产又粗又硬又大爽黄老大爷视 | 鲁一鲁av2019在线 | 少妇人妻大乳在线视频 | 2020久久香蕉国产线看观看 | 中文字幕久久久久人妻 | 丰满护士巨好爽好大乳 | 波多野结衣av在线观看 | 久久久久久久女国产乱让韩 | 中文字幕av日韩精品一区二区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 在线天堂新版最新版在线8 | 国产av一区二区三区最新精品 | 国产猛烈高潮尖叫视频免费 | 成人无码影片精品久久久 | 最新国产乱人伦偷精品免费网站 | 日韩亚洲欧美中文高清在线 | 黑人巨大精品欧美黑寡妇 | 国产亚洲人成a在线v网站 | 伊人久久大香线蕉亚洲 | 国产两女互慰高潮视频在线观看 | 国产成人无码av一区二区 | 88国产精品欧美一区二区三区 | 国产乱人无码伦av在线a | 国产精华av午夜在线观看 | 欧美午夜特黄aaaaaa片 | 对白脏话肉麻粗话av | 亚洲娇小与黑人巨大交 | 亚洲小说图区综合在线 | 一本色道婷婷久久欧美 | 熟女少妇在线视频播放 | 欧美日韩综合一区二区三区 | 麻豆人妻少妇精品无码专区 | 欧美激情综合亚洲一二区 | 色欲av亚洲一区无码少妇 | 又粗又大又硬毛片免费看 | 亚洲一区二区三区无码久久 | 中国女人内谢69xxxxxa片 | 国精品人妻无码一区二区三区蜜柚 | 久在线观看福利视频 | 国内精品一区二区三区不卡 | 扒开双腿疯狂进出爽爽爽视频 | 午夜福利不卡在线视频 | 欧美性猛交xxxx富婆 | 丰满妇女强制高潮18xxxx | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产国产精品人在线视 | 国产精品美女久久久网av | 久久亚洲中文字幕精品一区 | 色一情一乱一伦一区二区三欧美 | 免费中文字幕日韩欧美 | 午夜嘿嘿嘿影院 | 欧美日韩色另类综合 | 无码av中文字幕免费放 | 成人试看120秒体验区 | a片免费视频在线观看 | 欧美激情内射喷水高潮 | 成人欧美一区二区三区黑人免费 | 少妇被粗大的猛进出69影院 | 天堂а√在线地址中文在线 | 成在人线av无码免费 | 爱做久久久久久 | 捆绑白丝粉色jk震动捧喷白浆 | 日本丰满护士爆乳xxxx | 国产尤物精品视频 | 日本一卡二卡不卡视频查询 | 99久久精品国产一区二区蜜芽 | 亚洲成色www久久网站 | 性色av无码免费一区二区三区 | 特大黑人娇小亚洲女 | 亚洲gv猛男gv无码男同 | 成人精品视频一区二区 | 国产亚洲精品久久久久久久久动漫 | 色婷婷欧美在线播放内射 | 永久免费观看国产裸体美女 | 老熟妇乱子伦牲交视频 | 亚洲成av人片在线观看无码不卡 | 国産精品久久久久久久 | 丰满诱人的人妻3 | 亚洲精品综合一区二区三区在线 | 动漫av一区二区在线观看 | 中文字幕乱码中文乱码51精品 | 麻豆av传媒蜜桃天美传媒 | 亚洲国产综合无码一区 | 久久久中文字幕日本无吗 | 久久精品国产日本波多野结衣 | 久久99精品久久久久婷婷 | 人人澡人摸人人添 | 久久精品国产精品国产精品污 | 久久精品女人的天堂av | 久久国产劲爆∧v内射 | 精品人妻中文字幕有码在线 | 少妇一晚三次一区二区三区 | www成人国产高清内射 | 噜噜噜亚洲色成人网站 | 天天躁夜夜躁狠狠是什么心态 | 鲁鲁鲁爽爽爽在线视频观看 | а√天堂www在线天堂小说 | 欧洲熟妇精品视频 | 久久精品国产一区二区三区肥胖 | 在线播放亚洲第一字幕 | 精品久久久无码人妻字幂 | 黑森林福利视频导航 | 六月丁香婷婷色狠狠久久 | 中文精品无码中文字幕无码专区 | 十八禁视频网站在线观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 无码一区二区三区在线 | 国产 浪潮av性色四虎 | 捆绑白丝粉色jk震动捧喷白浆 | 久青草影院在线观看国产 | 国产一区二区三区日韩精品 | 国产av一区二区精品久久凹凸 | 在线观看国产一区二区三区 | 亚洲高清偷拍一区二区三区 | 伊人久久大香线焦av综合影院 | 色婷婷av一区二区三区之红樱桃 | 国产人妻精品一区二区三区 | 久久精品女人天堂av免费观看 | 精品乱码久久久久久久 | 国产成人一区二区三区在线观看 | 青青草原综合久久大伊人精品 | 国产综合色产在线精品 | 中文字幕乱码人妻无码久久 | 乱码av麻豆丝袜熟女系列 | 久久99精品久久久久婷婷 | 狂野欧美激情性xxxx | 国语自产偷拍精品视频偷 | 亚洲成熟女人毛毛耸耸多 | 最近的中文字幕在线看视频 | 97资源共享在线视频 | 免费看男女做好爽好硬视频 | 红桃av一区二区三区在线无码av | 特大黑人娇小亚洲女 | 日本一本二本三区免费 | 欧美激情一区二区三区成人 | 亚洲gv猛男gv无码男同 | 色综合久久久久综合一本到桃花网 | 一区二区传媒有限公司 | 99久久精品午夜一区二区 | 国产农村妇女高潮大叫 | 日本精品少妇一区二区三区 | 国产精品亚洲lv粉色 | 欧美丰满少妇xxxx性 | 国产精品高潮呻吟av久久 | 久久国产劲爆∧v内射 | 免费无码肉片在线观看 | 永久免费观看美女裸体的网站 | 中文字幕av伊人av无码av | 一本久久a久久精品vr综合 | 最新国产麻豆aⅴ精品无码 | 久久综合九色综合97网 | 免费无码一区二区三区蜜桃大 | 久久这里只有精品视频9 | 一本久久a久久精品vr综合 | 午夜理论片yy44880影院 | 久久无码人妻影院 | 亚洲精品午夜无码电影网 | 国产国语老龄妇女a片 | 高清无码午夜福利视频 | 少妇高潮喷潮久久久影院 | www国产亚洲精品久久久日本 | 亚洲爆乳精品无码一区二区三区 | 国产97人人超碰caoprom | 成人精品视频一区二区 | 日韩人妻无码中文字幕视频 | 中文字幕无线码免费人妻 | 久久亚洲日韩精品一区二区三区 | 亚洲熟妇色xxxxx欧美老妇 | 久久国产自偷自偷免费一区调 | 我要看www免费看插插视频 |