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

YOLO、SSD 和 Faster R-CNN 三種方案實現物體識別的對比

人工智能 機器視覺 開發
本文我將評估并比較三種流行的物體檢測模型:YOLO(You Only Look Once)、Faster R-CNN(基于區域的卷積神經網絡)和SSD(單次多框檢測器)。

本文旨在開發一個能夠準確檢測和分割視頻中物體的計算機視覺系統。我將使用最先進的三種SoA(State-of-the-Art)方法:YOLO、SSD和Faster R-CNN,并評估它們的性能。然后,我通過視覺分析結果,突出它們的優缺點。接下來,我根據評估和分析確定表現最佳的方法。我將提供一個鏈接,展示最佳方法在視頻中的表現。

1. YOLO(You Only Look Once)

YOLOv8等深度學習模型在機器人、自動駕駛和視頻監控等多個行業中變得至關重要。這些模型能夠實時檢測物體,并對安全和決策過程產生影響。YOLOv8(You Only Look Once)利用計算機視覺技術和機器學習算法,以高速度和準確性識別圖像和視頻中的物體。這使得高效且準確的物體檢測成為可能,這在許多應用中至關重要(Keylabs, 2023)。

實現細節

我創建了一個run_model函數來實現物體檢測和分割。該函數接收三個參數作為輸入:模型、輸入視頻和輸出視頻。它逐幀讀取視頻,并將輸入視頻的結果可視化到幀上。然后,注釋后的幀被保存到輸出視頻文件中,直到所有幀都被處理完畢或用戶按下“q”鍵停止處理。

我使用YOLO模型(yolov8n.pt,“v8”)進行物體檢測,該模型顯示帶有檢測到的邊界框的視頻。同樣,對于物體分割,使用具有分割特定權重的YOLO模型(yolov8n-seg.pt)生成帶有分割物體的視頻。

def run_model(model, video, output_video):
    model = model
    cap = cv2.VideoCapture(video)

    # Create a VideoWriter object
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')

    # Get frame width and height
    frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    out = cv2.VideoWriter(output_video, fourcc, 20.0, (frame_width, frame_height))

    if not cap.isOpened():
        print("Cannot open camera")
        exit()

    while True:
        # Capture frame-by-frame
        ret, frame = cap.read()

        if not ret:
            print("No frame...")
            break

        # Predict on image
        results = model.track(source=frame, persist=True, tracker='bytetrack.yaml')
        frame = results[0].plot()

        # Write the frame to the output video file
        out.write(frame)

        # Display the resulting frame
        cv2.imshow("ObjectDetection", frame)

        # Terminate run when "Q" pressed
        if cv2.waitKey(1) == ord("q"):
            break

    # When everything done, release the capture
    cap.release()

    # Release the video recording
    # out.release()
    cv2.destroyAllWindows()

# Object Detection
run_model(model=YOLO('yolov8n.pt', "v8"), video=VIDEO, output_video=OUTPUT_VIDEO_YOLO_DET)

# Object Segmentation
run_model(model=YOLO('yolov8n-seg.pt', "v8"), video=VIDEO, output_video=OUTPUT_VIDEO_YOLO_SEG)

2. Faster R-CNN(基于區域的卷積神經網絡)

Faster R-CNN是一種最先進的物體檢測模型。它有兩個主要組件:一個深度全卷積區域提議網絡和一個Fast R-CNN物體檢測器。它使用區域提議網絡(RPN),該網絡與檢測網絡共享全圖像卷積特征(Ren等,2015)。RPN是一個全卷積神經網絡,生成高質量的提議。然后,Fast R-CNN使用這些提議進行物體檢測。這兩個模型被組合成一個單一的網絡,RPN指導在哪里尋找物體(Ren等,2015)。

(1) 使用Faster R-CNN進行物體檢測

為了實現物體檢測,我創建了兩個函數:get_model和detect_and_draw_boxes。get_model函數加載一個預訓練的Faster R-CNN模型,該模型是torchvision庫的一部分,并在COCO數據集上使用ResNet-50-FPN骨干網絡進行預訓練。我將模型設置為評估模式。然后,detect_and_draw_boxes函數對單個視頻幀進行物體檢測,并在檢測到的物體周圍繪制邊界框。它將幀轉換為張量并傳遞給模型。該模型返回預測結果,包括檢測到的物體的邊界框、標簽和分數。置信度分數高于0.9的邊界框,以及指示類別和置信度分數的標簽被添加。


def get_model():
    # Load a pre-trained Faster R-CNN model    
    weights = FasterRCNN_ResNet50_FPN_Weights.DEFAULT
    model = fasterrcnn_resnet50_fpn(weights=weights, pretrained=True)
    model.eval()
    return model

def faster_rcnn_object_detection(model, frame):
    # Transform frame to tensor and add batch dimension
    transform = T.Compose([T.ToTensor()])
    frame_tensor = transform(frame).unsqueeze(0)

    with torch.no_grad():
        prediction = model(frame_tensor)

    bboxes, labels, scores = prediction[0]["boxes"], prediction[0]["labels"], prediction[0]["scores"]

    # num = torch.argwhere(scores > 0.9).shape[0]

    # Draw boxes and labels on the frame
    for i in range(len(prediction[0]['boxes'])):
        xmin, ymin, xmax, ymax = bboxes[i].numpy().astype('int')
        class_name = COCO_NAMES[labels.numpy()[i] -1]

        if scores[i] > 0.9:  # Only draw boxes for confident predictions
            cv2.rectangle(frame, (xmin, ymin), (xmax, ymax), (0, 255, 0), 3)

            # Put label
            label = f"{class_name}: {scores[i]:.2f}"
            cv2.putText(frame, label, (xmin, ymin - 10), FONT, 0.5, (255, 0, 0), 2, cv2.LINE_AA)

    return frame

# Set up the model
model = get_model()

# Video capture setup
cap = cv2.VideoCapture(VIDEO)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')

# Get frame width and height
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
out = cv2.VideoWriter(OUTPUT_VIDEO_FASTER_RCNN_DET, fourcc, 20.0, (frame_width, frame_height))

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("No frame...")
        break

    # Process frame
    processed_frame = faster_rcnn_object_detection(model, frame)

    # Write the processed frame to output
    out.write(processed_frame)

    # Display the frame
    cv2.imshow('Frame', processed_frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Release everything is finished
cap.release()
out.release()
cv2.destroyAllWindows()

(2) 使用Faster R-CNN進行物體分割

為了實現物體分割,我創建了函數來加載預訓練的Mask R-CNN模型、預處理視頻幀、應用分割并將掩碼覆蓋在幀上。首先,我使用從torchvision庫加載的預訓練Mask R-CNN模型,該模型具有ResNet-50-FPN骨干網絡,并將其設置為評估模式。我在COCO數據集上訓練了該模型。然后,preprocess_frame函數對每個視頻幀進行預處理并將其轉換為張量。接下來,apply_segmentation函數對預處理后的幀應用分割過程,overlay_masks函數將分割掩碼覆蓋在幀上,繪制邊界框,并為置信度較高的檢測添加標簽。這涉及通過置信度閾值過濾檢測結果、覆蓋掩碼、繪制矩形和添加文本標簽。


# Load the pre-trained Mask R-CNN model
model = maskrcnn_resnet50_fpn(pretrained=True)
model.eval()

# Function to overlay masks and draw rectangles and labels on the frame
def faster_rcnn_object_segmentation(frame, threshold=0.9):
    # Function to preprocess the frame
    transform = T.Compose([T.ToTensor()])
    frame_tensor = transform(frame).unsqueeze(0)

    with torch.no_grad():
        predictions = model(frame_tensor)

    labels = predictions[0]['labels'].cpu().numpy()
    masks = predictions[0]['masks'].cpu().numpy()
    scores = predictions[0]['scores'].cpu().numpy()
    boxes = predictions[0]['boxes'].cpu().numpy()

    overlay = frame.copy()

    for i in range(len(masks)):
        if scores[i] > threshold:
            mask = masks[i, 0]
            mask = (mask > 0.6).astype(np.uint8)
            color = np.random.randint(0, 255, (3,), dtype=np.uint8)
            overlay[mask == 1] = frame[mask == 1] * 0.5 + color * 0.5

            xmin, ymin, xmax, ymax = boxes[i].astype('int')
            class_name = COCO_NAMES[labels[i] - 1]

            # Draw rectangle
            cv2.rectangle(overlay, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)

            # Put label
            label = f"{class_name}: {scores[i]:.2f}"
            cv2.putText(overlay, label, (xmin, ymin - 10), FONT, 0.5, (255, 0, 0), 2, cv2.LINE_AA)

    return overlay

# Capture video
cap = cv2.VideoCapture(VIDEO)

fourcc = cv2.VideoWriter_fourcc(*'mp4v')

# Get frame width and height
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
out = cv2.VideoWriter(OUTPUT_VIDEO_FASTER_RCNN_SEG, fourcc, 20.0, (frame_width, frame_height))

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("No frame...")
        break

    # Overlay masks
    processed_frame = faster_rcnn_object_segmentation(frame)

    # Write the processed frame to output
    out.write(processed_frame)

    # Display the frame
    cv2.imshow('Frame', processed_frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Release everything is finished
cap.release()
out.release()
cv2.destroyAllWindows()

3. SSD(單次多框檢測器)

SSD,即單次多框檢測器,是一種使用單一深度神經網絡在圖像中進行物體檢測的方法。它將邊界框的輸出空間離散化為每個特征圖位置上具有不同縱橫比和尺度的一組默認框。在預測過程中,網絡為每個默認框中每個物體類別的存在生成分數,并調整框以更好地匹配物體形狀。SSD結合了來自不同分辨率的多個特征圖的預測,以有效處理各種大小的物體,消除了提議生成和重采樣階段的需要,從而簡化了訓練過程并集成到檢測系統中(Liu等,2016)。

(1) 使用SSD進行物體檢測

我創建了一個ssd_object_detection函數,該函數使用預訓練的SSD模型,處理視頻幀,應用檢測并在檢測到的物體周圍繪制邊界框,以實現使用SSD(單次多框檢測器)模型的物體檢測。


# Load the pre-trained SSD model
model = ssd300_vgg16(pretrained=True)
model.eval() 

def ssd_object_detection(frame, threshold=0.5):
    # Function to preprocess the frame
    transform = T.Compose([T.ToTensor()])
    frame_tensor = transform(frame).unsqueeze(0)

    with torch.no_grad():
        predictions = model(frame_tensor)

    labels = predictions[0]['labels'].cpu().numpy()
    scores = predictions[0]['scores'].cpu().numpy()
    boxes = predictions[0]['boxes'].cpu().numpy()


    for i in range(len(boxes)):
        if scores[i] > threshold:

            xmin, ymin, xmax, ymax = boxes[i].astype('int')
            class_name = COCO_NAMES[labels[i] - 1]

            # Draw rectangle
            cv2.rectangle(frame, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)

            # Put label
            label = f"{class_name}: {scores[i]:.2f}"
            cv2.putText(frame, label, (xmin, ymin - 10), FONT, 0.5, (255, 0, 0), 2, cv2.LINE_AA)

    return frame

# Capture video
cap = cv2.VideoCapture(VIDEO)

fourcc = cv2.VideoWriter_fourcc(*'mp4v')

# Get frame width and height
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
out = cv2.VideoWriter(OUTPUT_VIDEO_SSD_DET, fourcc, 20.0, (frame_width, frame_height))

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("No frame...")
        break

    # Overlay masks
    processed_frame = ssd_object_detection(frame)

    # Write the processed frame to output
    out.write(processed_frame)

    # Display the frame
    cv2.imshow('Frame', processed_frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Release everything is finished
cap.release()
out.release()
cv2.destroyAllWindows()

(2) 使用SSD進行物體分割

同樣,我創建了ssd_object_segmentation函數,該函數加載預訓練模型,處理視頻幀,應用分割并在檢測到的物體上繪制掩碼和標簽,以實現物體分割。


# Load the pre-trained SSD model
model = ssd300_vgg16(pretrained=True)
model.eval()

def ssd_object_segmentation(frame, threshold=0.5):
    # Function to preprocess the frame
    transform = T.Compose([T.ToTensor()])
    frame_tensor = transform(frame).unsqueeze(0)

    with torch.no_grad():
        predictions = model(frame_tensor)

    labels = predictions[0]['labels'].cpu().numpy()
    scores = predictions[0]['scores'].cpu().numpy()
    boxes = predictions[0]['boxes'].cpu().numpy()

    for i in range(len(boxes)):
        if scores[i] > threshold:
            xmin, ymin, xmax, ymax = boxes[i].astype('int')
            class_name = COCO_NAMES[labels[i] - 1]

            # Extract the detected object from the frame
            object_segment = frame[ymin:ymax, xmin:xmax]

            # Convert to grayscale and threshold to create a mask
            gray = cv2.cvtColor(object_segment, cv2.COLOR_BGR2GRAY)
            _, mask = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)

            # Find contours
            contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

            # Draw the contours on the original frame
            cv2.drawContours(frame[ymin:ymax, xmin:xmax], contours, -1, (0, 255, 0), thickness=cv2.FILLED)

            # Put label above the box
            label = f"{class_name}: {scores[i]:.2f}"
            cv2.putText(frame, label, (xmin, ymin - 10), FONT, 0.5, (255, 0, 0), 2, cv2.LINE_AA)

    return frame


# Capture video
cap = cv2.VideoCapture(VIDEO)  # replace with actual video file path

fourcc = cv2.VideoWriter_fourcc(*'mp4v')

# Get frame width and height
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
out = cv2.VideoWriter(OUTPUT_VIDEO_SSD_SEG, fourcc, 20.0, (frame_width, frame_height))

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("No frame...")
        break

    # Overlay segmentation masks
    processed_frame = ssd_object_segmentation(frame)

    # Write the processed frame to output
    out.write(processed_frame)

    # Display the frame
    cv2.imshow('Frame', processed_frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Release everything once finished
cap.release()
out.release()
cv2.destroyAllWindows()

4.評估

在本節中,我將評估并比較三種流行的物體檢測模型:YOLO(You Only Look Once)、Faster R-CNN(基于區域的卷積神經網絡)和SSD(單次多框檢測器)。我在CPU設備上工作,而不是CUDA。評估階段包括:

  • 每秒幀數(FPS):FPS衡量每個模型每秒處理的幀數。
  • 推理時間:推理時間表示每個模型檢測幀中物體所需的時間。
  • 模型大小:模型大小表示每個模型占用的磁盤空間。

(1) 性能差異討論

從評估結果中,我觀察到以下內容:

  • 速度:YOLO在FPS和推理時間方面優于Faster R-CNN和SSD。這表明它適用于實時應用。
  • 準確性:Faster R-CNN在準確性上往往優于YOLO和SSD,表明在物體檢測任務中具有更好的準確性。
  • 模型大小:YOLO的模型大小最小,這使得它在存儲容量有限的設備上具有優勢。

(2) 最佳表現方法

根據評估結果和定性分析,YOLO8v是視頻序列中物體檢測和分割的最佳SoA方法。其卓越的速度、緊湊的模型大小和強大的性能使其成為在實際應用中準確性和效率至關重要的理想選擇。

完整項目代碼和視頻:https://github.com/fatimagulomova/iu-projects/blob/main/DLBAIPCV01/MainProject.ipynb

責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2017-09-19 16:10:50

深度學習目標檢測模型

2024-09-23 09:10:00

R-CNN深度學習Python

2024-08-22 08:24:51

算法CNN深度學習

2017-06-10 16:48:03

神經網絡目標計數機器學習

2017-04-24 23:46:40

卷積神經網絡圖像R-CNN

2022-11-21 15:18:05

模型檢測

2024-05-28 08:17:54

2022-05-07 09:20:38

智能客服模塊方案

2011-09-05 12:43:23

Sencha Touc事件

2012-05-31 09:50:26

開源CMS

2016-09-13 14:05:24

Spark集群管理模式

2013-03-27 10:01:53

網絡應用檢測工具

2011-04-08 09:25:50

虛擬機

2021-03-07 10:17:40

RDMA網絡傳輸網絡協議

2016-09-30 01:10:12

R語言聚類方法

2016-06-12 09:32:43

R語言Hadoop數據處理

2019-04-15 13:52:18

微服務配置中心Apollo

2022-03-29 07:33:21

內網穿透工具

2022-06-20 08:50:16

TypeScript類型語法

2022-07-22 20:00:01

高可用路由
點贊
收藏

51CTO技術棧公眾號

国产精品久久无码一三区| 免费一级做a爰片久久毛片潮| 在线免费观看的av| 成人深夜福利app| 欧美在线视频一区| 五月婷婷六月香| 99a精品视频在线观看| 懂色av一区二区三区| 亚洲乱码一区二区三区三上悠亚| 国产成人精品亚洲精品色欲| 性色一区二区三区| 久久精品国产久精国产一老狼| 理论片大全免费理伦片| 欧美暴力调教| 亚洲国产精品久久一线不卡| 午夜免费电影一区在线观看| 女人18毛片一区二区三区| 日本亚洲天堂网| 久久人人爽国产| www.99re6| 亚洲精品中文字幕99999| 91麻豆精品国产91久久久更新时间 | 亚洲欧美自拍视频| 影视一区二区| 中文字幕精品久久久久| 天堂久久久久久| 久久在线观看| 欧美日韩成人综合在线一区二区| 国产精品50p| 久久电影网站| 怡红院av一区二区三区| 亚洲一区二区精品在线| 亚洲av片在线观看| 成人av在线一区二区| 91美女高潮出水| 依依成人在线视频| 视频一区在线视频| 91精品国产高清久久久久久91| 国产1区2区3区4区| 国产精品7m凸凹视频分类| 亚洲深夜福利视频| 日本xxxx裸体xxxx| 乱亲女h秽乱长久久久| 日韩精品在线一区| 日本网站在线看| 成人51免费| 欧美剧情电影在线观看完整版免费励志电影 | 国产精品小说在线| 免费观看日批视频| 久久福利影视| 日韩美女毛茸茸| 最近免费中文字幕大全免费版视频| 亚洲美女视频在线免费观看 | 免费在线观看h片| 国产精品成人av| 久久久999精品免费| 少妇高潮一区二区三区喷水| 99久久久久国产精品| 久久精品视频在线播放| 最新一区二区三区| 91精品国产自产拍在线观看蜜| 精品国产一区二区在线| 欧美性生给视频| 91成人影院| 久久99热精品| 国产精品7777777| 香蕉av777xxx色综合一区| 欧美在线视频一区| 亚洲精品国产精品国自产网站按摩| 日日夜夜免费精品视频| 国产精品一二三在线| 国产一区二区视频免费观看| 国产一区二区影院| 成人在线看片| 欧洲亚洲精品视频| 国产精品美女一区二区三区 | 亚洲天堂最新地址| 在线精品视频在线观看高清| 欧美日本中文字幕| 亚洲男人第一av| 日本系列欧美系列| 91成人在线看| 免费av在线电影| 国产精品区一区二区三区| 18视频在线观看娇喘| 色黄视频在线观看| 欧美日韩精品一区二区三区| 黑人性生活视频| 亚洲精品合集| 久久精品国产综合| 一级片中文字幕| 精品一区精品二区高清| 成人羞羞视频免费| av大片在线播放| 亚洲最大色网站| av无码精品一区二区三区| 91精品在线免费视频| 亚洲国产精品va在线看黑人| 91麻豆精品国产91久久综合| 欧美黄色精品| 国产精品九九九| 理论片中文字幕| 国产精品亲子伦对白| 国产毛片视频网站| 91麻豆精品国产91久久久更新资源速度超快 | 性亚洲最疯狂xxxx高清| 伊人久久亚洲综合| 99re8在线精品视频免费播放| 色一情一乱一伦一区二区三区| 日本在线观看大片免费视频| 欧美婷婷六月丁香综合色| 99久久久无码国产精品性波多| 欧美亚洲国产激情| 18性欧美xxxⅹ性满足| 99在线无码精品入口| 欧美国产日韩在线观看| 亚洲乱码中文字幕久久孕妇黑人| 成人日韩视频| 最近2019中文字幕大全第二页| 不卡的免费av| 国产精品主播直播| 亚洲精品永久www嫩草| 一根才成人网| 亚洲精品一区二区在线观看| 最新一区二区三区| 毛片av一区二区| 欧美系列一区| 中文在线免费视频| 亚洲国产另类 国产精品国产免费| 亚洲xxxx3d动漫| 久久精品72免费观看| 先锋影音日韩| 欧美极品videos大乳护士| 精品乱人伦小说| 欧美成人手机视频| 国产米奇在线777精品观看| 亚洲人一区二区| 巨胸喷奶水www久久久免费动漫| 日韩电影网在线| 国产亚洲精品成人| 成人小视频在线| 欧美高清中文字幕| theporn国产在线精品| 精品中文字幕视频| www三级免费| 亚洲综合清纯丝袜自拍| 四虎1515hh.com| 欧美1区3d| 91传媒视频在线观看| 天堂av资源在线观看| 日韩一区二区三区免费看| 免费看一级大片| 国产精品911| 白白操在线视频| 99re8这里有精品热视频免费| 久久6免费高清热精品| 亚洲精品综合网| 精品国产乱码久久久久久天美| 你懂得在线视频| 可以看av的网站久久看| 日韩精品不卡| 香蕉久久一区| 九九久久久久久久久激情| 亚洲精品一区二区三区区别| 午夜私人影院久久久久| 日韩网站在线播放| 青青青伊人色综合久久| 日本不卡一区二区三区四区| 一区二区三区视频免费视频观看网站| 欧美激情中文网| 天堂成人在线| 欧美亚洲综合在线| 色在线观看视频| 91在线一区二区| 浓精h攵女乱爱av| 欧美fxxxxxx另类| 九九九九九九精品| 亚洲爱爱视频| 欧美日韩国产va另类| 四虎电影院在线观看| 在线视频中文字幕一区二区| 亚洲欧美综合7777色婷婷| 国产成人av一区二区| 国产熟女高潮视频| 婷婷综合网站| 国产精品视频500部| 超薄肉色丝袜脚交一区二区| 久久影视电视剧免费网站| 图片区 小说区 区 亚洲五月| 在线看日韩精品电影| 九九视频免费看| 欧美激情一区在线观看| 男人的天堂免费| 日韩av电影免费观看高清完整版| 国产又粗又长又爽视频| 黑人操亚洲人| 国产乱码精品一区二区三区卡| 欧美123区| 97国产精品视频| 欧洲美女少妇精品| 亚洲精品suv精品一区二区| 亚洲天堂网在线观看视频| 精品日韩视频在线观看| 午夜精品一区二区三级视频| 91首页免费视频| 久久精品一卡二卡| 日韩av在线免费观看不卡| av片在线免费| 亚洲精品va| 三区精品视频| 性欧美lx╳lx╳| 99久热re在线精品996热视频| 草民电影神马电影一区二区| 97在线视频观看| 在线网址91| 最近2019年好看中文字幕视频| 少妇av一区二区| 日韩美女在线视频| 国产精品久久婷婷| 欧美日韩免费视频| 日本黄色一级视频| 午夜成人免费视频| 欧美日韩免费做爰视频| 国产精品国产三级国产aⅴ中文| 在线精品一区二区三区| 国产成人午夜精品5599| 亚洲天堂网2018| 老鸭窝一区二区久久精品| 日本三区在线观看| 亚洲一区二区成人| 精品国产一区三区| 在线日韩中文| 国产无限制自拍| 亚洲性感美女99在线| www污在线观看| 欧美女人交a| 久久国产精品免费观看| 婷婷另类小说| 国内精品国产三级国产99| 仙踪林久久久久久久999| 亚洲一二区在线| 日韩欧美1区| 亚洲精品一卡二卡三卡四卡| 欧美男同视频网| 青娱乐一区二区| 精品国精品国产自在久国产应用 | 国产精品国产三级国产在线观看| 亚洲国产精品日韩| 成人av国产| 在线国产99| 亚洲h色精品| 91黄色在线看| 亚洲日韩成人| 欧美黄网站在线观看| 日韩综合在线视频| 国产免费又粗又猛又爽| 久草中文综合在线| 日本黄色三级网站| 成人动漫一区二区在线| 好吊日免费视频| 国产无一区二区| 91狠狠综合久久久| 亚洲自拍偷拍图区| 国产成人无码精品| 色综合久久久久久久久久久| 亚洲视屏在线观看| 777久久久精品| 日本黄色大片视频| 亚洲免费福利视频| 欧美猛烈性xbxbxbxb| 九九综合九九综合| 国产在线天堂www网在线观看| 青草青草久热精品视频在线网站| 成人在线高清| 国产91视觉| 奇米狠狠一区二区三区| 综合网五月天| a91a精品视频在线观看| 91淫黄看大片| 国产成人午夜电影网| 新91视频在线观看| 亚洲图片你懂的| 欧美a∨亚洲欧美亚洲| 欧美精品第1页| 日韩一区二区三区不卡| 一区二区三区四区在线观看视频| av在线播放国产| 日本久久久久亚洲中字幕| 永久免费观看精品视频| 精品视频高清无人区区二区三区| 日韩av在线播放网址| 妺妺窝人体色777777| 秋霞午夜鲁丝一区二区老狼| 妖精视频一区二区| 国产精品青草综合久久久久99| 国产成人精品亚洲男人的天堂| 欧美性大战久久| 色欲av永久无码精品无码蜜桃| 精品国产一区av| 日韩精品影片| 国产伦精品一区二区三区高清版| 日韩欧美一区免费| 免费国产黄色网址| 国产一区二区三区久久久| 国产精品毛片一区二区| 亚洲一区精品在线| 97人妻人人澡人人爽人人精品 | 成人疯狂猛交xxx| 神马久久av| 日韩在线视频在线| 麻豆成人久久精品二区三区红 | 黄色片免费网址| 日韩免费av电影| 中文字幕日韩精品在线| 91精选在线| 国产精品欧美亚洲777777| 精品成人自拍视频| 国产成人免费高清视频| 日本成人超碰在线观看| 国产精品无码在线| 亚洲黄色小视频| 91福利免费视频| 夜夜嗨av一区二区三区四区 | 国色天香2019中文字幕在线观看| 国产亚洲人成a在线v网站| 久久青青草综合| 99成人免费视频| 国产伦精品一区二区三区88av| 亚洲欧美日韩一区二区| 亚洲无码精品在线播放| 在线成人免费网站| 神马电影网我不卡| 久久综合一区二区三区| 一区二区日韩免费看| 超碰caoprom| 午夜视频在线观看一区二区三区| 亚洲精品视频专区| 欧美日韩爱爱视频| 18国产精品| 日韩a级在线观看| 懂色av中文字幕一区二区三区| 丰满少妇高潮久久三区| 日韩视频一区二区在线观看| 菠萝蜜视频国产在线播放| 92国产精品视频| 中国成人一区| 久久久无码人妻精品无码| 亚洲一区二区四区蜜桃| 可以免费观看的毛片| 91精品国产91久久久| 任你弄精品视频免费观看| 男人操女人免费软件| 国产午夜亚洲精品羞羞网站| 亚洲精品毛片一区二区三区| 亚洲午夜性刺激影院| 国产原创一区| 男人的天堂视频在线| 成人一区在线观看| 91在线视频在线观看| 亚洲一级一级97网| 亚洲一区有码| 人妻av无码专区| 91丨porny丨在线| 中国女人真人一级毛片| 精品国偷自产在线| 亚洲超碰在线观看| 欧美日韩在线一| 国产精品嫩草影院av蜜臀| 国内毛片毛片毛片毛片| 97视频在线免费观看| 国产精品一区二区99| 香蕉视频色在线观看| 亚洲国产精品欧美一二99| 国产尤物视频在线| 91久久精品国产91久久性色| 亚洲天堂激情| 一级片视频免费看| 这里是久久伊人| 国产在线88av| 亚洲欧美日韩精品在线| 国产91高潮流白浆在线麻豆| 国产三级精品三级在线观看| 日韩中文视频免费在线观看| 成人午夜三级| 日日噜噜夜夜狠狠| 亚洲一区二区三区四区在线| 黄色电影免费在线看| 91在线播放视频| 久色成人在线| 久久久一区二区三区四区| 亚洲色图第三页| 婷婷综合国产| 91视频免费版污| 亚洲第一搞黄网站| av男人的天堂在线| 国产中文一区二区| 久久精品国产色蜜蜜麻豆| 国产精品自拍视频一区| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 波多野结衣毛片|