日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

使用pgd和fgsm方法进行攻击并使用map方法评估

發(fā)布時間:2023/12/31 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用pgd和fgsm方法进行攻击并使用map方法评估 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本次實驗對100張飛機圖片組成的數(shù)據(jù)集,分別使用pgd攻擊和fgsm攻擊,達(dá)到對每張圖片飛機區(qū)域的攻擊,并使用getmap程序?qū)舻男ЧM(jìn)行評估。

文章目錄

  • 1、運行1.py程序和auto.py程序?qū)︼w機數(shù)據(jù)集的所有圖片進(jìn)行獲取掩碼操作
    • (1)1.py程序
    • (2)auto.py程序
    • (3)運行后得到自動生成的掩碼圖像
  • 2、使用pgd對數(shù)據(jù)集生成對抗樣本
  • 3、使用fgsm方法生成對抗樣本
  • 4、使用map方法進(jìn)行評估
    • (1)使用get_mappgd對生成的對抗樣本進(jìn)行評估
    • (2)使用get_mapfgsm對生成的對抗樣本進(jìn)行評估

1、運行1.py程序和auto.py程序?qū)︼w機數(shù)據(jù)集的所有圖片進(jìn)行獲取掩碼操作

(1)1.py程序

import os from tqdm import tqdm from PIL import Imagefrom torchvision import transforms from auto import YOLOif __name__ == "__main__":yolo = YOLO()# -------------------------------------------------------------------------## dir_origin_path指定了用于檢測的圖片的文件夾路徑# dir_save_path指定了檢測完圖片的保存路徑# dir_origin_path和dir_save_path僅在mode='dir_predict'時有效dir_origin_path = "/home/yolo程序/yolov4/VOCdevkit/VOC2007/JPEGImages"dir_save_path = "/home/yolo程序/yolov4/patch/mask"img_names = os.listdir(dir_origin_path)for img_name in tqdm(img_names):if img_name.lower().endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff')):image_path = os.path.join(dir_origin_path, img_name)image = Image.open(image_path)mask = yolo.auto_mask(image)toPIL = transforms.ToPILImage() # 這個函數(shù)可以將張量轉(zhuǎn)為PIL圖片,由小數(shù)轉(zhuǎn)為0-255之間的像素值mask = toPIL(mask)if not os.path.exists(dir_save_path):os.makedirs(dir_save_path)mask.save(os.path.join(dir_save_path, img_name))

(2)auto.py程序

import colorsys import os import time import cv2 import numpy as np import torch.nn as nn from PIL import ImageDraw, ImageFontfrom nets.yolo import YoloBody from utils.utils import (cvtColor, get_anchors, get_classes, preprocess_input,resize_image) from utils.utils_bbox import DecodeBoximport torch from torchvision import transforms ''' 訓(xùn)練自己的數(shù)據(jù)集必看注釋! '''class YOLO(object):_defaults = {# --------------------------------------------------------------------------## 使用自己訓(xùn)練好的模型進(jìn)行預(yù)測一定要修改model_path和classes_path!# model_path指向logs文件夾下的權(quán)值文件,classes_path指向model_data下的txt## 訓(xùn)練好后logs文件夾下存在多個權(quán)值文件,選擇驗證集損失較低的即可。# 驗證集損失較低不代表mAP較高,僅代表該權(quán)值在驗證集上泛化性能較好。# 如果出現(xiàn)shape不匹配,同時要注意訓(xùn)練時的model_path和classes_path參數(shù)的修改# --------------------------------------------------------------------------#"model_path": '/home/yolo程序/yolov4/model_data/ep098-loss0.443-val_loss1.670.pth',"classes_path": '/home/yolo程序/yolov4/model_data/dota.txt',# ---------------------------------------------------------------------## anchors_path代表先驗框?qū)?yīng)的txt文件,一般不修改。# anchors_mask用于幫助代碼找到對應(yīng)的先驗框,一般不修改。# ---------------------------------------------------------------------#"anchors_path": '/home/yolo程序/yolov4/model_data/yolo_anchors.txt',"anchors_mask": [[6, 7, 8], [3, 4, 5], [0, 1, 2]],# ---------------------------------------------------------------------## 輸入圖片的大小,必須為32的倍數(shù)。# ---------------------------------------------------------------------#"input_shape": [1024, 1024],# ---------------------------------------------------------------------## 只有得分大于置信度的預(yù)測框會被保留下來# ---------------------------------------------------------------------#"confidence": 0.3,# ---------------------------------------------------------------------## 非極大抑制所用到的nms_iou大小# ---------------------------------------------------------------------#"nms_iou": 0.3,# ---------------------------------------------------------------------## 該變量用于控制是否使用letterbox_image對輸入圖像進(jìn)行不失真的resize,# 在多次測試后,發(fā)現(xiàn)關(guān)閉letterbox_image直接resize的效果更好# ---------------------------------------------------------------------#"letterbox_image": False,# -------------------------------## 是否使用Cuda# 沒有GPU可以設(shè)置成False# -------------------------------#"cuda": True,}@classmethoddef get_defaults(cls, n):if n in cls._defaults:return cls._defaults[n]else:return "Unrecognized attribute name '" + n + "'"# ---------------------------------------------------## 初始化YOLO# ---------------------------------------------------#def __init__(self, **kwargs):self.__dict__.update(self._defaults)for name, value in kwargs.items():setattr(self, name, value)# ---------------------------------------------------## 獲得種類和先驗框的數(shù)量# ---------------------------------------------------#self.class_names, self.num_classes = get_classes(self.classes_path)self.anchors, self.num_anchors = get_anchors(self.anchors_path)self.bbox_util = DecodeBox(self.anchors, self.num_classes, (self.input_shape[0], self.input_shape[1]),self.anchors_mask)# ---------------------------------------------------## 畫框設(shè)置不同的顏色# ---------------------------------------------------#hsv_tuples = [(x / self.num_classes, 1., 1.) for x in range(self.num_classes)]self.colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples))self.colors = list(map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), self.colors))self.generate()# ---------------------------------------------------## 生成模型# ---------------------------------------------------#def generate(self):# ---------------------------------------------------## 建立yolo模型,載入yolo模型的權(quán)重# ---------------------------------------------------#self.net = YoloBody(self.anchors_mask, self.num_classes)device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')# device = torch.device('cpu')self.net.load_state_dict(torch.load(self.model_path, map_location=device))self.net = self.net.eval()print('{} model, anchors, and classes loaded.'.format(self.model_path))if self.cuda:self.net = nn.DataParallel(self.net)self.net = self.net.cuda()# ---------------------------------------------------## 制作mask# ---------------------------------------------------#def auto_mask(self,image):# mask = np.ones((1024, 1024, 3), dtype=float)# mask = mask.transpose(2, 0, 1)# ---------------------------------------------------## 計算輸入圖片的高和寬# ---------------------------------------------------#image_shape = np.array(np.shape(image)[0:2])# ---------------------------------------------------------## 在這里將圖像轉(zhuǎn)換成RGB圖像,防止灰度圖在預(yù)測時報錯。# 代碼僅僅支持RGB圖像的預(yù)測,所有其它類型的圖像都會轉(zhuǎn)化成RGB# ---------------------------------------------------------#image = cvtColor(image)# ---------------------------------------------------------## 給圖像增加灰條,實現(xiàn)不失真的resize# 也可以直接resize進(jìn)行識別# ---------------------------------------------------------#image_data = resize_image(image, (self.input_shape[1], self.input_shape[0]), self.letterbox_image)# ---------------------------------------------------------## 添加上batch_size維度# ---------------------------------------------------------#image_data = np.expand_dims(np.transpose(preprocess_input(np.array(image_data, dtype='float32')), (2, 0, 1)), 0)with torch.no_grad():images = torch.from_numpy(image_data)if self.cuda:images = images.cuda()# ---------------------------------------------------------## 將圖像輸入網(wǎng)絡(luò)當(dāng)中進(jìn)行預(yù)測!# ---------------------------------------------------------#outputs = self.net(images)outputs = self.bbox_util.decode_box(outputs)# ---------------------------------------------------------## 將預(yù)測框進(jìn)行堆疊,然后進(jìn)行非極大抑制# ---------------------------------------------------------#results = self.bbox_util.non_max_suppression(torch.cat(outputs, 1), self.num_classes, self.input_shape,image_shape, self.letterbox_image, conf_thres=self.confidence,nms_thres=self.nms_iou)if results[0] is None:mask = np.ones((3,1024, 1024))mask = torch.from_numpy(mask) # ndarray轉(zhuǎn)換為tensorreturn maskmask = np.zeros((1024, 1024, 3), dtype=np.uint8)top_label = np.array(results[0][:, 6], dtype='int32')top_conf = results[0][:, 4] * results[0][:, 5]top_boxes = results[0][:, :4]# ---------------------------------------------------------## 圖像繪制# ---------------------------------------------------------#for i, c in list(enumerate(top_label)):box = top_boxes[i]top, left, bottom, right = boxtop = max(0, np.floor(top).astype('int32'))left = max(0, np.floor(left).astype('int32'))bottom = min(image.size[1], np.floor(bottom).astype('int32'))right = min(image.size[0], np.floor(right).astype('int32'))polygon = np.array([[left, top], [right, top], [right, bottom], [left, bottom]], np.int32) # 坐標(biāo)為順時針方向cv2.fillConvexPoly(mask, polygon, (255, 255, 255))mask = torch.from_numpy(mask.transpose(2, 0, 1)) # ndarray轉(zhuǎn)換為tensorreturn mask# ---------------------------------------------------## 檢測圖片# ---------------------------------------------------#def detect_image(self, image):# ---------------------------------------------------## 計算輸入圖片的高和寬# ---------------------------------------------------#image_shape = np.array(np.shape(image)[0:2])# ---------------------------------------------------------## 在這里將圖像轉(zhuǎn)換成RGB圖像,防止灰度圖在預(yù)測時報錯。# 代碼僅僅支持RGB圖像的預(yù)測,所有其它類型的圖像都會轉(zhuǎn)化成RGB# ---------------------------------------------------------#image = cvtColor(image)# ---------------------------------------------------------## 給圖像增加灰條,實現(xiàn)不失真的resize# 也可以直接resize進(jìn)行識別# ---------------------------------------------------------#image_data = resize_image(image, (self.input_shape[1], self.input_shape[0]), self.letterbox_image)# ---------------------------------------------------------## 添加上batch_size維度# ---------------------------------------------------------#image_data = np.expand_dims(np.transpose(preprocess_input(np.array(image_data, dtype='float32')), (2, 0, 1)), 0)with torch.no_grad():images = torch.from_numpy(image_data)if self.cuda:images = images.cuda()# ---------------------------------------------------------## 將圖像輸入網(wǎng)絡(luò)當(dāng)中進(jìn)行預(yù)測!# ---------------------------------------------------------#outputs = self.net(images)outputs = self.bbox_util.decode_box(outputs)# ---------------------------------------------------------## 將預(yù)測框進(jìn)行堆疊,然后進(jìn)行非極大抑制# ---------------------------------------------------------#results = self.bbox_util.non_max_suppression(torch.cat(outputs, 1), self.num_classes, self.input_shape,image_shape, self.letterbox_image, conf_thres=self.confidence,nms_thres=self.nms_iou)if results[0] is None:return imagetop_label = np.array(results[0][:, 6], dtype='int32')top_conf = results[0][:, 4] * results[0][:, 5]top_boxes = results[0][:, :4]# ---------------------------------------------------------## 設(shè)置字體與邊框厚度# ---------------------------------------------------------#font = ImageFont.truetype(font='model_data/simhei.ttf',size=np.floor(3e-2 * image.size[1] + 0.5).astype('int32'))thickness = int(max((image.size[0] + image.size[1]) // np.mean(self.input_shape), 1))# ---------------------------------------------------------## 圖像繪制# ---------------------------------------------------------#for i, c in list(enumerate(top_label)):predicted_class = self.class_names[int(c)]box = top_boxes[i]score = top_conf[i]top, left, bottom, right = boxtop = max(0, np.floor(top).astype('int32'))left = max(0, np.floor(left).astype('int32'))bottom = min(image.size[1], np.floor(bottom).astype('int32'))right = min(image.size[0], np.floor(right).astype('int32'))label = '{} {:.2f}'.format(predicted_class, score)draw = ImageDraw.Draw(image)label_size = draw.textsize(label, font)label = label.encode('utf-8')print(label, top, left, bottom, right)if top - label_size[1] >= 0:text_origin = np.array([left, top - label_size[1]])else:text_origin = np.array([left, top + 1])for i in range(thickness):draw.rectangle([left + i, top + i, right - i, bottom - i], outline=self.colors[c])draw.rectangle([tuple(text_origin), tuple(text_origin + label_size)], fill=self.colors[c])draw.text(text_origin, str(label, 'UTF-8'), fill=(0, 0, 0), font=font)del drawreturn imagedef get_FPS(self, image, test_interval):image_shape = np.array(np.shape(image)[0:2])# ---------------------------------------------------------## 在這里將圖像轉(zhuǎn)換成RGB圖像,防止灰度圖在預(yù)測時報錯。# 代碼僅僅支持RGB圖像的預(yù)測,所有其它類型的圖像都會轉(zhuǎn)化成RGB# ---------------------------------------------------------#image = cvtColor(image)# ---------------------------------------------------------## 給圖像增加灰條,實現(xiàn)不失真的resize# 也可以直接resize進(jìn)行識別# ---------------------------------------------------------#image_data = resize_image(image, (self.input_shape[1], self.input_shape[0]), self.letterbox_image)# ---------------------------------------------------------## 添加上batch_size維度# ---------------------------------------------------------#image_data = np.expand_dims(np.transpose(preprocess_input(np.array(image_data, dtype='float32')), (2, 0, 1)), 0)with torch.no_grad():images = torch.from_numpy(image_data)if self.cuda:images = images.cuda()# ---------------------------------------------------------## 將圖像輸入網(wǎng)絡(luò)當(dāng)中進(jìn)行預(yù)測!# ---------------------------------------------------------#outputs = self.net(images)outputs = self.bbox_util.decode_box(outputs)# ---------------------------------------------------------## 將預(yù)測框進(jìn)行堆疊,然后進(jìn)行非極大抑制# ---------------------------------------------------------#results = self.bbox_util.non_max_suppression(torch.cat(outputs, 1), self.num_classes, self.input_shape,image_shape, self.letterbox_image, conf_thres=self.confidence,nms_thres=self.nms_iou)t1 = time.time()for _ in range(test_interval):with torch.no_grad():# ---------------------------------------------------------## 將圖像輸入網(wǎng)絡(luò)當(dāng)中進(jìn)行預(yù)測!# ---------------------------------------------------------#outputs = self.net(images)outputs = self.bbox_util.decode_box(outputs)# ---------------------------------------------------------## 將預(yù)測框進(jìn)行堆疊,然后進(jìn)行非極大抑制# ---------------------------------------------------------#results = self.bbox_util.non_max_suppression(torch.cat(outputs, 1), self.num_classes, self.input_shape,image_shape, self.letterbox_image,conf_thres=self.confidence, nms_thres=self.nms_iou)t2 = time.time()tact_time = (t2 - t1) / test_intervalreturn tact_timedef get_map_txt(self, image_id, image, class_names, map_out_path):f = open(os.path.join(map_out_path, "detection-results/" + image_id + ".txt"), "w")image_shape = np.array(np.shape(image)[0:2])# ---------------------------------------------------------## 在這里將圖像轉(zhuǎn)換成RGB圖像,防止灰度圖在預(yù)測時報錯。# 代碼僅僅支持RGB圖像的預(yù)測,所有其它類型的圖像都會轉(zhuǎn)化成RGB# ---------------------------------------------------------#image = cvtColor(image)# ---------------------------------------------------------## 給圖像增加灰條,實現(xiàn)不失真的resize# 也可以直接resize進(jìn)行識別# ---------------------------------------------------------#image_data = resize_image(image, (self.input_shape[1], self.input_shape[0]), self.letterbox_image)# ---------------------------------------------------------## 添加上batch_size維度# ---------------------------------------------------------#image_data = np.expand_dims(np.transpose(preprocess_input(np.array(image_data, dtype='float32')), (2, 0, 1)), 0)with torch.no_grad():images = torch.from_numpy(image_data)if self.cuda:images = images.cuda()# ---------------------------------------------------------## 將圖像輸入網(wǎng)絡(luò)當(dāng)中進(jìn)行預(yù)測!# ---------------------------------------------------------#outputs = self.net(images)outputs = self.bbox_util.decode_box(outputs)# ---------------------------------------------------------## 將預(yù)測框進(jìn)行堆疊,然后進(jìn)行非極大抑制# ---------------------------------------------------------#results = self.bbox_util.non_max_suppression(torch.cat(outputs, 1), self.num_classes, self.input_shape,image_shape, self.letterbox_image, conf_thres=self.confidence,nms_thres=self.nms_iou)if results[0] is None:returntop_label = np.array(results[0][:, 6], dtype='int32')top_conf = results[0][:, 4] * results[0][:, 5]top_boxes = results[0][:, :4]for i, c in list(enumerate(top_label)):predicted_class = self.class_names[int(c)]box = top_boxes[i]score = str(top_conf[i])top, left, bottom, right = boxif predicted_class not in class_names:continuef.write("%s %s %s %s %s %s\n" % (predicted_class, score[:6], str(int(left)), str(int(top)), str(int(right)), str(int(bottom))))f.close()return

(3)運行后得到自動生成的掩碼圖像


(當(dāng)模型沒有檢測到圖片中飛機的存在時,會將掩碼設(shè)置為全白)

2、使用pgd對數(shù)據(jù)集生成對抗樣本

運行train_PGD.py

#-------------------------------------# # 對數(shù)據(jù)集進(jìn)行訓(xùn)練 #-------------------------------------# import numpy as np from rsa import sign from sqlalchemy import false, true import torch import torch.backends.cudnn as cudnn import torch.optim as optim from torch.utils.data import DataLoaderfrom nets.yolo import YoloBody from nets.yolo_training1 import YOLOLoss, weights_init from utils.callbacks import LossHistory from utils.dataloader import YoloDataset, yolo_dataset_collate from utils.utils import get_anchors, get_classes from utils.utils_fit import fit_one_epochfrom PIL import Image from torchvision import transforms from torch import autograd import torch.nn.functional as F import math import os def getimg(img_path,height,width):#讀取圖片和mask,img = Image.open(img_path)img = img.resize((height,width),Image.ANTIALIAS)if isinstance(img, Image.Image):width_ = img.widthheight_ = img.heightimg = torch.ByteTensor(torch.ByteStorage.from_buffer(img.tobytes()))img = img.view(height_, width_, 3).transpose(0, 1).transpose(0, 2).contiguous()img = img.view(1, 3, height_, width_)img = img.float().div(255.0)elif type(img) == np.ndarray and len(img.shape) == 3: # cv2 imageimg = torch.from_numpy(img.transpose(2, 0, 1)).float().div(255.0).unsqueeze(0)elif type(img) == np.ndarray and len(img.shape) == 4:img = torch.from_numpy(img.transpose(0, 3, 1, 2)).float().div(255.0)elif type(img) == torch.Tensor and len(img.shape) == 4:img = imgelse:print("unknow image type")exit(-1)if cuda :img = img.cuda()return imgdef yolo_single_loss(output, conf_thresh, num_classes, num_anchors, only_objectness=1):# output 是不同大小的feature map(每次輸入一層feature map)if len(output.shape) == 3:output = np.expand_dims(output, axis=0)batch = output.shape[0] # patch數(shù)量,默認(rèn)為1print(output.shape[1])print((5 + num_classes) * num_anchors)assert (output.shape[1] == (5 + num_classes) * num_anchors)h = output.shape[2] # feature map 的寬w = output.shape[3] # feature map 的高 (1, 0, 2)output = output.reshape(batch * num_anchors, 5 + num_classes, h * w).transpose(1, 0).reshape(5 + num_classes,batch * num_anchors * h * w) # 將 feature map 轉(zhuǎn)換為(80+5,*)det_confs = torch.sigmoid(output[4]) # 當(dāng)前feature map該點處存在目標(biāo)的概率 sigmoid(output[4])loss = 0.0idx = np.where((det_confs[:]).cpu().data > conf_thresh)loss += torch.sum(det_confs[idx])return lossdef getmask2():img = np.ones((1024,1024,3),dtype=float)img = torch.from_numpy(img.transpose(2, 0, 1)).float().div(255.0).unsqueeze(0)pmask = np.ones((1024,1024,3),dtype=float)pmask = torch.from_numpy(pmask.transpose(2, 0, 1)).float().div(255.0).unsqueeze(0)for i in range(input_shape[0]):for j in range(input_shape[1]):for k in range(3):if (i>512) & (j>512):pmask[0][k][i][j]=1else:pmask[0][k][i][j]=0print(img.shape)return img,pmask if __name__ == "__main__":epsilon=6eps=0.3alpha=2/255cuda = Trueconf_thresh=0.5norm_ord = 'L2'classes_path = '/home/yolo程序/yolov4/model_data/dota.txt'anchors_path = '/home/yolo程序/yolov4/model_data/yolo_anchors.txt'anchors_mask = [[6, 7, 8], [3, 4, 5], [0, 1, 2]]model_path = '/home/yolo程序/yolov4/model_data/ep098-loss0.443-val_loss1.670.pth'input_shape = [1024, 1024]Cosine_lr = Falsen_epochs = 10batch_size = 1lr = 1e-3num_workers = 4#----------------------------------------------------## 獲取classes和anchor#----------------------------------------------------#class_names, num_classes = get_classes(classes_path)anchors, num_anchors = get_anchors(anchors_path)val_annotation_path = '/home/yolo程序/yolov4/2007_test.txt'val_txt_name = '/home/yolo程序/yolov4/VOCdevkit/VOC2007/ImageSets/Main/test.txt'path = '/home/yolo程序/yolov4/patch/mask/'with open(val_annotation_path) as f:val_lines = f.readlines()line=f.readlineswith open(val_txt_name) as f:data = f.read().splitlines()num_val = len(val_lines)imgList=os.listdir(path)listLen = len(imgList) # 該文件夾圖片個數(shù)listNum = 0with open(val_annotation_path) as f:val_lines = f.readlines()num_val = len(val_lines)with open(val_txt_name) as f:data = f.read().splitlines()val_dataset = YoloDataset(val_lines, input_shape, num_classes, mosaic=False, train = False)gen_val = DataLoader(val_dataset , shuffle =False, batch_size = batch_size, num_workers = num_workers, pin_memory=True, drop_last=True, collate_fn=yolo_dataset_collate)p_img_batch,pmask= getmask2()#------------------------------------------------------## 創(chuàng)建yolo模型#------------------------------------------------------#model = YoloBody(anchors_mask, num_classes)weights_init(model)if model_path != '':#------------------------------------------------------## 權(quán)值文件請看README,百度網(wǎng)盤下載#------------------------------------------------------#print('Load weights {}.'.format(model_path))device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')model_dict = model.state_dict()pretrained_dict = torch.load(model_path, map_location = device)pretrained_dict = {k: v for k, v in pretrained_dict.items() if np.shape(model_dict[k]) == np.shape(v)}model_dict.update(pretrained_dict)model.load_state_dict(model_dict)yolo_loss = YOLOLoss(anchors, num_classes, input_shape, cuda, anchors_mask)if cuda:model_train = torch.nn.DataParallel(model)cudnn.benchmark = Truemodel_train = model_train.cuda()p_img_batch = p_img_batch.cuda()pmask= pmask.cuda()p_img_batch.requires_grad_(True)optimizer = optim.Adam([p_img_batch], lr, weight_decay = 5e-4)if Cosine_lr:lr_scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=5, eta_min=1e-5)else:lr_scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=1, gamma=0.94)model_train = model.eval()#tensor設(shè)置可求導(dǎo)迭代多少輪for epoch in range(n_epochs):loss = 0val_loss = 0print("epochs:"+str(epoch) )for iteration, batch in enumerate(gen_val):pm = getimg(path+data[iteration]+'.jpg',input_shape[0], input_shape[1])images, targets = batch[0], batch[1]#pm = getimg(path+data[iteration]+'.jpg',input_shape[0], input_shape[1])if cuda:images = torch.from_numpy(images).type(torch.FloatTensor).cuda()targets = [torch.from_numpy(ann).type(torch.FloatTensor).cuda() for ann in targets]else:images = torch.from_numpy(images).type(torch.FloatTensor)targets = [torch.from_numpy(ann).type(torch.FloatTensor) for ann in targets]images.requires_grad_(True)temp=p_img_batch*pmaskadv_images=p_img_batch*pm + images#adv_images = p_img_batch*pmask+images#adv_images = p_img_batch+imagesoutputs= model_train(adv_images)img1 = F.interpolate(adv_images, (input_shape[0], input_shape[1]))img1 = img1[0, :, :,]imm1 = transforms.ToPILImage('RGB')(img1)imm1.save("/home/yolo程序/yolov4/patch/PGD/img/"+ data[iteration] +".jpg")img1 = F.interpolate(p_img_batch, (input_shape[0], input_shape[1]))img1 = img1[0, :, :,]imm1 = transforms.ToPILImage('RGB')(img1)imm1.save("/home/yolo程序/yolov4/patch/PGD/adv/p_img_batch.jpg")# img3 = F.interpolate(temp, (input_shape[0], input_shape[1]))# img3 = img3[0, :, :,]# imm3 = transforms.ToPILImage('RGB')(img3)# imm3.save("D:/Anaconda3.8/python/yolov4/patch/PGDare/adv/pmask3"+ data[iteration] +".jpg")loss_value_all = 0num_pos_all = 0#----------------------## 計算損失#----------------------#for l in range(len(outputs)):loss, loss_loc ,loss_conf ,loss_cls,num_pos = yolo_loss(l,outputs[l],targets)loss_item=loss_confloss_value_all += loss_itemnum_pos_all += num_posloss_value = loss_value_all / num_pos_allgrad= torch.autograd.grad(loss_item,adv_images,retain_graph=False,create_graph=False)[0]adv_images = adv_images.detach()+alpha*grad.sign()delta = torch.clamp(adv_images-images, min=-eps, max=eps)adv_images = torch.clamp(images + delta, min=0, max=1).detach()p_img_batch=adv_images-images#p_img_batch.clip_(0,1)optimizer.zero_grad()loss += loss_value.item()print(loss)

得到的對抗樣本只有少部分被系統(tǒng)識別飛機并生成對抗
左圖沒有生成明顯對抗,右圖生成了明顯對抗

3、使用fgsm方法生成對抗樣本

將train_PGD.py修改為使用fgsm方法,形成train_fgsm.py文件

import numpy as np from rsa import sign from sqlalchemy import false, true import torch import torch.backends.cudnn as cudnn import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoaderfrom nets.yolo import YoloBody from nets.yolo_training1 import YOLOLoss, weights_init from utils.callbacks import LossHistory from utils.dataloader import YoloDataset, yolo_dataset_collate from utils.utils import get_anchors, get_classes from utils.utils_fit import fit_one_epochfrom PIL import Image from torchvision import transforms from torch import autograd import torch.nn.functional as F import math import osdef getimg(img_path,height,width):#讀取圖片和mask,img = Image.open(img_path)img = img.resize((height,width),Image.ANTIALIAS)if isinstance(img, Image.Image):width_ = img.widthheight_ = img.heightimg = torch.ByteTensor(torch.ByteStorage.from_buffer(img.tobytes()))img = img.view(height_, width_, 3).transpose(0, 1).transpose(0, 2).contiguous()img = img.view(1, 3, height_, width_)img = img.float().div(255.0)elif type(img) == np.ndarray and len(img.shape) == 3: # cv2 imageimg = torch.from_numpy(img.transpose(2, 0, 1)).float().div(255.0).unsqueeze(0)elif type(img) == np.ndarray and len(img.shape) == 4:img = torch.from_numpy(img.transpose(0, 3, 1, 2)).float().div(255.0)elif type(img) == torch.Tensor and len(img.shape) == 4:img = imgelse:print("unknow image type")exit(-1)if cuda :img = img.cuda()return imgdef fgsm_attack(image, epsilon, data_grad):# 使用sign(符號)函數(shù),將對x求了偏導(dǎo)的梯度進(jìn)行符號化(正數(shù)為1,零為0,負(fù)數(shù)為-1)sign_data_grad = data_grad.sign()# 通過epsilon生成對抗樣本perturbed_image = image + epsilon * sign_data_grad# 噪聲越來越大,機器越來越難以識別,但人眼可以看出差別# 做一個剪裁的工作,將torch.clamp內(nèi)部大于1的數(shù)值變?yōu)?,小于0的數(shù)值等于0,防止image越界perturbed_image = torch.clamp(perturbed_image, 0, 1)# 返回對抗樣本return perturbed_imagedef getmask2():img = np.ones((1024,1024,3),dtype=float)img = torch.from_numpy(img.transpose(2, 0, 1)).float().div(255.0).unsqueeze(0)pmask = np.ones((1024,1024,3),dtype=float)pmask = torch.from_numpy(pmask.transpose(2, 0, 1)).float().div(255.0).unsqueeze(0)for i in range(input_shape[0]):for j in range(input_shape[1]):for k in range(3):if (i>512) & (j>512):pmask[0][k][i][j]=1else:pmask[0][k][i][j]=0print(img.shape)return img,pmaskif __name__ == "__main__":epsilon=6eps=0.3alpha=2/255cuda = Trueconf_thresh=0.5norm_ord = 'L2'classes_path = '/home/yolo程序/yolov4/model_data/dota.txt'anchors_path = '/home/yolo程序/yolov4/model_data/yolo_anchors.txt'anchors_mask = [[6, 7, 8], [3, 4, 5], [0, 1, 2]]model_path = '/home/yolo程序/yolov4/model_data/ep098-loss0.443-val_loss1.670.pth'input_shape = [1024, 1024]Cosine_lr = Falsen_epochs = 10batch_size = 1lr = 1e-3num_workers = 4# ----------------------------------------------------## 獲取classes和anchor# ----------------------------------------------------#class_names, num_classes = get_classes(classes_path)anchors, num_anchors = get_anchors(anchors_path)val_annotation_path = '/home/yolo程序/yolov4/2007_test.txt'val_txt_name = '/home/yolo程序/yolov4/VOCdevkit/VOC2007/ImageSets/Main/test.txt'path = '/home/yolo程序/yolov4/patch/mask/'with open(val_annotation_path) as f:val_lines = f.readlines()line = f.readlineswith open(val_txt_name) as f:data = f.read().splitlines()num_val = len(val_lines)imgList = os.listdir(path)listLen = len(imgList) # 該文件夾圖片個數(shù)listNum = 0with open(val_annotation_path) as f:val_lines = f.readlines()num_val = len(val_lines)with open(val_txt_name) as f:data = f.read().splitlines()val_dataset = YoloDataset(val_lines, input_shape, num_classes, mosaic=False, train=False)gen_val = DataLoader(val_dataset, shuffle=False, batch_size=batch_size, num_workers=num_workers, pin_memory=True,drop_last=True, collate_fn=yolo_dataset_collate)p_img_batch, pmask = getmask2()# ------------------------------------------------------## 創(chuàng)建yolo模型# ------------------------------------------------------#model = YoloBody(anchors_mask, num_classes)weights_init(model)if model_path != '':# ------------------------------------------------------## 權(quán)值文件請看README,百度網(wǎng)盤下載# ------------------------------------------------------#print('Load weights {}.'.format(model_path))device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')model_dict = model.state_dict()pretrained_dict = torch.load(model_path, map_location=device)pretrained_dict = {k: v for k, v in pretrained_dict.items() if np.shape(model_dict[k]) == np.shape(v)}model_dict.update(pretrained_dict)model.load_state_dict(model_dict)yolo_loss = YOLOLoss(anchors, num_classes, input_shape, cuda, anchors_mask)if cuda:model_train = torch.nn.DataParallel(model)cudnn.benchmark = Truemodel_train = model_train.cuda()p_img_batch = p_img_batch.cuda()pmask = pmask.cuda()p_img_batch.requires_grad_(True)# optimizer = optim.Adam([p_img_batch], lr, weight_decay=5e-4)# if Cosine_lr:# lr_scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=5, eta_min=1e-5)# else:# lr_scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=1, gamma=0.94)## model_train = model.eval()# ============================ step 3/5 損失函數(shù) ============================criterion = nn.CrossEntropyLoss() # 選擇損失函數(shù)# ============================ step 4/5 優(yōu)化器 ============================optimizer = optim.SGD(model.parameters(), lr=lr, momentum=0.9) # 選擇優(yōu)化器scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.1) # 設(shè)置學(xué)習(xí)率下降策略# ============================ step 5/5 訓(xùn)練 ============================train_curve = list()valid_curve = list()for epoch in range(n_epochs):loss_mean = 0.correct = 0.total = 0.model.train()print("epochs:" + str(epoch))for iteration, batch in enumerate(gen_val):pm = getimg(path+data[iteration]+'.jpg',input_shape[0], input_shape[1])images, targets = batch[0], batch[1]#pm = getimg(path+data[iteration]+'.jpg',input_shape[0], input_shape[1])if cuda:images = torch.from_numpy(images).type(torch.FloatTensor).cuda()targets = [torch.from_numpy(ann).type(torch.FloatTensor).cuda() for ann in targets]else:images = torch.from_numpy(images).type(torch.FloatTensor)targets = [torch.from_numpy(ann).type(torch.FloatTensor) for ann in targets]images.requires_grad_(True)temp=p_img_batch*pmaskadv_images=p_img_batch*pm + imagesoutputs = model_train(adv_images)img1 = F.interpolate(adv_images, (input_shape[0], input_shape[1]))img1 = img1[0, :, :, ]imm1 = transforms.ToPILImage('RGB')(img1)imm1.save("/home/yolo程序/yolov4/patch/fgsm/img/" + data[iteration] + ".jpg")img1 = F.interpolate(p_img_batch, (input_shape[0], input_shape[1]))img1 = img1[0, :, :, ]imm1 = transforms.ToPILImage('RGB')(img1)imm1.save("/home/yolo程序/yolov4/patch/fgsm/adv/p_img_batch.jpg")loss_value_all = 0num_pos_all = 0# ----------------------## 計算損失# ----------------------#for l in range(len(outputs)):loss, loss_loc, loss_conf, loss_cls, num_pos = yolo_loss(l, outputs[l], targets)loss_item = loss_confloss_value_all += loss_itemnum_pos_all += num_posloss_value = loss_value_all / num_pos_all# loss = criterion(outputs, targets)# loss.backward()# 收集datagrad# data_grad = adv_images.grad.datagrad = torch.autograd.grad(loss, adv_images, retain_graph=False, create_graph=False)[0]# 調(diào)用FGSM攻擊perturbed_data = fgsm_attack(adv_images, eps, grad)adv_images = adv_images.detach() + alpha * grad.sign()delta = torch.clamp(adv_images - images, min=-eps, max=eps)adv_images = torch.clamp(images + delta, min=0, max=1).detach()p_img_batch = adv_images - images# p_img_batch.clip_(0,1)optimizer.zero_grad()loss += loss.item()# loss.backward()print(loss)

生成的對抗樣本對大部分圖片有明顯攻擊

4、使用map方法進(jìn)行評估

(1)使用get_mappgd對生成的對抗樣本進(jìn)行評估

import os import xml.etree.ElementTree as ETfrom PIL import Image from tqdm import tqdmfrom utils.utils import get_classes from utils.utils_map import get_coco_map, get_map from yolo import YOLOos.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'if __name__ == "__main__":'''Recall和Precision不像AP是一個面積的概念,在門限值不同時,網(wǎng)絡(luò)的Recall和Precision值是不同的。map計算結(jié)果中的Recall和Precision代表的是當(dāng)預(yù)測時,門限置信度為0.5時,所對應(yīng)的Recall和Precision值。此處獲得的./map_out/detection-results/里面的txt的框的數(shù)量會比直接predict多一些,這是因為這里的門限低,目的是為了計算不同門限條件下的Recall和Precision值,從而實現(xiàn)map的計算。'''#------------------------------------------------------------------------------------------------------------------## map_mode用于指定該文件運行時計算的內(nèi)容# map_mode為0代表整個map計算流程,包括獲得預(yù)測結(jié)果、獲得真實框、計算VOC_map。# map_mode為1代表僅僅獲得預(yù)測結(jié)果。# map_mode為2代表僅僅獲得真實框。# map_mode為3代表僅僅計算VOC_map。# map_mode為4代表利用COCO工具箱計算當(dāng)前數(shù)據(jù)集的0.50:0.95map。需要獲得預(yù)測結(jié)果、獲得真實框后并安裝pycocotools才行#-------------------------------------------------------------------------------------------------------------------#map_mode = 0#-------------------------------------------------------## 此處的classes_path用于指定需要測量VOC_map的類別# 一般情況下與訓(xùn)練和預(yù)測所用的classes_path一致即可#-------------------------------------------------------#classes_path = '/home/yolo程序/yolov4/model_data/dota.txt'#-------------------------------------------------------## MINOVERLAP用于指定想要獲得的mAP0.x# 比如計算mAP0.75,可以設(shè)定MINOVERLAP = 0.75。#-------------------------------------------------------#MINOVERLAP = 0.5#-------------------------------------------------------## map_vis用于指定是否開啟VOC_map計算的可視化#-------------------------------------------------------#map_vis = False#-------------------------------------------------------## 指向VOC數(shù)據(jù)集所在的文件夾# 默認(rèn)指向根目錄下的VOC數(shù)據(jù)集#-------------------------------------------------------#VOCdevkit_path = '/home/yolo程序/yolov4/VOCdevkit'#-------------------------------------------------------## 結(jié)果輸出的文件夾,默認(rèn)為map_out#-------------------------------------------------------#map_out_path = '/home/yolo程序/yolov4/patch/PGD/map_oup-mom'image_ids = open(os.path.join(VOCdevkit_path, "VOC2007/ImageSets/Main/test.txt")).read().strip().split()if not os.path.exists(map_out_path):os.makedirs(map_out_path)if not os.path.exists(os.path.join(map_out_path, 'ground-truth')):os.makedirs(os.path.join(map_out_path, 'ground-truth'))if not os.path.exists(os.path.join(map_out_path, 'detection-results')):os.makedirs(os.path.join(map_out_path, 'detection-results'))if not os.path.exists(os.path.join(map_out_path, 'images-optional')):os.makedirs(os.path.join(map_out_path, 'images-optional'))class_names, _ = get_classes(classes_path)if map_mode == 0 or map_mode == 1:print("Load model.")yolo = YOLO(confidence = 0.001, nms_iou = 0.5)print("Load model done.")print("Get predict result.")for image_id in tqdm(image_ids):image_path = os.path.join("/home/yolo程序/yolov4/patch/PGD/img/"+image_id+".jpg")image = Image.open(image_path)if map_vis:image.save(os.path.join(map_out_path, "images-optional/" + image_id + ".jpg"))yolo.get_map_txt(image_id, image, class_names, map_out_path)print("Get predict result done.")if map_mode == 0 or map_mode == 2:print("Get ground truth result.")for image_id in tqdm(image_ids):with open(os.path.join(map_out_path, "ground-truth/"+image_id+".txt"), "w") as new_f:root = ET.parse(os.path.join(VOCdevkit_path, "VOC2007/Annotations/"+image_id+".xml")).getroot()for obj in root.findall('object'):difficult_flag = Falseif obj.find('difficult')!=None:difficult = obj.find('difficult').textif int(difficult)==1:difficult_flag = Trueobj_name = obj.find('name').textif obj_name not in class_names:continuebndbox = obj.find('bndbox')left = bndbox.find('xmin').texttop = bndbox.find('ymin').textright = bndbox.find('xmax').textbottom = bndbox.find('ymax').textif difficult_flag:new_f.write("%s %s %s %s %s difficult\n" % (obj_name, left, top, right, bottom))else:new_f.write("%s %s %s %s %s\n" % (obj_name, left, top, right, bottom))print("Get ground truth result done.")if map_mode == 0 or map_mode == 3:print("Get map.")get_map(MINOVERLAP, True, path = map_out_path)print("Get map done.")if map_mode == 4:print("Get map.")get_coco_map(class_names = class_names, path = map_out_path)print("Get map done.")#***********************************************************************************map_out_path = 'D:/yolov4/patch/PGD/map_oup-imgforloc1'image_ids = open(os.path.join(VOCdevkit_path, "VOC2007/ImageSets/Main/test.txt")).read().strip().split()if not os.path.exists(map_out_path):os.makedirs(map_out_path)if not os.path.exists(os.path.join(map_out_path, 'ground-truth')):os.makedirs(os.path.join(map_out_path, 'ground-truth'))if not os.path.exists(os.path.join(map_out_path, 'detection-results')):os.makedirs(os.path.join(map_out_path, 'detection-results'))if not os.path.exists(os.path.join(map_out_path, 'images-optional')):os.makedirs(os.path.join(map_out_path, 'images-optional'))class_names, _ = get_classes(classes_path)if map_mode == 0 or map_mode == 1:print("Load model.")yolo = YOLO(confidence = 0.001, nms_iou = 0.5)print("Load model done.")print("Get predict result.")for image_id in tqdm(image_ids):image_path = os.path.join(VOCdevkit_path, "../yolov4/patch/PGD/imgforloc1/"+image_id+".jpg")image = Image.open(image_path)if map_vis:image.save(os.path.join(map_out_path, "images-optional/" + image_id + ".jpg"))yolo.get_map_txt(image_id, image, class_names, map_out_path)print("Get predict result done.")if map_mode == 0 or map_mode == 2:print("Get ground truth result.")for image_id in tqdm(image_ids):with open(os.path.join(map_out_path, "ground-truth/"+image_id+".txt"), "w") as new_f:root = ET.parse(os.path.join(VOCdevkit_path, "VOC2007/Annotations/"+image_id+".xml")).getroot()for obj in root.findall('object'):difficult_flag = Falseif obj.find('difficult')!=None:difficult = obj.find('difficult').textif int(difficult)==1:difficult_flag = Trueobj_name = obj.find('name').textif obj_name not in class_names:continuebndbox = obj.find('bndbox')left = bndbox.find('xmin').texttop = bndbox.find('ymin').textright = bndbox.find('xmax').textbottom = bndbox.find('ymax').textif difficult_flag:new_f.write("%s %s %s %s %s difficult\n" % (obj_name, left, top, right, bottom))else:new_f.write("%s %s %s %s %s\n" % (obj_name, left, top, right, bottom))print("Get ground truth result done.")if map_mode == 0 or map_mode == 3:print("Get map.")get_map(MINOVERLAP, True, path = map_out_path)print("Get map done.")if map_mode == 4:print("Get map.")get_coco_map(class_names = class_names, path = map_out_path)print("Get map done.")

運行結(jié)果

(2)使用get_mapfgsm對生成的對抗樣本進(jìn)行評估

import os import xml.etree.ElementTree as ETfrom PIL import Image from tqdm import tqdmfrom utils.utils import get_classes from utils.utils_map import get_coco_map, get_map from yolo import YOLOos.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'if __name__ == "__main__":'''Recall和Precision不像AP是一個面積的概念,在門限值不同時,網(wǎng)絡(luò)的Recall和Precision值是不同的。map計算結(jié)果中的Recall和Precision代表的是當(dāng)預(yù)測時,門限置信度為0.5時,所對應(yīng)的Recall和Precision值。此處獲得的./map_out/detection-results/里面的txt的框的數(shù)量會比直接predict多一些,這是因為這里的門限低,目的是為了計算不同門限條件下的Recall和Precision值,從而實現(xiàn)map的計算。'''#------------------------------------------------------------------------------------------------------------------## map_mode用于指定該文件運行時計算的內(nèi)容# map_mode為0代表整個map計算流程,包括獲得預(yù)測結(jié)果、獲得真實框、計算VOC_map。# map_mode為1代表僅僅獲得預(yù)測結(jié)果。# map_mode為2代表僅僅獲得真實框。# map_mode為3代表僅僅計算VOC_map。# map_mode為4代表利用COCO工具箱計算當(dāng)前數(shù)據(jù)集的0.50:0.95map。需要獲得預(yù)測結(jié)果、獲得真實框后并安裝pycocotools才行#-------------------------------------------------------------------------------------------------------------------#map_mode = 0#-------------------------------------------------------## 此處的classes_path用于指定需要測量VOC_map的類別# 一般情況下與訓(xùn)練和預(yù)測所用的classes_path一致即可#-------------------------------------------------------#classes_path = '/home/yolo程序/yolov4/model_data/dota.txt'#-------------------------------------------------------## MINOVERLAP用于指定想要獲得的mAP0.x# 比如計算mAP0.75,可以設(shè)定MINOVERLAP = 0.75。#-------------------------------------------------------#MINOVERLAP = 0.5#-------------------------------------------------------## map_vis用于指定是否開啟VOC_map計算的可視化#-------------------------------------------------------#map_vis = False#-------------------------------------------------------## 指向VOC數(shù)據(jù)集所在的文件夾# 默認(rèn)指向根目錄下的VOC數(shù)據(jù)集#-------------------------------------------------------#VOCdevkit_path = '/home/yolo程序/yolov4/VOCdevkit'#-------------------------------------------------------## 結(jié)果輸出的文件夾,默認(rèn)為map_out#-------------------------------------------------------#map_out_path = '/home/yolo程序/yolov4/patch/fgsm/map_oup-fgsm'image_ids = open(os.path.join(VOCdevkit_path, "VOC2007/ImageSets/Main/test.txt")).read().strip().split()if not os.path.exists(map_out_path):os.makedirs(map_out_path)if not os.path.exists(os.path.join(map_out_path, 'ground-truth')):os.makedirs(os.path.join(map_out_path, 'ground-truth'))if not os.path.exists(os.path.join(map_out_path, 'detection-results')):os.makedirs(os.path.join(map_out_path, 'detection-results'))if not os.path.exists(os.path.join(map_out_path, 'images-optional')):os.makedirs(os.path.join(map_out_path, 'images-optional'))class_names, _ = get_classes(classes_path)if map_mode == 0 or map_mode == 1:print("Load model.")yolo = YOLO(confidence=0.001, nms_iou=0.5)print("Load model done.")print("Get predict result.")for image_id in tqdm(image_ids):image_path = os.path.join("/home/yolo程序/yolov4/patch/fgsm/img/" + image_id + ".jpg")image = Image.open(image_path)if map_vis:image.save(os.path.join(map_out_path, "images-optional/" + image_id + ".jpg"))yolo.get_map_txt(image_id, image, class_names, map_out_path)print("Get predict result done.")if map_mode == 0 or map_mode == 2:print("Get ground truth result.")for image_id in tqdm(image_ids):with open(os.path.join(map_out_path, "ground-truth/" + image_id + ".txt"), "w") as new_f:root = ET.parse(os.path.join(VOCdevkit_path, "VOC2007/Annotations/" + image_id + ".xml")).getroot()for obj in root.findall('object'):difficult_flag = Falseif obj.find('difficult') != None:difficult = obj.find('difficult').textif int(difficult) == 1:difficult_flag = Trueobj_name = obj.find('name').textif obj_name not in class_names:continuebndbox = obj.find('bndbox')left = bndbox.find('xmin').texttop = bndbox.find('ymin').textright = bndbox.find('xmax').textbottom = bndbox.find('ymax').textif difficult_flag:new_f.write("%s %s %s %s %s difficult\n" % (obj_name, left, top, right, bottom))else:new_f.write("%s %s %s %s %s\n" % (obj_name, left, top, right, bottom))print("Get ground truth result done.")if map_mode == 0 or map_mode == 3:print("Get map.")get_map(MINOVERLAP, True, path=map_out_path)print("Get map done.")if map_mode == 4:print("Get map.")get_coco_map(class_names=class_names, path=map_out_path)print("Get map done.")

結(jié)果

總結(jié)

以上是生活随笔為你收集整理的使用pgd和fgsm方法进行攻击并使用map方法评估的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产国产人免费人成免费视频 | 福利电影久久 | 日韩精品在线一区 | 西西4444www大胆艺术 | 亚洲 欧美 91 | 亚洲精品久久在线 | 成人欧美亚洲 | 在线观看免费中文字幕 | 国产午夜一级毛片 | 免费一级片视频 | 久久精品9| 91视频久久久久久 | 欧美国产日韩一区二区三区 | av一区在线播放 | 精品色999| 九九爱免费视频 | 在线观看不卡视频 | 日日碰狠狠躁久久躁综合网 | 欧美亚洲国产一卡 | 色婷五月天 | 久久国内精品99久久6app | 片网站 | 国内99视频 | 96精品在线 | 中文字幕丝袜制服 | 91精品国产99久久久久 | 西西4444www大胆无视频 | 视频在线99re | 欧美精品一区二区性色 | 日韩电影一区二区三区在线观看 | 91高清视频在线 | 狠狠色丁香婷婷综合最新地址 | 在线观看91精品国产网站 | 国产99区| 精品国产电影一区二区 | 国产精品入口久久 | 黄网站色成年免费观看 | 丁香久久五月 | 97超碰在线免费 | 美女久久一区 | 在线视频 影院 | 在线亚洲成人 | 久久香蕉电影网 | 久久网页 | av综合站| 久久国产品 | 超碰在线97免费 | 一本一道久久a久久精品蜜桃 | 色偷偷男人的天堂av | 国产一区二区在线免费播放 | 成人羞羞免费 | 五月婷婷另类国产 | 国产日本在线观看 | 亚洲成a人片77777潘金莲 | 91一区啪爱嗯打偷拍欧美 | 日韩久久久久久久久久 | 婷婷免费在线视频 | 能在线观看的日韩av | 欧美日韩视频一区二区 | 婷婷深爱| 人人爽人人做 | 亚洲国产高清在线观看视频 | 欧美不卡视频在线 | 国产最新视频在线观看 | 久久久精品电影 | 日韩av高清| 一级黄色免费网站 | 中文字幕日韩电影 | 在线国产视频观看 | 成人试看120秒 | 成人毛片在线观看视频 | 国产在线观看xxx | 五月天久久久久久 | 日韩在线视 | 激情小说网站亚洲综合网 | 欧美热久久 | 亚洲高清视频一区二区三区 | 亚洲午夜在线视频 | 超碰公开在线 | 久久免费激情视频 | 五月婷婷激情五月 | 91精品国产麻豆 | 久久经典视频 | 97人人射 | 99 视频 高清 | av免费成人 | japanesexxxhd奶水| 亚洲播播 | 久久久久久久久久久高潮一区二区 | 欧美成人按摩 | 黄p网站在线观看 | 国产91全国探花系列在线播放 | 久久中文字幕导航 | 五月天婷婷在线观看视频 | 国产成人免费精品 | 欧美性色黄大片在线观看 | 日韩精品免费在线 | 国产精品久久久久av免费 | 蜜臀av性久久久久av蜜臀三区 | 亚洲电影免费 | 五月视频 | 最近2019中文免费高清视频观看www99 | 狠狠色丁香婷婷综合久小说久 | 国产亚洲精品女人久久久久久 | 婷婷激情欧美 | 日韩精品中文字幕一区二区 | 一区二区三区四区久久 | 久久精品免费 | 国产在线看一区 | 啪啪av在线 | 日韩欧美亚州 | www.狠狠操.com | 欧洲精品码一区二区三区免费看 | 国产精品女人久久久 | 国产亚洲一区二区三区 | 日韩欧美在线影院 | 日产乱码一二三区别免费 | 人人射人人插 | 日韩大片在线免费观看 | 久久综合中文字幕 | 97视频在线观看网址 | 久久超级碰 | 久久99精品国产99久久6尤 | 国产视频一区二区在线播放 | 欧美日韩不卡一区二区三区 | 国产在线综合视频 | 婷婷六月中文字幕 | 国产日韩视频在线 | 色综合天天射 | 一级电影免费在线观看 | 免费黄色在线网址 | 久久久久久久久久影院 | 精品理论片 | www.黄色片网站 | 91麻豆精品国产自产在线 | 日韩手机在线观看 | 亚洲视频观看 | 日日干网址 | 国产精品永久久久久久久久久 | 91九色porny蝌蚪主页 | 99re久久精品国产 | 激情视频二区 | 欧美日韩国产网站 | 国产日韩欧美精品在线观看 | 国产精品成人一区二区三区 | 在线看片中文字幕 | 久久国产欧美日韩 | 91亚洲精品久久久蜜桃借种 | 精品久久久久亚洲 | 天天草天天干天天射 | 日本在线观看视频一区 | 91视频高清免费 | 在线观看黄色大片 | 一级黄色a视频 | 国产在线传媒 | 国产成人久久精品亚洲 | 免费看色的网站 | 国产成人黄色网址 | 黄色一区三区 | 久久久99精品免费观看app | 五月天色综合 | 欧美va天堂在线电影 | 国产亚洲精品bv在线观看 | 久久国产精品视频观看 | 日韩性久久 | 中文字幕视频播放 | 国产精品少妇 | 国产成人99av超碰超爽 | 亚洲激情免费 | 99精品久久精品一区二区 | 久久久久久久久久免费 | 欧美日韩国产精品一区二区 | 狠狠色综合网站久久久久久久 | 91麻豆视频 | 182午夜在线观看 | 久久精品伊人 | 久久激情五月婷婷 | 91中文字幕在线播放 | 97超碰资源网 | 97天天综合网 | 久久电影日韩 | 久久久久久久av | 97视频在线观看播放 | 黄色成人在线网站 | 天堂激情网| 欧美日韩中文字幕视频 | 五月婷网| 91成人免费视频 | 在线观看中文字幕 | 四虎国产精品成人免费影视 | 91视频在线免费下载 | 久久国产精品免费观看 | 日韩欧美69 | 欧美精品国产综合久久 | 三级黄色片子 | 欧美三级高清 | 中文字幕乱码在线播放 | 中文字幕在线播放一区二区 | 午夜精品影院 | 国产精品网红福利 | 三级免费黄色 | 精品国产电影一区二区 | 亚洲高清国产视频 | 日韩精品一区二区三区免费观看 | 毛片网免费 | 国产成人61精品免费看片 | 黄色三级在线观看 | se视频网址 | 国产成人精品网站 | 免费日韩 精品中文字幕视频在线 | 国产精彩视频一区 | 免费黄色看片 | 欧美日韩性视频在线 | 少妇按摩av | 国产亚洲免费的视频看 | 亚洲午夜精品一区二区三区电影院 | 国产麻豆精品免费视频 | 免费看的黄网站 | 国产日韩一区在线 | 99久久精品久久亚洲精品 | 亚洲区色 | 色天天综合久久久久综合片 | 黄色a三级| 亚洲一区二区精品视频 | 韩日av一区二区 | 亚洲精品国产日韩 | 日韩大片在线免费观看 | 久久免费av | 日本一区二区高清不卡 | 成人网看片| 国产高清视频免费在线观看 | 亚洲视频2| 日韩一二区在线观看 | 天天摸天天舔 | 久久国产精品免费观看 | 最近中文字幕完整视频高清1 | 久久av中文字幕片 | 日本公乱妇视频 | 在线看片91| 一区在线电影 | 在线观看电影av | 国产高清视频免费观看 | 亚洲九九九在线观看 | 久久久精品网站 | 国产亚洲一区二区在线观看 | 国产精品毛片久久久久久久 | 在线观看视频在线 | 中文字幕中文字幕在线中文字幕三区 | 国产成人亚洲在线观看 | 免费高清av在线看 | 在线a亚洲视频播放在线观看 | av一区二区三区在线观看 | 999亚洲国产996395 | 一区二区欧美日韩 | 在线成人免费电影 | 成人网在线免费视频 | 国产高清成人在线 | 亚洲情影院| 精品免费久久久久 | 国产99色 | 久久成人综合 | 婷婷久月 | 免费不卡中文字幕视频 | 久一久久 | 不卡的av片 | 亚洲视频www | 国产精品密入口果冻 | 久久久免费毛片 | 欧美日韩国产精品一区二区亚洲 | 日日日操操 | 成片人卡1卡2卡3手机免费看 | 黄色成人av网址 | 中文字幕在线观看视频一区二区三区 | 97福利在线 | 国产精品一区二区美女视频免费看 | 91精品在线麻豆 | 精品自拍sae8—视频 | 国产第一福利网 | 亚洲成a人片77777kkkk1在线观看 | 国产精品中文字幕在线 | 亚洲天堂在线观看完整版 | 色偷偷88888欧美精品久久 | a级片久久| 日日躁你夜夜躁你av蜜 | 国产高清免费在线观看 | 久久精品黄 | 91精品免费看 | 91九色视频导航 | 日韩电影在线一区二区 | 美女网站久久 | 狠狠色伊人亚洲综合网站色 | 久久黄色网页 | 午夜少妇av| 欧美精品亚洲精品日韩精品 | 久久精品看 | 亚洲国产中文字幕在线观看 | 国产精品资源在线 | 麻豆国产精品一区二区三区 | 亚洲精品自在在线观看 | 麻豆91在线看 | 色91在线视频 | 在线观看中文字幕视频 | 91爱爱电影| 亚洲精品中文在线 | 992tv在线观看| 国产一区二区三区免费视频 | 不卡的av在线 | 欧美成人精品欧美一级乱黄 | 国产精品久久久久久久久久久久久久 | 99精品视频免费观看视频 | 96香蕉视频| 狠狠色丁香久久婷婷综 | 国产精品黑丝在线观看 | 深爱激情综合 | 日本激情中文字幕 | 97电影网站 | 精品天堂av | 四虎国产精品成人免费影视 | 黄色在线观看网站 | 在线看污网站 | 久草久| av手机版 | 久久精品99国产国产 | 国产在线观看a | 亚洲在线精品视频 | 色综合天天综合在线视频 | 伊人天天狠天天添日日拍 | 国产成人av网站 | 国产成人亚洲在线观看 | 免费情缘| 最近最新中文字幕 | 久久精品区 | 久久艹在线观看 | 久久久久免费视频 | 天天爽天天爽夜夜爽 | 中文字幕在线观看一区 | 亚洲天堂网站 | 激情开心色| 日韩av黄 | 国产在线一区观看 | 婷婷 综合 色 | 在线免费观看国产 | 国产精品一区二区三区99 | 国产黄色免费在线观看 | 欧美日韩另类在线观看 | 91精品国产99久久久久久红楼 | 国产又粗又硬又长又爽的视频 | 网站免费黄| 最近日本韩国中文字幕 | 日日操日日插 | 日韩三级视频 | 国产精品视频免费在线观看 | 国产日韩欧美在线观看 | 色视频 在线 | 五月开心六月婷婷 | 国产黄免费在线观看 | 干干夜夜 | 欧美有色 | 婷婷在线色 | 欧美激情视频在线观看免费 | 日日碰狠狠添天天爽超碰97久久 | 日女人电影 | 国产视频在线免费 | 国产色婷婷在线 | 国产精品欧美久久久久久 | 在线观看视频一区二区三区 | 亚洲国产精品资源 | 中文字幕在线视频一区 | 久久午夜电影 | 91看片在线看片 | 欧美日韩精品久久久 | 丁香高清视频在线看看 | 色永久免费视频 | 在线观看一区二区精品 | aa级黄色大片 | 久久精品中文字幕一区二区三区 | 久久96| 天天综合五月天 | 国产精品久久久久四虎 | 亚洲综合色视频在线观看 | 就要色综合 | 国产精品毛片一区二区在线 | 亚洲最大成人网4388xx | 欧美日韩国产亚洲乱码字幕 | 在线看的毛片 | 国产精品大尺度 | 国内精品久久久久影院日本资源 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 在线观看资源 | 香蕉视频日本 | 日本中文一区二区 | 亚洲永久精品国产 | 国产黄在线观看 | 久久艹99| 亚洲国产影院 | 在线播放 日韩专区 | 中文字幕视频免费观看 | 欧美日韩午夜爽爽 | 国产97在线播放 | 色婷婷视频在线 | 91丨九色丨91啦蝌蚪老版 | 精品久久久久久久久久国产 | 日本在线中文在线 | 婷婷色 亚洲 | 久久精品久久久久电影 | 亚洲综合狠狠干 | 91久久国产自产拍夜夜嗨 | 天天干,天天插 | 国产精品99在线播放 | 超碰在线9| 射九九| 久久久久国产视频 | 午夜精品一区二区三区在线 | 人人爽人人澡人人添人人人人 | 伊人国产女 | 久久国产麻豆 | 欧美激情第十页 | 久久久久国产一区二区三区 | 国产精品21区 | 超碰资源在线 | 亚洲九九精品 | 在线看片中文字幕 | 91在线91拍拍在线91 | 天天天色| 国产免费资源 | 日本在线免费看 | 精品伊人久久久 | 国产小视频在线 | 国产色视频 | 色六月婷婷| 97人人超| 日韩一区二区三区在线看 | 色视频在线观看免费 | 中文字幕欧美激情 | 日韩一二三在线 | 中文字幕一区二区三区四区视频 | 国产亚洲精品久久久久久大师 | 久久精品国产精品亚洲 | 玖玖精品在线 | 毛片网站在线看 | 免费黄色网址大全 | 四虎海外影库www4hu | 亚洲天堂精品视频在线观看 | 色播五月激情五月 | 日韩在线免费观看视频 | 欧美一级性视频 | 国内少妇自拍视频一区 | 园产精品久久久久久久7电影 | 精品国产一区二区三区四区在线观看 | 日韩一二三区不卡 | 日韩精品最新在线观看 | 国产福利91精品 | 白丝av在线 | 成人黄色中文字幕 | 久久免费视频在线观看30 | 天天色宗合 | 成人av在线看 | 亚洲妇女av| 国产蜜臀av| 日韩成人精品在线观看 | 亚洲精品国产品国语在线 | 狠狠色丁香久久婷婷综合丁香 | 美腿丝袜一区二区三区 | 国产欧美日韩精品一区二区免费 | 亚洲成a人片在线观看网站口工 | 特黄特黄的视频 | 欧美成人影音 | 亚洲色五月| 蜜臀av.com | 手机av观看 | 四虎8848免费高清在线观看 | 综合铜03 | 在线观看日本高清mv视频 | 久草在线手机观看 | 91传媒在线播放 | 久久99日韩 | 亚洲精品乱码久久久久久高潮 | 狠狠色婷婷丁香六月 | 人人干网站 | 国产精品毛片一区二区在线看 | 欧美精品一区二区免费 | 国产日本亚洲高清 | 欧美在线视频一区二区 | 免费看的黄色的网站 | 狠狠狠狠狠狠狠狠 | 国产传媒中文字幕 | 91激情视频在线观看 | 国产在线综合视频 | 日韩中文字幕免费在线播放 | 国产一区二区三区午夜 | 中日韩欧美精彩视频 | 国产一区二区视频在线播放 | 香蕉视频久久久 | 热re99久久精品国产99热 | 超碰免费成人 | 狠狠色丁香 | 免费在线观看成人小视频 | 九九热免费在线观看 | 亚洲国产影院av久久久久 | 99精品欧美一区二区三区 | 亚洲专区视频在线观看 | 国产精品24小时在线观看 | 888av| 久久久久久久久久久久久久免费看 | 九九综合九九综合 | 国产99色| 国产精品久久久久影视 | 日韩高清无线码2023 | www.香蕉| 天天搞夜夜骑 | 91精品国产91久久久久久三级 | 激情久久久| 亚洲精品免费在线播放 | 欧美粗又大 | 黄色网免费 | 久久免费看a级毛毛片 | 久久国产午夜精品理论片最新版本 | 夜夜澡人模人人添人人看 | 欧美性生活大片 | 婷婷深爱五月 | 久久天天躁夜夜躁狠狠躁2022 | 亚洲精品日韩一区二区电影 | 色婷婷国产精品一区在线观看 | 蜜臀久久99精品久久久酒店新书 | 国产黑丝一区二区三区 | 国产免费久久久久 | 成人毛片在线视频 | 亚洲黄色影院 | 欧美a√大片 | 91九色最新 | 91免费黄视频 | 999国产在线 | 久综合网 | 天天射日| 国产亚洲精品av | 少妇av片 | 国产成视频在线观看 | 91精品在线观看入口 | 久草视频在线免费看 | 成人免费观看网址 | 欧美整片sss| 国内精品久久久久久久久久久久 | 久久精品视频99 | 久久久黄色| 黄色成品视频 | 久久久久久片 | 国产精品v欧美精品 | 久久久高清免费视频 | 精品国产中文字幕 | av福利在线播放 | 在线观看视频一区二区三区 | а天堂中文最新一区二区三区 | 亚洲国产欧美在线人成大黄瓜 | 国产在线播放一区 | 成人免费视频播放 | 一二三久久久 | 美腿丝袜一区二区三区 | 国产成人久久精品77777综合 | 91高清完整版在线观看 | 中文字幕av网站 | 最新中文字幕在线播放 | 日本爱爱免费 | 精品久久在线 | 999亚洲国产996395 | 狠狠地日 | 日韩高清激情 | 91精品国产麻豆国产自产影视 | 久久国产视屏 | 99精品色| 国产群p视频 | 亚洲精品久久在线 | 久久久久99999 | 亚洲婷婷伊人 | 亚洲精品xxx | 狠狠伊人 | 青草视频在线看 | 在线看黄网站 | 精品久久一区二区三区 | 国内久久精品视频 | 亚洲精品免费在线 | 亚洲高清视频在线播放 | av久久久 | 天堂中文在线视频 | 四虎国产精品永久在线国在线 | 国产成人精品一区二区在线观看 | 午夜精品久久久久久久99热影院 | 伊人资源站 | 热久久最新地址 | 91日韩精品视频 | 国内精品久久久久久久97牛牛 | 超碰在线人人艹 | 又黄又爽又刺激的视频 | 日本中文不卡 | 亚洲视频精品在线 | 日日日操操| 国产精品成人免费一区久久羞羞 | 亚洲黄色免费电影 | 天天曰天天射 | 亚洲激情一区二区三区 | 久久国色夜色精品国产 | 国产精品日韩久久久久 | 96精品高清视频在线观看软件特色 | 久久免费在线观看视频 | 天天操天天色天天射 | 黄网站污 | 国产精品高潮呻吟久久av无 | 亚洲aⅴ免费在线观看 | www.亚洲精品 | 四川bbb搡bbb爽爽视频 | 日本精品视频在线观看 | 中文字幕国产在线 | 日韩午夜电影网 | 日本电影久久 | 成人h动漫在线看 | 欧美日韩视频网站 | 激情视频一区二区三区 | 国产视频亚洲视频 | 成人午夜影院在线观看 | 精品福利在线 | 天天草天天摸 | 免费网站观看www在线观看 | 91九色在线 | 日韩在线在线 | 午夜影视一区 | 日韩精品久久久免费观看夜色 | 日本系列中文字幕 | 国产自产在线视频 | 久久国产精品一国产精品 | 九九久久免费 | 中文字幕综合在线 | 色婷婷综合五月 | 91香蕉视频污在线 | 日日干日日 | 在线观看www91 | 久久久高清免费视频 | 国产成人精品午夜在线播放 | 久久久久久蜜桃一区二区 | 国产精品综合久久久久久 | 深夜免费福利在线 | 国产精品免费不 | 四虎国产免费 | 中国成人一区 | 玖玖爱国产在线 | 粉嫩高清一区二区三区 | 五月婷婷激情综合 | 黄色片网站av| 国产二级视频 | 500部大龄熟乱视频使用方法 | 天天干天天干天天色 | 成人免费视频网站 | 黄色av网站在线观看 | 在线视频 成人 | 亚洲国产小视频在线观看 | 亚洲伊人色 | 国产专区免费 | 91视频这里只有精品 | 欧美另类网站 | 色综合天 | 深夜男人影院 | 久久精品一区二区三区中文字幕 | 中文在线免费视频 | 亚洲综合色av | 国产中文在线观看 | 91超在线 | 精品乱码一区二区三四区 | 久久综合久久综合这里只有精品 | 综合色天天 | 激情五月在线视频 | 在线久草视频 | 久精品视频在线观看 | 九九精品久久久 | 久草亚洲视频 | 日韩高清国产精品 | 一区在线免费观看 | 免费午夜av | 99色在线观看视频 | 香蕉视频在线免费 | 久久视频免费观看 | 狠狠艹夜夜干 | 亚洲欧美国产日韩在线观看 | 天天干天天操天天入 | 免费v片 | 激情久久综合 | 亚洲一级免费观看 | 亚洲国产一区二区精品专区 | 成人观看视频 | 午夜精品一区二区三区免费视频 | 国产在线精品观看 | 国语黄色片 | 日本一区二区高清不卡 | 久久久久激情电影 | 免费黄色在线网站 | 国产视频观看 | 亚洲精品乱码久久久久久高潮 | 在线亚洲天堂网 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 91在线免费观看网站 | 不卡国产在线 | 天天干天天射天天操 | 久久精品国产美女 | 91精品1区2区 | av在线激情| www.色婷婷.com | 久久精品二区 | 免费看91的网站 | 伊人久久在线观看 | 国产视频精品久久 | 成人中文字幕+乱码+中文字幕 | www.国产视频| 亚洲国产小视频在线观看 | 黄色美女免费网站 | 一区二区视频网站 | 国产精品1024 | 婷婷开心久久网 | 97在线超碰| 日本精品一 | 一区中文字幕在线观看 | 最新国产在线 | 91完整版观看| 亚洲一级片 | 亚洲精品2区 | 黄a在线看 | 在线黄色av| 国产午夜三级一区二区三桃花影视 | 精品视频不卡 | 久久观看 | 国产精品福利无圣光在线一区 | 天堂在线v | 国产在线a不卡 | 久久99精品国产91久久来源 | 午夜丁香视频在线观看 | 91精品中文字幕 | 亚洲视频免费 | 精品视频久久久 | 久久中文视频 | 国产精品毛片一区二区 | 久久九九网站 | 亚洲国产精品99久久久久久久久 | 天天爽夜夜爽人人爽一区二区 | 久久午夜精品影院一区 | 黄色大片免费播放 | 国产午夜精品在线 | 国产精品一区二区久久精品爱涩 | 日本中文字幕视频 | 伊人亚洲综合网 | 国产精品毛片一区视频播不卡 | 国产手机视频在线播放 | 欧美伦理一区 | 久久国产精品久久w女人spa | 色九九在线 | 国产精品情侣视频 | 精品久久久久久久久久久久久久久久 | 干干干操操操 | 27xxoo无遮挡动态视频 | 日韩综合精品 | 日日夜夜人人精品 | 色视频国产直接看 | 亚洲人成影院在线 | 国产精品久久久久一区二区国产 | 天天操天天射天天插 | 亚洲年轻女教师毛茸茸 | 欧美日韩国产在线观看 | 国产综合香蕉五月婷在线 | 91欧美精品| 综合成人在线 | 日日干精品| av动图| 91影视成人 | 天天操天天操天天操天天操天天操 | 国产剧情久久 | 精品美女国产在线 | 91干干干 | 天天干天天操天天干 | 国产一区二区高清视频 | 日本中文字幕高清 | 亚洲最大成人免费网站 | av.com在线 | 一级黄色片在线 | 亚洲艳情 | 国产第页| 国产资源精品 | 麻豆久久久久久久 | 亚洲国产日韩一区 | 狠狠婷婷 | 国产精品字幕 | 欧美一区,二区 | 亚洲精品视频在线观看网站 | 六月婷婷久香在线视频 | 亚洲资源在线网 | 一区二区精品视频 | a资源在线| 911国产精品| 久久草av | 久久久久久久久久久综合 | 日韩av高清在线观看 | 最新国产福利 | 国产高清视频免费 | 久久综合久色欧美综合狠狠 | 日韩精品一区二区三区免费观看视频 | 成人免费观看大片 | 欧美日韩国产伦理 | 中国一级特黄毛片大片久久 | 国产又粗又猛又爽又黄的视频先 | 亚洲黄色在线观看 | 国产伦精品一区二区三区无广告 | 久久99热精品这里久久精品 | 98超碰在线 | 免费视频网 | 国产精品免费视频观看 | 成人黄色在线 | 欧美动漫一区二区三区 | 天天色天天干天天 | 久久精品电影网 | 亚洲精品国内 | 福利视频一区二区 | 午夜视频在线观看一区二区三区 | 一级欧美一级日韩 | 91av中文 | 亚洲高清av | 韩日av在线| av怡红院| 色综合天天爱 | 人人视频网站 | 日韩中文免费视频 | 中文字幕一区二区三区在线视频 | 久99久精品视频免费观看 | 中文字幕电影网 | 97狠狠干 | 美女禁18| 久久久福利视频 | 久久激情视频免费观看 | 国语精品免费视频 | 五月天中文在线 | а天堂中文最新一区二区三区 | 久久精品视频2 | 亚洲九九爱 | 超碰在97 | 不卡国产视频 | 欧美大片在线观看一区 | av中文字幕在线观看网站 | 国产91小视频 | 九色精品 | 日韩一区二区三区在线看 | 97精品超碰一区二区三区 | 最近中文字幕免费视频 | 在线观看免费版高清版 | 国产精品久久久久久久久久免费看 | 亚洲mv大片欧洲mv大片免费 | 五月综合激情 | 天堂在线视频中文网 | 成人免费观看大片 | 九九色在线观看 | 国产精品永久 | 国产精品99久久免费观看 | 国产精品黄色av | 久久久精品成人 | 日韩中文字幕在线 | 字幕网资源站中文字幕 | 成人av免费网站 | 一区二区三区电影 | 人人澡澡人人 | 亚洲精品午夜久久久 | 久草在线综合网 | 中文字幕在线观看第二页 | 亚洲国产免费看 | 免费在线观看视频a | 精品一区电影 | 色综合久久中文综合久久牛 | 免费看黄色91 | 日韩久久一区 | 欧美激情片在线观看 | 国产精品久久久毛片 | 91丨九色丨国产丨porny精品 | 操操操av | 国产精品久久久777 成人手机在线视频 | 97超碰在线久草超碰在线观看 | 久久99精品波多结衣一区 | 四虎在线观看 | 成人黄色在线看 | 免费涩涩网站 | 99久久久成人国产精品 | 国产传媒中文字幕 | 精品国偷自产在线 | 九九99视频 | 亚洲成aⅴ人在线观看 | 新版资源中文在线观看 | 91精品国产91久久久久 | 久久精品一区二区三区视频 | 色婷婷福利 | 天天色影院 | 特级毛片在线免费观看 | 日本一区二区三区免费看 | 999久久久免费视频 午夜国产在线观看 | 国产精品久久久久久五月尺 | 日本在线视频网址 | 97色综合| 激情黄色一级片 | 国产 视频 久久 | 999视频网 | 麻豆免费精品视频 | 在线观看精品黄av片免费 | 国产精品私拍 | 亚洲2019精品 | 亚洲精品美女在线 | 丁香六月av | 成人av一区二区兰花在线播放 | www.com久久| 正在播放国产一区 | 亚洲精品视频在线 | 色综合欧洲| 午夜少妇一区二区三区 | 色中色综合 | 在线观看中文字幕视频 | 麻豆视频免费入口 | 久久久国产精品人人片99精片欧美一 | 涩涩在线 | 欧美淫视频 | 日韩在线观看网站 | 国产精品一区二区三区99 | av观看在线观看 | 午夜视频黄 | 精品在线观看一区二区 | 中文字幕av在线电影 | 成人九九视频 | 日本中文在线观看 | 久久久香蕉视频 | 日日躁天天躁 | 成人亚洲综合 | 亚洲 欧美 国产 va在线影院 | 在线99热| 最近日本韩国中文字幕 | 久久久久女人精品毛片 | 日本h视频在线观看 | 91香蕉视频在线下载 | 人成电影网 | 开心激情综合网 | 久草在线免费看视频 | 国产一区二区精品在线 | 综合天天网 | 久久天天躁狠狠躁夜夜不卡公司 | av在线8| 免费观看av网站 | 久久99精品国产 | 亚洲欧美日韩在线看 | 97超碰中文字幕 | 91日韩精品 | 日韩一区二区三免费高清在线观看 | 天天操天天能 | 久久精品国产一区二区 | 99这里只有久久精品视频 | 日日夜夜免费精品视频 | 国产一区二区在线播放 | 欧美激情综合五月色丁香 | 成人h在线观看 | 午夜精品久久久久久久99 | 天天操人人干 | 精品久久电影 | 99久久99久久精品免费 | 国产黄色大片免费看 | 亚洲精品乱码久久久久久写真 | 日本久久久精品视频 | 国产精品99久久久久久人免费 | 成人a在线观看 | 91av片| 国产成人av电影在线观看 | 久久国产精品99精国产 | 综合色婷婷 | 狠狠色网| 久香蕉 | 国产一区二区在线免费播放 | 97在线视频免费 | 91精品国产福利在线观看 | 免费黄a| 国产人成一区二区三区影院 | 午夜精品久久久久久久99水蜜桃 | 黄色a级片在线观看 | 日韩精品中字 | 日韩三级视频 | 国产一区二区三区四区在线 | 麻豆免费在线视频 | 国产不卡网站 | 久久精选视频 | 亚洲免费精品视频 | 一区二区三区在线免费播放 | aaa毛片视频 | 久久久激情网 | 中文字幕在线观看视频免费 | 欧美日韩免费观看一区二区三区 | 在线综合色 | 国产日韩精品一区二区三区 | 亚洲欧美成人在线 | 亚洲黄色成人av | 日韩精品久久久久久久电影99爱 | 91精品国产自产91精品 | 456免费视频 | 精品国模一区二区 | 69人人| 成年人免费观看在线视频 |