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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

处理之后的图像句柄传到显示框_深度学习目标检测与预处理模块

發布時間:2024/10/8 目标检测 211 豆豆
生活随笔 收集整理的這篇文章主要介紹了 处理之后的图像句柄传到显示框_深度学习目标检测与预处理模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一般的深度學習的部署流程

對計算機而言,能夠“看到”的是圖像被編碼之后的數字,但它很難解高層語義概念,比如圖像或者視頻幀中出現目標的是人還是物體,更無法定位目標出現在圖像中哪個區域。目標檢測的主要目的是讓計算機可以自動識別圖片或者視頻幀中所有目標的類別,并在該目標周圍繪制邊界框,標示出每個目標的位置,如?圖1?所示。?


圖1:圖像分類和目標檢測示意圖
  • 圖1(a)是圖像分類任務,只需識別出這是一張斑馬的圖片(但需要先選出候選區域)。

  • 圖1(b)是目標檢測任務,不僅要識別出這是一張斑馬的圖片,還要標出圖中斑馬的位置。

目標檢測發展歷程

圖像分類處理基本流程,先使用卷積神經網絡提取圖像特征,然后再用這些特征預測分類概率,根據訓練樣本標簽建立起分類損失函數,開啟端到端的訓練,如?圖2?所示。?


圖2:圖像分類流程示意圖

但對于目標檢測問題,按照?圖2?的流程則行不通。因為在圖像分類任務中,對整張圖提取特征的過程中沒能體現出不同目標之間的區別,最終也就沒法分別標示出每個物體所在的位置。

為了解決這個問題,結合圖片分類任務取得的成功經驗,我們可以將目標檢測任務進行拆分。假設我們現在有某種方式可以在輸入圖片上生成一系列可能包含物體的區域,這些區域稱為候選區域,在一張圖上可以生成很多個候選區域。然后對每個候選區域,可以把它單獨當成一幅圖像來看待,使用圖像分類模型對它進行分類,看它屬于哪個類別或者背景(即不包含任何物體的類別)。

解決圖像分類任務,使用卷積神經網絡對一幅圖像進行分類不再是一件困難的事情。那么,現在問題的關鍵就是如何產生候選區域?比如我們可以使用窮舉法來產生候選區域,如圖3所示。?


圖3:候選區域

A為圖像上的某個像素點,B為A右下方另外一個像素點,A、B兩點可以確定一個矩形框,記作AB。

  • 如圖3(a)所示:A在圖片左上角位置,B遍歷除A之外的所有位置,生成矩形框A1B1, …, A1Bn, …

  • 如圖3(b)所示:A在圖片中間某個位置,B遍歷A右下方所有位置,生成矩形框AkB1, …, AkBn, …

當A遍歷圖像上所有像素點,B則遍歷它右下方所有的像素點,最終生成的矩形框集合{AiBj}將會包含圖像上所有可以選擇的區域。

只要我們對每個候選區域的分類足夠的準確,則一定能找到跟實際物體足夠接近的區域來。窮舉法也許能得到正確的預測結果,但其計算量也是非常巨大的,在100*100圖像尺寸下其所生成的總的候選區域數目,總數將會達到2.5×10^7?7個,如此多的候選區域使得這種方法幾乎沒有什么實用性。但是通過這種方式,我們可以看出,假設分類任務完成的足夠完美,從理論上來講檢測任務也是可以解決的,亟待解決的問題是如何設計出合適的方法來產生候選區域。

科學家們開始思考,是否可以應用傳統圖像算法先產生候選區域,然后再用卷積神經網絡對這些區域進行分類?

  • 2013年,Ross Girshick 等人于首次將CNN的方法應用在目標檢測任務上,他們使用傳統圖像算法selective search產生候選區域,取得了極大的成功,這就是對目標檢測領域影響深遠的區域卷積神經網絡(R-CNN)模型。

  • 2015年,Ross Girshick 對此方法進行了改進,提出了Fast RCNN模型。通過將不同區域的物體共用卷積層的計算,大大縮減了計算量,提高了處理速度,而且還引入了調整目標物體位置的回歸方法,進一步提高了位置預測的準確性。

  • 2015年,Shaoqing Ren 等人提出了Faster RCNN模型,提出了RPN的方法來產生物體的候選區域,這一方法里面不再需要使用傳統的圖像處理算法來產生候選區域,進一步提升了處理速度。

  • 2017年,Kaiming He 等人于提出了Mask RCNN模型,只需要在Faster RCNN模型上添加比較少的計算量,就可以同時實現目標檢測和物體實例分割兩個任務。

以上都是基于R-CNN系列的著名模型,對目標檢測方向的發展有著較大的影響力。此外,還有一些其他模型,比如SSD、YOLO(1, 2, 3)、R-FCN等也都是目標檢測領域流行的模型結構。

R-CNN的系列算法分成兩個階段,先在圖像上產生候選區域,再對候選區域進行分類并預測目標物體位置,它們通常被叫做兩階段檢測算法。SSD和YOLO算法則只使用一個網絡同時產生候選區域并預測出物體的類別和位置,所以它們通常被叫做單階段檢測算法。

  • 圖像檢測基礎概念:介紹與目標檢測任相關的基本概念,包括邊界框、錨框和交并比等。

目標檢測基礎概念

在介紹目標檢測算法之前,先介紹一些跟檢測相關的基本概念,包括邊界框、錨框和交并比等。

邊界框(bounding box)

檢測任務需要同時預測物體的類別和位置,因此需要引入一些跟位置相關的概念。通常使用邊界框(bounding box,bbox)來表示物體的位置,邊界框是正好能包含住物體的矩形框,如?圖4?所示,圖中人臉對應的邊界框。?

圖4:邊界框

通常有兩種格式來表示邊界框的位置:

,這樣的邊界框也被稱為真實框(ground truth box),如?圖4?所示,圖中畫出了人像所對應的真實框。模型會對目標物體可能出現的位置進行預測,由模型預測出的邊界框則稱為預測框(prediction box)。


注意:

  • 不同的代碼使用的可能是不同方式。

  • 圖片坐標的原點在左上角,x軸向右為正方向,y軸向下為正方向。


  • 要完成一項檢測任務,我們通常希望模型能夠根據輸入的圖片,輸出一些預測的邊界框,以及邊界框中所包含的物體的類別或者說屬于某個類別的概率,例如【L ,P x1,y1,x2,y2】

    這其中L是類別標簽,P是物體屬于該類別的概率。一張輸入圖片可能會產生多個預測框,接下來讓我們一起學習如何完成這樣一項任務。

    錨框(Anchor)

    錨框與物體邊界框不同,是由人們假想出來的一種框。先設定好錨框的大小和形狀,再以圖像上某一個點為中心畫出矩形框。,以像素點[300, 500]為中心可以使用下面的程序生成3個框,其中錨框A1跟目標區域非常接近。

    # 畫圖展示如何繪制邊界框和錨框
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.patches as patches
    from matplotlib.image import imread
    import math

    # 定義畫矩形框的程序
    def draw_rectangle(currentAxis, bbox, edgecolor = 'k', facecolor = 'y', fill=False, linestyle='-'):
    # currentAxis,坐標軸,通過plt.gca()獲取
    # bbox,邊界框,包含四個數值的list, [x1, y1, x2, y2]
    # edgecolor,邊框線條顏色
    # facecolor,填充顏色
    # fill, 是否填充
    # linestype,邊框線型
    # patches.Rectangle需要傳入左上角坐標、矩形區域的寬度、高度等參數
    rect=patches.Rectangle((bbox[0], bbox[1]), bbox[2]-bbox[0]+1, bbox[3]-bbox[1]+1, linewidth=1,
    edgecolor=edgecolor,facecolor=facecolor,fill=fill, linestyle=linestyle)
    currentAxis.add_patch(rect)


    plt.figure(figsize=(10, 10))

    filename = '/home/aistudio/work/images/section3/000000086956.jpg'
    im = imread(filename)
    plt.imshow(im)

    # 使用xyxy格式表示物體真實框
    bbox1 = [214.29, 325.03, 399.82, 631.37]
    bbox2 = [40.93, 141.1, 226.99, 515.73]
    bbox3 = [247.2, 131.62, 480.0, 639.32]

    currentAxis=plt.gca()

    draw_rectangle(currentAxis, bbox1, edgecolor='r')
    draw_rectangle(currentAxis, bbox2, edgecolor='r')
    draw_rectangle(currentAxis, bbox3,edgecolor='r')

    # 繪制錨框
    def draw_anchor_box(center, length, scales, ratios, img_height, img_width):
    """
    以center為中心,產生一系列錨框
    其中length指定了一個基準的長度
    scales是包含多種尺寸比例的list
    ratios是包含多種長寬比的list
    img_height和img_width是圖片的尺寸,生成的錨框范圍不能超出圖片尺寸之外
    """
    bboxes = []
    for scale in scales:
    for ratio in ratios:
    h = length*scale*math.sqrt(ratio)
    w = length*scale/math.sqrt(ratio)
    x1 = max(center[0] - w/2., 0.)
    y1 = max(center[1] - h/2., 0.)
    x2 = min(center[0] + w/2. - 1.0, img_width - 1.0)
    y2 = min(center[1] + h/2. - 1.0, img_height - 1.0)
    print(center[0], center[1], w, h)
    bboxes.append([x1, y1, x2, y2])

    for bbox in bboxes:
    draw_rectangle(currentAxis, bbox, edgecolor = 'b')

    img_height = im.shape[0]
    img_width = im.shape[1]
    draw_anchor_box([300., 500.], 100., [2.0], [0.5, 1.0, 2.0], img_height, img_width)


    ################# 以下為添加文字說明和箭頭###############################

    plt.text(285, 285, 'G1', color='red', fontsize=20)
    plt.arrow(300, 288, 30, 40, color='red', width=0.001, length_includes_head=True, \
    head_width=5, head_length=10, shape='full')

    plt.text(190, 320, 'A1', color='blue', fontsize=20)
    plt.arrow(200, 320, 30, 40, color='blue', width=0.001, length_includes_head=True, \
    head_width=5, head_length=10, shape='full')

    plt.text(160, 370, 'A2', color='blue', fontsize=20)
    plt.arrow(170, 370, 30, 40, color='blue', width=0.001, length_includes_head=True, \
    head_width=5, head_length=10, shape='full')

    plt.text(115, 420, 'A3', color='blue', fontsize=20)
    plt.arrow(127, 420, 30, 40, color='blue', width=0.001, length_includes_head=True, \
    head_width=5, head_length=10, shape='full')

    #draw_anchor_box([200., 200.], 100., [2.0], [0.5, 1.0, 2.0])
    plt.show()

    300.0 500.0 282.84271247461896 141.4213562373095
    300.0 500.0 200.0 200.0
    300.0 500.0 141.42135623730948 282.842712474619

    在目標檢測模型中,通常會以某種規則在圖片上生成一系列錨框,將這些錨框當成可能的候選區域。模型對這些候選區域是否包含物體進行預測,如果包含目標物體,則還需要進一步預測出物體所屬的類別。還有更為重要的一點是,由于錨框位置是固定的,它不大可能剛好跟物體邊界框重合,所以需要在錨框的基礎上進行微調以形成能準確描述物體位置的預測框,模型需要預測出微調的幅度。在訓練過程中,模型通過學習不斷的調整參數,最終能學會如何判別出錨框所代表的候選區域是否包含物體,如果包含物體的話,物體屬于哪個類別,以及物體邊界框相對于錨框位置需要調整的幅度,不同的模型往往有著不同的生成錨框的方式.

    交并比

    上面我們畫出了以點(300,500)(300, 500)(300,500)為中心,生成的三個錨框,我們可以看到錨框A1 與真實框 G1的重合度比較好。那么如何衡量這三個錨框跟真實框之間的關系呢,在檢測任務中是使用交并比(Intersection of Union,IoU)作為衡量指標。這一概念來源于數學中的集合,用來描述兩個集合AAA和BBB之間的關系,它等于兩個集合的交集里面所包含的元素個數,除以它們的并集里面所包含的元素個數,具體計算公式如下:

    IoU=A∩BA∪BIoU = \frac{A\cap B}{A \cup B}IoU=A∪BA∩B

    我們將用這個概念來描述兩個框之間的重合度。兩個框可以看成是兩個像素的集合,它們的交并比等于兩個框重合部分的面積除以它們合并起來的面積。下圖a中紅色區域是兩個框的重合面積,圖b中藍色區域是兩個框的相并面積。用這兩個面積相除即可得到它們之間的交并比,如?圖5?所示。


    圖5:交并比

    假設兩個矩形框A和B的位置分別為:

    A:[xa1,ya1,xa2,ya2]A: [x_{a1}, y_{a1}, x_{a2}, y_{a2}]a[xa1,ya1,xa2,ya2]

    ?????????????????????????????????????????????b[xb1,yb1,xb2,yb2]

    假如位置關系如?圖6?所示:?


    圖6:計算交并比

    如果二者有相交部分,則相交部分左上角坐標為:

    x1=max(xa1,xb1),?????y1=max(ya1,yb1)x_1 = max(x_{a1}, x_{b1}), \ \ \ \ \ y_1 = max(y_{a1}, y_{b1})x1=max(xa1,xb1),?????y1=max(ya1,yb1)

    據讀取和預處理

    數據預處理是訓練神經網絡時非常重要的步驟。合適的預處理方法,可以幫助模型更好的收斂并防止過擬合。首先需要從磁盤讀入數據,然后需要對這些數據進行預處理,為了保證網絡運行的速度通常還要對數據預處理進行加速。

    數據讀取

    前面已經將圖片的所有描述信息保存在records中了,其中的每一個元素包含了一張圖片的描述,下面的程序展示了如何根據records里面的描述讀取圖片及標注。

    ### 數據讀取
    import cv2

    def get_bbox(gt_bbox, gt_class):
    # 對于一般的檢測任務來說,一張圖片上往往會有多個目標物體
    # 設置參數MAX_NUM = 50, 即一張圖片最多取50個真實框;如果真實
    # 框的數目少于50個,則將不足部分的gt_bbox, gt_class和gt_score的各項數值全設置為0
    MAX_NUM = 50
    gt_bbox2 = np.zeros((MAX_NUM, 4))
    gt_class2 = np.zeros((MAX_NUM,))
    for i in range(len(gt_bbox)):
    gt_bbox2[i, :] = gt_bbox[i, :]
    gt_class2[i] = gt_class[i]
    if i >= MAX_NUM:
    break
    return gt_bbox2, gt_class2

    def get_img_data_from_file(record):
    """
    record is a dict as following,
    record = {
    'im_file': img_file,
    'im_id': im_id,
    'h': im_h,
    'w': im_w,
    'is_crowd': is_crowd,
    'gt_class': gt_class,
    'gt_bbox': gt_bbox,
    'gt_poly': [],
    'difficult': difficult
    }
    """
    im_file = record['im_file']
    h = record['h']
    w = record['w']
    is_crowd = record['is_crowd']
    gt_class = record['gt_class']
    gt_bbox = record['gt_bbox']
    difficult = record['difficult']

    img = cv2.imread(im_file)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    # check if h and w in record equals that read from img
    assert img.shape[0] == int(h), \
    "image height of {} inconsistent in record({}) and img file({})".format(
    im_file, h, img.shape[0])

    assert img.shape[1] == int(w), \
    "image width of {} inconsistent in record({}) and img file({})".format(
    im_file, w, img.shape[1])

    gt_boxes, gt_labels = get_bbox(gt_bbox, gt_class)

    # gt_bbox 用相對值
    gt_boxes[:, 0] = gt_boxes[:, 0] / float(w)
    gt_boxes[:, 1] = gt_boxes[:, 1] / float(h)
    gt_boxes[:, 2] = gt_boxes[:, 2] / float(w)
    gt_boxes[:, 3] = gt_boxes[:, 3] / float(h)

    return img, gt_boxes, gt_labels, (h, w)record = records[0]
    img, gt_boxes, gt_labels, scales = get_img_data_from_file(record)img.shape(1268, 1268, 3)gt_boxes.shape(50, 4)gt_labelsarray([1., 0., 2., 3., 4., 5., 5., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,?0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,?0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])scales(1268.0, 1268.0)

    get_img_data_from_file()函數可以返回圖片數據的數據,它們是圖像數據img, 真實框坐標gt_boxes, 真實框包含的物體類別gt_labels, 圖像尺寸scales。

    數據預處理

    在計算機視覺中,通常會對圖像做一些隨機的變化,產生相似但又不完全相同的樣本。主要作用是擴大訓練數據集,抑制過擬合,提升模型的泛化能力,常用的方法見下面的程序。

    隨機改變亮暗、對比度和顏色等

    import numpy as np
    import cv2
    from PIL import Image, ImageEnhance
    import random

    # 隨機改變亮暗、對比度和顏色等
    def random_distort(img):
    # 隨機改變亮度
    def random_brightness(img, lower=0.5, upper=1.5):
    e = np.random.uniform(lower, upper)
    return ImageEnhance.Brightness(img).enhance(e)
    # 隨機改變對比度
    def random_contrast(img, lower=0.5, upper=1.5):
    e = np.random.uniform(lower, upper)
    return ImageEnhance.Contrast(img).enhance(e)
    # 隨機改變顏色
    def random_color(img, lower=0.5, upper=1.5):
    e = np.random.uniform(lower, upper)
    return ImageEnhance.Color(img).enhance(e)

    ops = [random_brightness, random_contrast, random_color]
    np.random.shuffle(ops)

    img = Image.fromarray(img)
    img = ops[0](img)
    img = ops[1](img)
    img = ops[2](img)
    img = np.asarray(img)

    return img

    隨機填充

    # 隨機填充
    def random_expand(img,
    gtboxes,
    max_ratio=4.,
    fill=None,
    keep_ratio=True,
    thresh=0.5):
    if random.random() > thresh:
    return img, gtboxes

    if max_ratio < 1.0:
    return img, gtboxes

    h, w, c = img.shape
    ratio_x = random.uniform(1, max_ratio)
    if keep_ratio:
    ratio_y = ratio_x
    else:
    ratio_y = random.uniform(1, max_ratio)
    oh = int(h * ratio_y)
    ow = int(w * ratio_x)
    off_x = random.randint(0, ow - w)
    off_y = random.randint(0, oh - h)

    out_img = np.zeros((oh, ow, c))
    if fill and len(fill) == c:
    for i in range(c):
    out_img[:, :, i] = fill[i] * 255.0

    out_img[off_y:off_y + h, off_x:off_x + w, :] = img
    gtboxes[:, 0] = ((gtboxes[:, 0] * w) + off_x) / float(ow)
    gtboxes[:, 1] = ((gtboxes[:, 1] * h) + off_y) / float(oh)
    gtboxes[:, 2] = gtboxes[:, 2] / ratio_x
    gtboxes[:, 3] = gtboxes[:, 3] / ratio_y

    return out_img.astype('uint8'), gtboxes

    隨機裁剪

    隨機裁剪之前需要先定義兩個函數,multi_box_iou_xywh和box_crop這兩個函數將被保存在box_utils.py文件中。

    import numpy as np

    def multi_box_iou_xywh(box1, box2):
    """
    In this case, box1 or box2 can contain multi boxes.
    Only two cases can be processed in this method:
    1, box1 and box2 have the same shape, box1.shape == box2.shape
    2, either box1 or box2 contains only one box, len(box1) == 1 or len(box2) == 1
    If the shape of box1 and box2 does not match, and both of them contain multi boxes, it will be wrong.
    """
    assert box1.shape[-1] == 4, "Box1 shape[-1] should be 4."
    assert box2.shape[-1] == 4, "Box2 shape[-1] should be 4."


    b1_x1, b1_x2 = box1[:, 0] - box1[:, 2] / 2, box1[:, 0] + box1[:, 2] / 2
    b1_y1, b1_y2 = box1[:, 1] - box1[:, 3] / 2, box1[:, 1] + box1[:, 3] / 2
    b2_x1, b2_x2 = box2[:, 0] - box2[:, 2] / 2, box2[:, 0] + box2[:, 2] / 2
    b2_y1, b2_y2 = box2[:, 1] - box2[:, 3] / 2, box2[:, 1] + box2[:, 3] / 2

    inter_x1 = np.maximum(b1_x1, b2_x1)
    inter_x2 = np.minimum(b1_x2, b2_x2)
    inter_y1 = np.maximum(b1_y1, b2_y1)
    inter_y2 = np.minimum(b1_y2, b2_y2)
    inter_w = inter_x2 - inter_x1
    inter_h = inter_y2 - inter_y1
    inter_w = np.clip(inter_w, a_min=0., a_max=None)
    inter_h = np.clip(inter_h, a_min=0., a_max=None)

    inter_area = inter_w * inter_h
    b1_area = (b1_x2 - b1_x1) * (b1_y2 - b1_y1)
    b2_area = (b2_x2 - b2_x1) * (b2_y2 - b2_y1)

    return inter_area / (b1_area + b2_area - inter_area)

    def box_crop(boxes, labels, crop, img_shape):
    x, y, w, h = map(float, crop)
    im_w, im_h = map(float, img_shape)

    boxes = boxes.copy()
    boxes[:, 0], boxes[:, 2] = (boxes[:, 0] - boxes[:, 2] / 2) * im_w, (
    boxes[:, 0] + boxes[:, 2] / 2) * im_w
    boxes[:, 1], boxes[:, 3] = (boxes[:, 1] - boxes[:, 3] / 2) * im_h, (
    boxes[:, 1] + boxes[:, 3] / 2) * im_h

    crop_box = np.array([x, y, x + w, y + h])
    centers = (boxes[:, :2] + boxes[:, 2:]) / 2.0
    mask = np.logical_and(crop_box[:2] <= centers, centers <= crop_box[2:]).all(
    axis=1)

    boxes[:, :2] = np.maximum(boxes[:, :2], crop_box[:2])
    boxes[:, 2:] = np.minimum(boxes[:, 2:], crop_box[2:])
    boxes[:, :2] -= crop_box[:2]
    boxes[:, 2:] -= crop_box[:2]

    mask = np.logical_and(mask, (boxes[:, :2] < boxes[:, 2:]).all(axis=1))
    boxes = boxes * np.expand_dims(mask.astype('float32'), axis=1)
    labels = labels * mask.astype('float32')
    boxes[:, 0], boxes[:, 2] = (boxes[:, 0] + boxes[:, 2]) / 2 / w, (
    boxes[:, 2] - boxes[:, 0]) / w
    boxes[:, 1], boxes[:, 3] = (boxes[:, 1] + boxes[:, 3]) / 2 / h, (
    boxes[:, 3] - boxes[:, 1]) / h

    return boxes, labels, mask.sum()# 隨機裁剪
    def random_crop(img,
    boxes,
    labels,
    scales=[0.3, 1.0],
    max_ratio=2.0,
    constraints=None,
    max_trial=50):
    if len(boxes) == 0:
    return img, boxes

    if not constraints:
    constraints = [(0.1, 1.0), (0.3, 1.0), (0.5, 1.0), (0.7, 1.0),
    (0.9, 1.0), (0.0, 1.0)]

    img = Image.fromarray(img)
    w, h = img.size
    crops = [(0, 0, w, h)]
    for min_iou, max_iou in constraints:
    for _ in range(max_trial):
    scale = random.uniform(scales[0], scales[1])
    aspect_ratio = random.uniform(max(1 / max_ratio, scale * scale), \
    min(max_ratio, 1 / scale / scale))
    crop_h = int(h * scale / np.sqrt(aspect_ratio))
    crop_w = int(w * scale * np.sqrt(aspect_ratio))
    crop_x = random.randrange(w - crop_w)
    crop_y = random.randrange(h - crop_h)
    crop_box = np.array([[(crop_x + crop_w / 2.0) / w,
    (crop_y + crop_h / 2.0) / h,
    crop_w / float(w), crop_h / float(h)]])

    iou = multi_box_iou_xywh(crop_box, boxes)
    if min_iou <= iou.min() and max_iou >= iou.max():
    crops.append((crop_x, crop_y, crop_w, crop_h))
    break

    while crops:
    crop = crops.pop(np.random.randint(0, len(crops)))
    crop_boxes, crop_labels, box_num = box_crop(boxes, labels, crop, (w, h))
    if box_num < 1:
    continue
    img = img.crop((crop[0], crop[1], crop[0] + crop[2],
    crop[1] + crop[3])).resize(img.size, Image.LANCZOS)
    img = np.asarray(img)
    return img, crop_boxes, crop_labels
    img = np.asarray(img)
    return img, boxes, labels

    隨機縮放

    # 隨機縮放
    def random_interp(img, size, interp=None):
    interp_method = [
    cv2.INTER_NEAREST,
    cv2.INTER_LINEAR,
    cv2.INTER_AREA,
    cv2.INTER_CUBIC,
    cv2.INTER_LANCZOS4,
    ]
    if not interp or interp not in interp_method:
    interp = interp_method[random.randint(0, len(interp_method) - 1)]
    h, w, _ = img.shape
    im_scale_x = size / float(w)
    im_scale_y = size / float(h)
    img = cv2.resize(
    img, None, None, fx=im_scale_x, fy=im_scale_y, interpolation=interp)
    return img

    隨機翻轉

    # 隨機翻轉
    def random_flip(img, gtboxes, thresh=0.5):
    if random.random() > thresh:
    img = img[:, ::-1, :]
    gtboxes[:, 0] = 1.0 - gtboxes[:, 0]
    return img, gtboxes

    隨機打亂真實框排列順序

    # 隨機打亂真實框排列順序
    def shuffle_gtbox(gtbox, gtlabel):
    gt = np.concatenate(
    [gtbox, gtlabel[:, np.newaxis]], axis=1)
    idx = np.arange(gt.shape[0])
    np.random.shuffle(idx)
    gt = gt[idx, :]
    return gt[:, :4], gt[:, 4]

    批量數據讀取與加速

    上面的程序展示了如何讀取一張圖片的數據并加速,下面的代碼實現了批量數據讀取。

    # 獲取一個批次內樣本隨機縮放的尺寸
    def get_img_size(mode):
    if (mode == 'train') or (mode == 'valid'):
    inds = np.array([0,1,2,3,4,5,6,7,8,9])
    ii = np.random.choice(inds)
    img_size = 320 + ii * 32
    else:
    img_size = 608
    return img_size

    # 將 list形式的batch數據 轉化成多個array構成的tuple
    def make_array(batch_data):
    img_array = np.array([item[0] for item in batch_data], dtype = 'float32')
    gt_box_array = np.array([item[1] for item in batch_data], dtype = 'float32')
    gt_labels_array = np.array([item[2] for item in batch_data], dtype = 'int32')
    img_scale = np.array([item[3] for item in batch_data], dtype='int32')
    return img_array, gt_box_array, gt_labels_array, img_scale

    # 批量讀取數據,同一批次內圖像的尺寸大小必須是一樣的,
    # 不同批次之間的大小是隨機的,
    # 由上面定義的get_img_size函數產生
    def data_loader(datadir, batch_size= 10, mode='train'):
    cname2cid = get_insect_names()
    records = get_annotations(cname2cid, datadir)

    def reader():
    if mode == 'train':
    np.random.shuffle(records)
    batch_data = []
    img_size = get_img_size(mode)
    for record in records:
    #print(record)
    img, gt_bbox, gt_labels, im_shape = get_img_data(record,
    size=img_size)
    batch_data.append((img, gt_bbox, gt_labels, im_shape))
    if len(batch_data) == batch_size:
    yield make_array(batch_data)
    batch_data = []
    img_size = get_img_size(mode)
    if len(batch_data) > 0:
    yield make_array(batch_data)

    return readerd = data_loader('/home/aistudio/work/insects/train', batch_size=2, mode='train')img, gt_boxes, gt_labels, im_shape = next(d())img.shape, gt_boxes.shape, gt_labels.shape, im_shape.shape((2, 3, 544, 544), (2, 50, 4), (2, 50), (2, 2))

    由于在數據預處理耗時較長,可能會成為網絡訓練速度的瓶頸,所以需要對預處理部分進行優化。通過使用Paddle提供的API paddle.reader.xmap_readers可以開啟多線程讀取數據,具體實現代碼如下。

    import functools
    import paddle

    # 使用paddle.reader.xmap_readers實現多線程讀取數據
    def multithread_loader(datadir, batch_size= 10, mode='train'):
    cname2cid = get_insect_names()
    records = get_annotations(cname2cid, datadir)
    def reader():
    if mode == 'train':
    np.random.shuffle(records)
    img_size = get_img_size(mode)
    batch_data = []
    for record in records:
    batch_data.append((record, img_size))
    if len(batch_data) == batch_size:
    yield batch_data
    batch_data = []
    img_size = get_img_size(mode)
    if len(batch_data) > 0:
    yield batch_data

    def get_data(samples):
    batch_data = []
    for sample in samples:
    record = sample[0]
    img_size = sample[1]
    img, gt_bbox, gt_labels, im_shape = get_img_data(record, size=img_size)
    batch_data.append((img, gt_bbox, gt_labels, im_shape))
    return make_array(batch_data)

    mapper = functools.partial(get_data, )

    return paddle.reader.xmap_readers(mapper, reader, 8, 10)d = multithread_loader('/home/aistudio/work/insects/train', batch_size=2, mode='train')img, gt_boxes, gt_labels, im_shape = next(d())img.shape, gt_boxes.shape, gt_labels.shape, im_shape.shape((2, 3, 352, 352), (2, 50, 4), (2, 50), (2, 2))

    至此,我們完成了如何查看數據集中的數據、提取數據標注信息、從文件讀取圖像和標注數據、數據增多、批量讀取和加速等過程,通過multithread_loader可以返回img, gt_boxes, gt_labels, im_shape等數據,接下來就可以將它們輸入神經網絡應用在具體算法上面了。

    在開始具體的算法講解之前,先補充一下測試數據的讀取代碼,測試數據沒有標注信息,代碼如下所示。

    # 測試數據讀取

    # 將 list形式的batch數據 轉化成多個array構成的tuple
    def make_test_array(batch_data):
    img_name_array = np.array([item[0] for item in batch_data])
    img_data_array = np.array([item[1] for item in batch_data], dtype = 'float32')
    img_scale_array = np.array([item[2] for item in batch_data], dtype='int32')
    return img_name_array, img_data_array, img_scale_array

    # 測試數據讀取
    def test_data_loader(datadir, batch_size= 10, test_image_size=608, mode='test'):
    """
    加載測試用的圖片,測試數據沒有groundtruth標簽
    """
    image_names = os.listdir(datadir)
    def reader():
    batch_data = []
    img_size = test_image_size
    for image_name in image_names:
    file_path = os.path.join(datadir, image_name)
    img = cv2.imread(file_path)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    H = img.shape[0]
    W = img.shape[1]
    img = cv2.resize(img, (img_size, img_size))

    mean = [0.485, 0.456, 0.406]
    std = [0.229, 0.224, 0.225]
    mean = np.array(mean).reshape((1, 1, -1))
    std = np.array(std).reshape((1, 1, -1))
    out_img = (img / 255.0 - mean) / std
    out_img = out_img.astype('float32').transpose((2, 0, 1))
    img = out_img #np.transpose(out_img, (2,0,1))
    im_shape = [H, W]

    batch_data.append((image_name.split('.')[0], img, im_shape))
    if len(batch_data) == batch_size:
    yield make_test_array(batch_data)
    batch_data = []
    if len(batch_data) > 0:
    yield make_test_array(batch_data)

    return reader

    總結

    以上是生活随笔為你收集整理的处理之后的图像句柄传到显示框_深度学习目标检测与预处理模块的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    精品国产一区二区三区蜜臀 | 在线观看成人毛片 | 在线小视频国产 | 久久99精品国产麻豆婷婷 | 91热爆在线观看 | 国产国产人免费人成免费视频 | 99热在线这里只有精品 | 日韩午夜电影 | 日本xxxxav| 国产成人精品综合 | 日日干网 | 人人插人人做 | 97视频久久久 | 亚洲精品乱码久久久久久蜜桃欧美 | 天天爱天天 | 国产一级在线视频 | 在线观看中文字幕一区二区 | 亚洲成人av在线 | 欧美一级欧美一级 | 国产91探花 | 婷婷av网站| 一级黄色在线免费观看 | 日日夜夜天天射 | 青春草免费在线视频 | 黄色三级视频片 | 18+视频网站链接 | 99视频黄| 日韩精品不卡在线观看 | 欧美调教网站 | 欧美日韩在线播放 | 91精品国产综合久久婷婷香蕉 | 国产成人三级在线播放 | 亚洲一区二区天堂 | 永久黄网站色视频免费观看w | 综合国产视频 | 欧美日韩一区二区三区在线免费观看 | 国产黄色特级片 | 日日日天天天 | 中文字幕文字幕一区二区 | 丁香导航 | 中文在线www | 中文不卡视频 | 欧美精品一区二区免费 | 99精品国产99久久久久久97 | 国产高清中文字幕 | 精品视频国产一区 | ww视频在线观看 | 四虎影视欧美 | 久久电影中文字幕视频 | 激情五月六月婷婷 | 天天爱天天舔 | 日韩理论片 | 国产精品99久久久久久久久 | 国产亚洲精品精品精品 | 日韩二三区 | 久久久久综合精品福利啪啪 | 欧美精品乱码久久久久久 | 亚洲黄色片一级 | 91人人爽人人爽人人精88v | 婷婷激情欧美 | 日韩性久久 | 久久久久免费视频 | 久久久久久久久久久国产精品 | 国产日女人 | 国产一区二区在线观看视频 | 成人在线免费观看视视频 | 亚洲 欧美 精品 | 中文字幕在线免费看线人 | 欧美 日韩 视频 | www.国产视频| 久久爽久久爽久久av东京爽 | 黄网站色成年免费观看 | 高清av免费看 | 国产精品第54页 | 九九在线视频免费观看 | 欧美色精品天天在线观看视频 | 操操操干干干 | 久久久国产精品亚洲一区 | 国产免费中文字幕 | 91精品黄色 | 久久欧美精品 | 亚洲二区精品 | 国产四虎影院 | a在线免费观看视频 | 中文字幕日韩有码 | 波多野结衣视频一区二区三区 | 欧美精品国产精品 | 精品国产黄色片 | 狠狠操天天射 | 国产在线精品观看 | 精品欧美一区二区三区久久久 | 天天干天天草天天爽 | 国产成人一区二区三区电影 | 久久国产精品一区二区三区四区 | 最新av电影网址 | 九九欧美 | 精品国内自产拍在线观看视频 | 国产福利一区二区在线 | 国产一区自拍视频 | 国产999在线观看 | 欧美激情综合五月 | 开心激情五月婷婷 | 久久久国产精品成人免费 | 6699私人影院| 在线免费观看视频 | 亚洲日韩中文字幕 | 欧美日本在线视频 | 91在线精品观看 | 久久久久国产精品视频 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 天堂在线v | 青青草视频精品 | 精品a级片 | 久久国产精品免费 | 国产无区一区二区三麻豆 | 中文字幕在线观看播放 | 国产综合在线观看视频 | 国产第一福利 | 中文字幕亚洲欧美日韩2019 | 久久香蕉电影网 | 日韩美女黄色片 | 国产高清精品在线 | 国产高清av在线播放 | 欧美色图88 | 国产97在线播放 | 日韩毛片在线一区二区毛片 | 亚洲欧美日韩在线一区二区 | 亚洲免费在线观看视频 | 亚洲国产日本 | av在线免费在线观看 | 精品久久久久国产免费第一页 | 国产视频97 | 国产精品久久一区二区三区, | 成人在线观看网址 | 五月天中文字幕mv在线 | 久久成人人人人精品欧 | 婷婷夜夜| 久久视频这里有精品 | 2019中文字幕网站 | 毛片www | www蜜桃视频 | 欧美资源 | 日韩欧美高清一区二区 | 综合在线色 | 17videosex性欧美| 97国产大学生情侣白嫩酒店 | 国产精品视频最多的网站 | 亚洲视频aaa | 在线精品视频在线观看高清 | 中文字幕在线人 | 99精品视频在线播放免费 | 中文字幕亚洲字幕 | 亚洲精品视频在线 | 国产成人精品国内自产拍免费看 | 国产精品成人一区二区三区吃奶 | 国产成人333kkk | 天天操天天射天天爽 | 国产一区二区免费看 | 中文字幕一区二区三区四区 | 日韩av高潮 | 国产一区黄色 | 国产高清不卡av | 欧美日韩亚洲在线观看 | 欧美日韩免费看 | 久久96国产精品久久99漫画 | 国产视频精品免费播放 | 99久久日韩精品视频免费在线观看 | 国产成人精品一区二 | 成人国产精品一区 | 中文字幕中文字幕在线中文字幕三区 | 婷婷网站天天婷婷网站 | av 一区二区三区 | 国产在线不卡一区 | 免费在线观看黄色网 | 97免费公开视频 | 狠狠的操你 | 综合铜03| 亚洲h在线播放在线观看h | 在线观看成人福利 | 色五月激情五月 | 成人avav| 国产在线播放一区二区三区 | 日本中文字幕网 | 国产小视频免费在线观看 | 欧美一级激情 | 日韩精品免费在线播放 | 99久久精品国产毛片 | 91精品视频在线看 | 日韩艹| 国产欧美综合视频 | 欧美9999| 色综合天天爱 | 亚洲激情电影在线 | 97在线观视频免费观看 | www.av在线播放 | 亚洲人久久久 | 亚洲高清av | 激情欧美xxxx | 又黄又爽又色无遮挡免费 | 国产91影院 | 国产精品一区二区久久精品爱涩 | 国产免费视频在线 | 欧美伦理一区二区三区 | 五月开心激情网 | 在线有码中文 | 日韩视频在线不卡 | 久草精品在线播放 | 日韩精品观看 | 亚洲精品久久久蜜桃直播 | 成人网大片| 国产亚洲精品久久网站 | 久久久久久久免费观看 | 91精品国产高清 | 久插视频| 日韩精品无码一区二区三区 | 亚洲综合色视频在线观看 | 亚洲激情在线观看 | 啪啪激情网 | 国产精品一区久久久久 | 99这里有精品 | 又污又黄的网站 | av网站手机在线观看 | 2019中文字幕网站 | 久久精品中文字幕免费mv | 免费av网站观看 | 97超碰在线播放 | 99re热精品视频| 精品电影一区二区 | 在线观看一区二区视频 | 久久草精品 | 国产精品免费一区二区三区 | 久久香蕉国产精品麻豆粉嫩av | 天天色天天操综合网 | av青草 | 久久久国产精品一区二区三区 | 亚洲精品一区中文字幕乱码 | 亚洲91在线| 激情视频久久 | 成人av直播 | 久久精品视频网站 | 香蕉久草 | 欧美一区,二区 | 999国内精品永久免费视频 | 亚洲专区中文字幕 | 99re国产视频 | 亚洲国产日韩精品 | 久久视频在线观看免费 | 日批视频在线播放 | 成年人黄色免费视频 | 热久久这里只有精品 | 四虎免费在线观看视频 | 国产精品亚洲片夜色在线 | 国产精品视频永久免费播放 | 狠狠色丁香久久婷婷综合五月 | 五月婷婷在线综合 | 国产探花 | 午夜91视频 | 亚洲视频精品在线 | 在线观看免费色 | 日韩精品一区二区在线视频 | 欧美一区二区在线免费看 | 日韩精品一区二区免费 | 久久99热精品 | 又黄又爽又刺激视频 | 国产一区在线视频 | av性网站| 成人免费视频网址 | 国产视频不卡一区 | 午夜丁香网| 97人人模人人爽人人喊中文字 | 日韩激情一二三区 | 97电影网站| 免费看成人av | 国产在线精品区 | 亚洲精品啊啊啊 | 久久婷婷网 | 色多视频在线观看 | 天天操操操操操操 | 色婷婷伊人 | 国产1区在线观看 | 丁香婷婷社区 | 国产精品免费一区二区三区 | 午夜精品久久久久99热app | 天天综合天天做天天综合 | 日韩视频免费观看高清 | 国产亚洲精品久久久久久 | 国产一区免费看 | 久久一精品| 91天天视频 | 亚洲国产经典视频 | 成人在线视频免费观看 | 四虎影视8848dvd | 在线观看中文字幕第一页 | 国产精品美女毛片真酒店 | 欧美日韩3p| 亚洲一区不卡视频 | 91污在线 | 伊人久久五月天 | 国产在线探花 | 国内久久视频 | 免费欧美 | 91激情小视频 | 久草在线手机观看 | 亚洲精选视频在线 | 精品国产1区2区3区 国产欧美精品在线观看 | 91免费高清在线观看 | 911免费视频 | 日韩高清 一区 | 亚洲精品午夜久久久久久久 | 成人在线免费视频 | 国产日本高清 | 久久视频免费在线观看 | 九九精品无码 | 日韩艹 | 色视频网站在线 | 操少妇视频| 91麻豆产精品久久久久久 | 国产美女被啪进深处喷白浆视频 | 黄a网| 国产精品欧美 | 国产永久免费 | 精品久久久久久亚洲综合网 | 丁香婷婷综合色啪 | 国产精品黄色在线观看 | 国产精品视频 | av在线日韩 | 国产五十路毛片 | 日日麻批40分钟视频免费观看 | 久久精品人人做人人综合老师 | 久99久精品视频免费观看 | 日韩欧美视频在线播放 | 日韩在线观看你懂的 | 久99久在线视频 | 久久久久麻豆v国产 | 久久精品视频免费播放 | 亚洲欧美乱综合图片区小说区 | 国产精品毛片久久久久久久久久99999999 | 黄色国产在线 | 色多多污污 | 亚洲91在线 | 99久久www免费 | 一二区av | 午夜精选视频 | 高清有码中文字幕 | 蜜臀av夜夜澡人人爽人人 | 精品主播网红福利资源观看 | 国产精品久久久久久久免费观看 | 欧美污污视频 | 天堂av影院| 国产欧美在线一区 | 国产高清在线观看 | 婷婷日韩 | 日日操操 | 亚洲欧美激情精品一区二区 | 国产午夜精品免费一区二区三区视频 | 亚洲精品一区二区在线观看 | 亚洲草视频 | 婷婷久久亚洲 | 天天色天天射综合网 | 久久久久久综合网天天 | 亚洲女同videos | 日韩国产高清在线 | 日韩av中文字幕在线 | 手机在线黄色网址 | 一区二区三区电影 | 91亚洲欧美激情 | 亚洲精品久久久久www | 毛片网站免费在线观看 | 99r国产精品 | 国产日韩欧美在线看 | 日韩一二区在线观看 | 日本在线观看中文字幕无线观看 | 中文字幕亚洲精品在线观看 | 日本久久免费视频 | 欧美日韩破处 | 日韩午夜av | 九九涩涩av台湾日本热热 | 久久视频免费 | 西西4444www大胆无视频 | 久久久久国产精品免费 | 欧美一区二区三区在线视频观看 | 中文字幕在线播放第一页 | 国产精品电影一区二区 | 久久视影 | www.com.黄 | 精品久久久久久综合 | 久久久影片 | 久久国产电影 | 国产成人a v电影 | 韩国三级av在线 | 一级免费看视频 | 日韩av一区二区三区四区 | 粉嫩av一区二区三区四区 | 成人中心免费视频 | 免费无遮挡动漫网站 | 在线观看中文字幕dvd播放 | 国产精品欧美 | 欧美成人区 | 日韩精品你懂的 | 免费h精品视频在线播放 | 亚洲欧美日本国产 | 毛片3| 亚洲最大激情中文字幕 | 国产黄色大片免费看 | 亚洲精品视频第一页 | 久久99视频免费观看 | 欧美先锋影音 | 一区二区三区日韩精品 | 国产在线视频导航 | 91看片在线播放 | 国产精品久久影院 | 1000部国产精品成人观看 | 97国产超碰在线 | 欧美色图视频一区 | www.五月天婷婷 | 亚洲精品一区二区久 | 久久精品视频在线观看 | 欧美日韩国产二区三区 | 日日碰狠狠添天天爽超碰97久久 | 伊人久操| 久久精品一区二区 | 在线亚洲小视频 | 日本中文字幕影院 | 亚洲精品女 | 国产日韩欧美在线观看视频 | 婷婷 综合 色 | 国产色综合 | 色av色av色av | 亚洲视频456 | 婷婷久久综合九色综合 | 国产女v资源在线观看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产精品美女久久久久久久 | 国产成人一区二区三区 | 亚洲免费精品一区二区 | 国产黄色看片 | 国产精品国产三级国产不产一地 | 亚洲极色 | 色亚洲激情 | 少妇bbw搡bbbb搡bbbb| 色综合久久综合中文综合网 | 免费日韩一级片 | 日韩精品久久久久久久电影99爱 | 伊人成人久久 | 免费视频91| 日韩在线观看免费 | 97视频免费 | 综合精品在线 | av亚洲产国偷v产偷v自拍小说 | 久久精品国产亚洲a | 91成人国产 | 热久久精品在线 | 色视频 在线 | 久草资源在线 | 久久九九久久 | 国产精品免费一区二区三区在线观看 | 国产成人性色生活片 | 在线免费黄色片 | 国产精品久久9 | 又爽又黄又刺激的视频 | avove黑丝| 日韩精品一区在线播放 | 日日干,天天干 | 国产美女在线精品免费观看 | 国产亚洲精品av | 婷婷六月丁 | 亚洲国产中文字幕在线观看 | 成人午夜剧场在线观看 | 九九久久婷婷 | 免费在线国产视频 | 人人超碰人人 | 1024在线看片 | 久久久久亚洲精品中文字幕 | 91成人在线观看喷潮 | 欧美乱码精品一区二区 | 国产护士hd高朝护士1 | 国产电影黄色av | 精品国产伦一区二区三区免费 | 天天狠狠干| 涩涩网站在线播放 | 免费看黄在线 | 91大神免费在线观看 | 久久精品99国产 | 成人av资源网 | 高清一区二区三区 | 天天操天天操天天操天天 | 久久精品老司机 | 国产精品va | 日韩专区在线 | 91黄色在线看 | 欧美一区中文字幕 | www黄com| 国产亚洲人成网站在线观看 | 在线观看av片 | 国产一区二区精品 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | www欧美xxxx| 国产精品久久免费看 | 久久久性 | 亚洲国产精品视频在线观看 | 97视频一区 | 在线网站黄 | 久久成电影 | www.五月婷婷.com| 亚洲精品视频网址 | 亚洲高清免费在线 | 免费91麻豆精品国产自产在线观看 | 日韩午夜电影 | 在线观看久久久久久 | 天天玩天天操天天射 | 天天干,天天射,天天操,天天摸 | 久久久精品成人 | 久久久一本精品99久久精品66 | 一区二区精品在线视频 | 久精品视频 | 国产精品日韩高清 | 天天人人综合 | www.com黄色| 99婷婷| 日本中文字幕在线播放 | 在线天堂中文在线资源网 | 国产精彩视频一区 | 日韩在线免费播放 | 欧美精品天堂 | 在线观看中文 | 国际av在线| 欧美激情综合网 | 片网址| 天堂激情网 | 亚洲精品小视频 | 99久久精品免费一区 | 成人av电影免费在线播放 | 国产91勾搭技师精品 | 色先锋资源网 | 很黄很污的视频网站 | 国产一区久久久 | 99精品国自产在线 | 91av亚洲| 911av视频| 久久综合加勒比 | 久久精品1区 | 欧美成a人片在线观看久 | 天堂网一区二区三区 | 婷婷激情av | 色视频国产直接看 | 天天操天天干天天插 | 欧美美女视频在线观看 | 99精品免费久久久久久日本 | 香蕉网在线播放 | 美腿丝袜一区二区三区 | 日韩大片免费观看 | 三级av免费观看 | 国产在线播放不卡 | 国产精品久久久久av福利动漫 | av综合 日韩| 国产69久久久欧美一级 | 欧美久久久一区二区三区 | 青草视频免费观看 | 久久精品国产一区二区三 | 韩日视频在线 | 午夜三级大片 | 日韩在线观看网站 | 亚洲欧洲精品一区 | 国产特级毛片aaaaaa毛片 | 国产精品久久在线观看 | 黄色网在线播放 | 国产女教师精品久久av | 国产精品高潮呻吟久久久久 | 国产精品日韩欧美一区二区 | 欧洲成人av | 欧美韩国日本在线 | 精品久久久久久久久久久院品网 | www色网站 | 国产一区视频免费在线观看 | 国产美女无遮挡永久免费 | 狠狠狠色丁香综合久久天下网 | 天堂av在线网址 | 久久成年人网站 | 狠狠综合久久 | 日韩动漫免费观看高清完整版在线观看 | 久久成| 久久福利剧场 | www黄色 | 午夜精选视频 | 日操操 | 国产v在线| 日韩精品一区二区三区高清免费 | 日日夜夜骑 | 天天拍天天操 | 日韩国产精品一区 | 伊人狠狠| 久草久草在线观看 | 国模视频一区二区三区 | 在线一区观看 | 天天摸天天干天天操天天射 | 九七人人干 | 久久久久婷 | 国产精品一区二区av日韩在线 | 久久96国产精品久久99软件 | 欧美性大胆 | 日韩精品免费一区二区 | 91免费版在线 | 国产在线视频资源 | 久久成人免费 | 国产视频一区二区三区在线 | 欧美日韩综合在线观看 | 欧美午夜久久 | 色亚洲激情 | 五月婷婷操| 国产一级视屏 | 在线观看精品 | 国产91在| 伊人久在线 | 日韩视频在线不卡 | 久久精品视频免费播放 | 狠狠色丁香久久婷婷综 | 天堂av在线中文在线 | 99r在线视频| 一区三区视频 | 啪啪免费观看网站 | 日韩一级成人av | 最近中文字幕完整视频高清1 | 国产一级在线免费观看 | 日韩av图片 | 岛国av在线不卡 | 国产91学生粉嫩喷水 | 国产高清中文字幕 | 亚洲国产精品成人女人久久 | 久久66热这里只有精品 | 香蕉视频4aa| 国产电影一区二区三区四区 | 国产一区av在线 | 探花系列在线 | 成人久久久久久久久久 | 国产一区二区在线看 | 麻豆国产视频 | 91中文在线 | 国产精品久久久久久久久免费 | 久久av影院| 久久午夜免费观看 | 日本中文字幕系列 | 99久久久久免费精品国产 | 欧美国产高清 | 最新av观看 | 99色99| 欧美专区亚洲专区 | 久久精品9| 国产一级免费片 | 最新超碰在线 | 久久精品国产免费看久久精品 | 国产日产精品一区二区三区四区 | 日韩在线免费小视频 | 夜夜操天天 | 国内精自线一二区永久 | 久久精品国产精品亚洲 | 深爱婷婷激情 | 亚洲色图美腿丝袜 | 免费在线观看av片 | 人人超碰人人 | 欧美成人一区二区 | 爱爱一区 | 日韩系列在线观看 | 处女av在线 | 国产精品入口久久 | 日韩高清免费电影 | 国产手机精品视频 | 91最新网址在线观看 | 99免费视频 | 丝袜美腿在线视频 | 在线观看成年人 | 亚洲精品黄色在线观看 | 亚洲久久视频 | 911精品视频 | 久久99九九99精品 | 超碰97国产精品人人cao | 午夜久久久影院 | 中文字幕在线一二 | 在线观看日韩 | 中文字幕第 | 色狠狠狠| 婷婷久久综合九色综合 | 最近日本韩国中文字幕 | 日韩黄色在线 | 五月综合激情婷婷 | 久久婷亚洲五月一区天天躁 | 91精品综合在线观看 | 欧美另类激情 | 99精品国产兔费观看久久99 | 久久国产精品99精国产 | 国产粉嫩在线观看 | 国产字幕在线播放 | 久久精品一区二区三区中文字幕 | 在线视频欧美日韩 | 国产韩国日本高清视频 | 成人av资源 | 在线观看中文字幕2021 | 国产玖玖在线 | 免费高清在线观看成人 | 久草网首页 | 狠狠干成人综合网 | 国产成人久久精品一区二区三区 | 国产做a爱一级久久 | 国产精品一区二区免费看 | 人人玩人人爽 | 欧美激情视频免费看 | 国产精品理论片 | 亚洲成人免费观看 | 97精品在线视频 | www.久久久精品| 成人av电影免费在线播放 | 狠狠色丁香久久综合网 | 日韩精品久久一区二区三区 | 啪啪免费试看 | 日本三级人妇 | 欧美日韩午夜爽爽 | 三级午夜片 | 91av电影在线| 久久久国产精品一区二区中文 | 69亚洲精品 | 久久av免费电影 | 国产精品wwwwww | 婷婷激情小说网 | 亚洲 欧美 综合 在线 精品 | 中文超碰字幕 | 怡红院av| av在线看片| 中文字幕视频播放 | 亚洲精品国产自产拍在线观看 | 亚洲婷婷综合色高清在线 | 狠狠色丁香婷婷综合欧美 | 人人讲| 一区二区三区精品在线视频 | 亚洲精品理论 | 久久综合久久综合这里只有精品 | 欧美 日韩 视频 | 91精品国产高清 | 国产区精品区 | 成片免费观看视频999 | 午夜国产福利在线观看 | 久久黄色小说 | 国产拍在线 | 国产精品久久久久久一二三四五 | 国产1区在线观看 | 一区二区三区高清 | 成人av网址大全 | 天天综合婷婷 | 欧美成年黄网站色视频 | 免费观看特级毛片 | 午夜av激情 | 日韩美女黄色片 | 欧美成人h版在线观看 | 毛片1000部免费看 | 黄色片网站av | 狠狠色丁香久久婷婷综合五月 | 手机在线小视频 | av观看久久久| 久草在线免 | 色精品视频 | 中文字幕av免费在线观看 | 六月天色婷婷 | 免费黄av | av电影中文字幕在线观看 | av中文国产 | 国产一区二区久久久久 | 国产伦理久久精品久久久久_ | 国产成人三级三级三级97 | 中文字幕av免费观看 | 日本在线视频一区二区三区 | 日韩最新在线 | 色综合久久88色综合天天免费 | www免费在线观看 | 免费看黄在线 | 91在线网站| 曰韩精品 | 九九导航 | 精品国精品自拍自在线 | 久热免费在线 | 天天射网| 天天狠狠干 | 久久一区国产 | 三级黄色理论片 | 福利网在线 | 欧美亚洲一级片 | 一区二区三区国 | 亚洲精品乱码久久久久久写真 | 日韩中文字幕第一页 | 九色91视频 | 日韩av免费一区二区 | 毛片99| 日韩免费在线观看视频 | 欧美 日韩精品 | 黄色免费网站大全 | 国产婷婷色 | 久草精品视频在线看网站免费 | 色婷婷久久久综合中文字幕 | 成人性生爱a∨ | 973理论片235影院9 | 亚洲四虎影院 | 国产精品国产亚洲精品看不卡15 | 成人黄色大片在线观看 | 欧美黄色特级片 | 久久99这里只有精品 | 久久精久久精 | 国产精品成人久久久久久久 | 97免费在线观看视频 | 日韩资源视频 | 欧美日韩aaaa | 伊人婷婷网 | 午夜婷婷综合 | 不卡av在线| 狠狠色丁香久久婷婷综 | 18做爰免费视频网站 | 国产精品一区二区三区在线播放 | 三级午夜片 | 久久成人麻豆午夜电影 | 国产亚洲精品久久久久秋 | 亚洲男人天堂a | 成人久久久久久久久久 | 国产精品久久久久久久久久了 | 91精品久久久久久综合乱菊 | 久久精品一区二区三区视频 | 日韩高清不卡一区二区三区 | 四季av综合网站 | 射射色 | 中国精品少妇 | 99热九九这里只有精品10 | 中文字幕文字幕一区二区 | 免费a视频在线观看 | 一级片视频免费观看 | 在线视频一二区 | 久久免费av| 99精品国产一区二区三区麻豆 | 国产黄免费在线观看 | 免费黄色看片 | 国产日产精品一区二区三区四区 | 97国产视频 | 欧美日韩大片在线观看 | 久久观看免费视频 | 九九综合久久 | 日本性xxx | 日本在线成人 | 亚洲天堂网站 | 91在线免费公开视频 | 国产一区二区精 | 69久久久 | 精品影院一区二区久久久 | 视频99爱 | 亚洲精品国产精品国自 | 九色91av | 香蕉在线视频播放网站 | 亚洲精品高清在线观看 | 欧美在线一二 | 成人毛片一区 | 国产午夜精品理论片在线 | 午夜精品久久久久久久久久久久久久 | 69精品久久久 | 亚洲精品在线免费 | 四虎成人精品永久免费av | 天天摸天天舔天天操 | 最近中文字幕在线中文高清版 | 国产91影院| 最近中文字幕高清字幕免费mv | 欧美日韩高清一区二区 | 天堂va欧美va亚洲va老司机 | 免费观看国产精品视频 | 人人舔人人舔 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 亚洲精品网址在线观看 | 国产视频在线观看一区 | 精品国产欧美一区二区 | 色小说av | 色婷婷国产精品 | 亚洲人在线 | 中文字幕一区二区在线播放 | 超碰在线色 | 99在线观看免费视频精品观看 | 亚洲欧美日本国产 | 波多野结衣视频一区 | 亚洲专区欧美专区 | 亚洲综合视频网 | 久久久久久欧美二区电影网 | 欧美日韩中文在线观看 | 五月激情天| 国产精品午夜av | 欧美aaaxxxx做受视频 | 欧美一级电影在线观看 | 日韩视频一区二区 | 日韩免费在线一区 | 在线视频一二三 | 91成人网在线播放 | 国产99免费视频 | 99se视频在线观看 | 久久久久久久久久久久久影院 | 日韩欧美视频一区二区 | 国产这里只有精品 | 国产亚洲免费的视频看 | 欧美地下肉体性派对 | 99麻豆久久久国产精品免费 | 在线视频久久 | 久久久精品国产一区二区电影四季 | 亚洲一级国产 | 国产精品久久久久久久久久久久午夜 | 丁香婷婷亚洲 | 丁香六月婷 | 福利一区二区三区四区 | 日韩欧美在线视频一区二区 | 亚洲少妇自拍 | 亚洲天堂网在线观看视频 | 久久精品在线免费观看 | 亚洲在线视频观看 | 亚洲一区免费在线 | 免费看一级特黄a大片 | 麻豆久久 | 中文在线8资源库 | 一区二区三区久久 | 色五月色开心色婷婷色丁香 | 国产精品四虎 | 欧美二区视频 | 在线观看涩涩 | 人人狠 | 一区二区视频电影在线观看 | 免费看网站在线 | 韩国三级av在线 | 亚洲dvd| 免费在线观看成人av | 日韩素人在线观看 | 国产精彩视频一区 | 国产免费观看久久黄 | 97高清视频 | 丁香五月亚洲综合在线 | 在线观看一区视频 | 亚洲一区日韩在线 | a午夜电影 | av线上看| 日韩一区二区免费在线观看 | 96av视频| 中文字幕在线影院 | 激情五月六月婷婷 | 在线观看av的网站 | 久久久久国产一区二区三区四区 | 在线观看成人网 | 99国产精品| 日韩精品视 | 97国产大学生情侣白嫩酒店 | 精品在线观看一区二区 | 午夜av电影 | 免费看搞黄视频网站 | 免费av在线网站 | 在线观看国产区 | 日韩有码欧美 | 最新av观看 | 日本性高潮视频 | 日日夜夜天天综合 | 欧美精品生活片 | www色com | 亚洲黄色高清 | 97精品视频在线 | 久久亚洲私人国产精品va | 超碰在线国产 | 麻豆成人精品视频 | 麻豆视频免费在线 | 国产精品高潮在线观看 | 日韩欧美在线高清 | 国产精品中文 | 久久久久免费精品国产 | 色噜噜狠狠狠狠色综合 | 91麻豆网| 在线日韩中文 | 黄污污网站 | 中文字幕欧美三区 | 欧美日韩国产在线精品 | 激情网五月天 | 久久久免费精品 | 91免费试看| 色妞色视频一区二区三区四区 | 人人狠狠| 欧美大jb| 99精品国产福利在线观看免费 | 国产精品久久久久久久久久久杏吧 | 日本中文字幕视频 | 99免费在线播放99久久免费 | 99激情网| 涩涩网站在线 | 97成人免费 | 久草在线国产 | 久久9999久久| 亚州av网站大全 | 在线视频国产区 | 久久se视频 | 国产在线综合视频 | 亚洲 欧洲av | 狠狠色丁香婷婷综合最新地址 | 国产精品一区二区三区在线免费观看 | 91成人短视频在线观看 | 国产精品久久久久久久久久三级 | 亚洲视频综合 | 91综合久久一区二区 | 91香蕉视频黄 |