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

視頻分析:圖表可視化與YoloV10架構(gòu)的計數(shù)、速度和距離估算

開發(fā)
本文我將討論YoloV10以及我的視頻分析演示項目,該項目通過圖表可視化估算物體計數(shù)、速度和距離,以商業(yè)角度出發(fā)。

計算機視覺是一個跨學科的科學領(lǐng)域,涉及如何讓計算機從數(shù)字圖像或視頻中獲得高級理解。從工程的角度來看,它旨在理解和自動化人類視覺系統(tǒng)能夠完成的任務(wù)。現(xiàn)在,任務(wù)分類、物體檢測、分割和關(guān)鍵點檢測是主要的實時計算機視覺應用。那么,大家認為它是如何發(fā)展的呢?首先,我們簡要討論一下計算機視覺的主要問題。

看看上面的圖片后,您對與計算機視覺挑戰(zhàn)相關(guān)的所有關(guān)鍵術(shù)語有了清晰的理解。這是一個嚴重的問題,盡管它取決于問題的陳述。然而,這種困難通常是每個2D計算機視覺工程師都會遇到的。

六年前,我開始了我的圖像處理職業(yè)生涯,進而學習了計算機視覺,掌握了許多基礎(chǔ)知識,然后根據(jù)挑戰(zhàn)需求轉(zhuǎn)向基于深度學習的模型。例如,我會詳細探討和研究許多數(shù)學概念,如resnet和vgg19、unet、efficientnet等。然而,當我與許多學生談?wù)撛缙诘挠嬎銠C視覺時,他們都只提到“YOLO”。此外,大多數(shù)人不了解YOLO的后端操作。由于YOLO的廣泛流行以及與其他模型相比的極高準確性,這才是真正重要的。

每個人都希望有現(xiàn)成的解決方案——只需安裝軟件包并讓過程發(fā)生——而不必了解后端操作。解決方案就是YOLO(Ultralytics)。我將討論YoloV10以及我的視頻分析演示項目,該項目通過圖表可視化估算物體計數(shù)、速度和距離,以商業(yè)角度出發(fā)。

什么是YOLO?

基于CNN的物體檢測器主要用于推薦系統(tǒng)。YOLO(You Only Look Once)模型用于高性能的物體檢測。YOLO將圖像劃分為網(wǎng)格系統(tǒng),每個網(wǎng)格在其中檢測物體。它們可以用于基于數(shù)據(jù)流的實時物體檢測,并且需要很少的計算資源。

目前YoloV10已經(jīng)發(fā)布!YoloV10的主要特點是什么?

實時物體檢測旨在以最小的延遲準確預測圖像中的物體類別和位置。YOLO系列在性能和效率之間取得了平衡,但仍存在依賴NMS和架構(gòu)效率低下的問題。YoloV10通過引入無NMS訓練和專注于效率和準確性的模型設(shè)計策略解決了這些問題。

架構(gòu)

YOLOv10通過幾個創(chuàng)新改進了之前的YOLO模型:

  • Backbone:使用改進的CSPNet以更好的梯度流和減少計算冗余。
  • Neck:結(jié)合PAN層進行有效的多尺度特征融合,聚合不同尺度的特征。
  • One-to-Many Head:在訓練期間為每個物體生成多個預測,豐富了監(jiān)督信號并提高學習準確性。
  • One-to-one Head:在推理期間為每個物體輸出單一最佳預測,消除了對NMS的需求并減少了延遲。

主要特點:

  • 無NMS訓練:利用一致的雙重分配消除NMS需求,減少推理延遲。
  • 整體模型設(shè)計:優(yōu)化組件以兼顧效率和準確性,具有輕量級分類頭、空間通道解耦下采樣和排名引導塊設(shè)計。
  • 增強的模型能力:采用大核卷積和部分自注意模塊,在不顯著增加計算成本的情況下提高性能。

YOLOV10的特別之處

YOLOv10引入了一種突破性的方法進行實時物體檢測,消除了非最大抑制(NMS)的需求,并優(yōu)化了模型組件以獲得卓越的性能。通過利用一致的雙重分配和整體的效率-準確性驅(qū)動的模型設(shè)計,YOLOv10實現(xiàn)了最先進的準確性,并減少了計算開銷。其架構(gòu)包括增強的主干和頸部組件,以及創(chuàng)新的一對多和一對一頭。憑借針對不同應用需求的模型變體,YOLOv10在準確性和效率方面設(shè)定了新標準,超越了之前的YOLO版本和其他當代檢測器。例如,YOLOv10-S在COCO數(shù)據(jù)集上比RT-DETR-R18快1.8倍,具有相似的AP,而YOLOv10-B的延遲減少了46%,參數(shù)減少了25%,與YOLOv9-C性能相同。

視頻分析:圖表可視化中的計數(shù)、速度、距離估算

在這個項目中,我開發(fā)了一個系統(tǒng),用戶可以即時獲得特定物體的計數(shù)、速度和距離估算,并通過圖形進行可視化。這種能力為企業(yè)提供了即時且可操作的洞察,帶來了巨大的好處。

我使用了Ultralytics的模型,特別是YOLOv8s和YOLOv8n,以其高準確性、效率和低延遲的物體檢測而著稱。這些模型對于簡化終端分析非常重要,使整個過程更加順暢和有效。

開發(fā)體驗非常愉快,并展示了通過先進技術(shù)解決商業(yè)挑戰(zhàn)的巨大潛力。雖然YoloV8和YoloV10模型也能產(chǎn)生良好的結(jié)果,但YoloV10在準確性和延遲方面表現(xiàn)更好。


'''
Final code: Video Analytics Specific Object

Guidance

1. User Input: Specific object
2. Specific Object detection, Speed and distance estimation
3. Graph Analytics: Pie, Area, Multi-Class line

!pip install ultralytics

'''

#Helper function
def create_pie_chart(data):
    fig, ax = plt.subplots(figsize=(4, 3))  # Aspect ratio of 4:3
    ax.pie(data.values(), labels=data.keys(), autopct='%1.1f%%')
    ax.legend()
    ax.set_title("Total Percentage of Individual Class Perspective")
    plt.close(fig)
    return fig

def create_area_plot(class_counts_over_time):
    fig, ax = plt.subplots(figsize=(4, 3))  # Aspect ratio of 4:3
    sorted_keys = sorted(class_counts_over_time.keys())
    for cls in sorted_keys:
        ax.fill_between(range(len(class_counts_over_time[cls])), class_counts_over_time[cls], label=cls, alpha=0.6)
    ax.legend()
    ax.set_title("Distribution of Each Class Over Time")
    ax.set_xlabel("Frame Count")
    ax.set_ylabel("Count")
    plt.close(fig)
    return fig

def create_multiple_line_plot(speed_data, distance_data, frame_count):
    fig, ax = plt.subplots(figsize=(4, 3))  # Aspect ratio of 4:3
    for track_id in speed_data.keys():
        ax.plot(range(frame_count), speed_data[track_id], label=f"Speed {track_id}")
    for track_id in distance_data.keys():
        ax.plot(range(frame_count), distance_data[track_id], label=f"Distance {track_id}")
    ax.legend()
    ax.set_title("Speed and Distance Identification of Each Class")
    ax.set_xlabel("Frame Count")
    ax.set_ylabel("Value")
    plt.close(fig)
    return fig

def create_scatter_plot(data):
    fig, ax = plt.subplots(figsize=(4, 3))  # Aspect ratio of 4:3
    x = list(data.keys())
    y = list(data.values())
    ax.scatter(x, y)
    ax.set_title("Class Distribution Scatter Plot")
    ax.set_xlabel("Class")
    ax.set_ylabel("Count")
    plt.close(fig)
    return fig

def fig_to_img(fig):
    fig.canvas.draw()
    img = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8)
    img = img.reshape(fig.canvas.get_width_height()[::-1] + (3,))
    return img

def resize_and_place_image(base_image, overlay_image, position):
    overlay_image_resized = cv2.resize(overlay_image, (w // 3, h // 3))
    x, y = position
    base_image[y:y + overlay_image_resized.shape[0], x:x + overlay_image_resized.shape[1]] = overlay_image_resized
    return base_image

def draw_visualizations(frame, data, labels, speed_data, distance_data, class_counts_over_time, frame_count):
    vis_frame = np.zeros((h, w // 3, 3), dtype=np.uint8)

    # Create Pie Chart
    if data:
        pie_chart = create_pie_chart(data)
        pie_chart_img = fig_to_img(pie_chart)
        vis_frame = resize_and_place_image(vis_frame, pie_chart_img, (0, 0))

    # Create Area Plot
    if class_counts_over_time:
        area_plot = create_area_plot(class_counts_over_time)
        area_plot_img = fig_to_img(area_plot)
        vis_frame = resize_and_place_image(vis_frame, area_plot_img, (0, h // 3))

    # Create Multiple Line Plot
    if speed_data or distance_data:
        line_plot = create_multiple_line_plot(speed_data, distance_data, frame_count)
        line_plot_img = fig_to_img(line_plot)
        vis_frame = resize_and_place_image(vis_frame, line_plot_img, (0, 2 * (h // 3)))

    combined_frame = np.hstack((frame, vis_frame))
    return combined_frame

def pad_lists_to_length(data_dict, length, default_value=0):
    for key in data_dict.keys():
        if len(data_dict[key]) < length:
            data_dict[key] += [default_value] * (length - len(data_dict[key]))

'''
Main function:

Specific input based video analytics 
(object count, speed, distance estimation..)

'''

import cv2
import math
import numpy as np
import matplotlib.pyplot as plt
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator
from ultralytics.solutions import speed_estimation

# Initialize YOLO models
object_detection_model = YOLO("yolov8s.pt")
speed_estimation_model = YOLO("yolov8n.pt")
names = speed_estimation_model.model.names

# Open video file
cap = cv2.VideoCapture("/content/drive/MyDrive/yolo/race.mp4")
assert cap.isOpened(), "Error reading video file"

# Get video properties
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Initialize video writer
out = cv2.VideoWriter("Distribution_speed_distance_visual_scatter_unique1hor_car_overall.avi", cv2.VideoWriter_fourcc(*"MJPG"),15, (w + w // 3, h))

frame_count = 0
data = {}
labels = []
class_counts_over_time = {}
speed_over_time = {}
distance_over_time = {}

# Center point and pixel per meter for distance calculation
center_point = (0, h)
pixel_per_meter = 10

# Line points for speed estimation
line_pts = [(0, 360), (1280, 360)]

# Initialize speed-estimation object
speed_obj = speed_estimation.SpeedEstimator(names=names, reg_pts=line_pts, view_img=False)

# Colors for text and bounding box
txt_color, txt_background, bbox_clr = ((0, 0, 0), (255, 255, 255), (255, 0, 255))

print('Example input: horse:17, person: 0,car: 2, van: 8,bus: 5,tree: 62')
# Allow user to input desired classes
user_input = input("Enter desired classes with their IDs (format: 'class1:id1,class2:id2,...'): ")
# Example input: "person:0,car:2,horse:17"
desired_classes = {}
for item in user_input.split(','):
    cls, cls_id = item.split(':')
    desired_classes[cls.strip()] = int(cls_id.strip())

print("Desired classes:", desired_classes)

while cap.isOpened():
    success, frame = cap.read()
    if not success:
        break

    frame_count += 1

    # Object detection for speed estimation
    speed_tracks = speed_estimation_model.track(frame, persist=True, show=False)
    frame = speed_obj.estimate_speed(frame, speed_tracks)

    # Object detection for distance estimation
    annotator = Annotator(frame, line_width=2)
    results = object_detection_model.track(frame, persist=True)

    if results[0].boxes.id is not None:
        boxes = results[0].boxes.xyxy.cpu()
        track_ids = results[0].boxes.id.int().cpu().tolist()
        clss = results[0].boxes.cls.cpu().tolist()

        for box, track_id, cls in zip(boxes, track_ids, clss):
            cls_name = object_detection_model.names[int(cls)]
            if cls_name in desired_classes and desired_classes[cls_name] == cls:  # Filter desired classes and IDs
                if cls_name not in labels:
                    labels.append(cls_name)

                if cls_name in data:
                    data[cls_name] += 1
                else:
                    data[cls_name] = 1

                annotator.box_label(box, label=str(track_id), color=bbox_clr)
                annotator.visioneye(box, center_point)

                x1, y1 = int((box[0] + box[2]) // 2), int((box[1] + box[3]) // 2)  # Bounding box centroid

                distance = (math.sqrt((x1 - center_point[0]) ** 2 + (y1 - center_point[1]) ** 2)) / pixel_per_meter

                text_size, _ = cv2.getTextSize(f"Distance: {distance:.2f} m", cv2.FONT_HERSHEY_SIMPLEX, 1.2, 3)
                cv2.rectangle(frame, (x1, y1 - text_size[1] - 10), (x1 + text_size[0] + 10, y1), txt_background, -1)
                cv2.putText(frame, f"Distance: {distance:.2f} m", (x1, y1 - 5), cv2.FONT_HERSHEY_SIMPLEX, 1.2, txt_color, 3)

                if track_id not in distance_over_time:
                    distance_over_time[track_id] = [0] * (frame_count - 1)
                distance_over_time[track_id].append(distance)

                speed = speed_obj.speeds.get(track_id, 0) if hasattr(speed_obj, 'speeds') else 0
                if track_id not in speed_over_time:
                    speed_over_time[track_id] = [0] * (frame_count - 1)
                speed_over_time[track_id].append(speed)

                if cls_name not in class_counts_over_time:
                    class_counts_over_time[cls_name] = [0] * frame_count
                if len(class_counts_over_time[cls_name]) < frame_count:
                    class_counts_over_time[cls_name].extend([0] * (frame_count - len(class_counts_over_time[cls_name])))
                class_counts_over_time[cls_name][-1] += 1

    # Pad lists to current frame count to ensure equal lengths
    pad_lists_to_length(distance_over_time, frame_count)
    pad_lists_to_length(speed_over_time, frame_count)

    # Draw combined visualizations on the frame
    combined_frame = draw_visualizations(frame, data, labels, speed_over_time, distance_over_time, class_counts_over_time, frame_count)

    # Write the frame with visualizations
    out.write(combined_frame)

    # Clear counts for next frame
    data = {}

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

# Generate and overlay scatter plot on the final frame
final_frame = np.zeros((h, w, 3), dtype=np.uint8)
scatter_plot = create_scatter_plot(class_counts_over_time)
scatter_plot_img = fig_to_img(scatter_plot)
final_frame = resize_and_place_image(final_frame, scatter_plot_img, (0, 0))

# Save the final frame with the scatter plot
cv2.imwrite("final_frame_with_scatter_plot.png", final_frame)

cap.release()
out.release()
cv2.destroyAllWindows()

# Print overall analytics
total_counts = sum(sum(counts) for counts in class_counts_over_time.values())
print(f"Overall total count: {total_counts}")
for cls, counts in class_counts_over_time.items():
    print(f"Total count for {cls}: {sum(counts)}")

best_speed = max((max(speeds) for speeds in speed_over_time.values()), default=0)
print(f"Overall best speed: {best_speed} m/s")
best_distance = max((max(distances) for distances in distance_over_time.values()), default=0)
print(f"Overall best distance: {best_distance} meters")

輸出:

在我看來,這個模型對于識別物體非常出色,并且可以輕松地針對特定物體進行微調(diào)。即使對于那些不熟悉AI或深度學習的人來說,這個程序也非常容易使用且廣泛應用。一個經(jīng)常出現(xiàn)的重要問題是,為什么AI、深度學習和計算機視覺工程師熱衷于開發(fā)這樣的項目。原因是多方面的。這些項目為推動該領(lǐng)域的發(fā)展和解決現(xiàn)實問題提供了寶貴的機會。我已經(jīng)建議每個人盡快完成這項任務(wù)。該領(lǐng)域的增長路徑對于所有人都是相同的,但在物體識別和分割項目中仍需解決許多挑戰(zhàn)。

這些挑戰(zhàn)包括:

  • 光線:光線條件的變化會顯著影響物體檢測的準確性。
  • 環(huán)境:不同的背景和設(shè)置會使識別過程復雜化。
  • 問題定義:識別和解決正確的問題對于這些項目的成功至關(guān)重要。
  • 實地工作:在實際條件下的實施和測試是必不可少的,但管理起來可能很困難。

參考資料:

  • https://github.com/VK-Ant/Computervision_Exploration
  • https://docs.ultralytics.com/guides/analytics/
  • https://docs.ultralytics.com/models/yolov10/#holistic-efficiency-accuracy-driven-model-design
責任編輯:趙寧寧 來源: 小白玩轉(zhuǎn)Python
相關(guān)推薦

2024-12-03 15:25:27

2021-10-11 08:04:22

Python數(shù)據(jù)行程

2015-08-20 10:04:40

可視化

2020-03-01 14:01:22

Echarts數(shù)據(jù)可視化圖表

2023-10-24 20:38:15

數(shù)據(jù)分析機器學習

2023-06-11 16:12:14

數(shù)據(jù)可視化圖表類型

2023-08-01 16:01:59

可視化Seaborn

2021-04-09 10:42:03

數(shù)據(jù)可視化框架大數(shù)據(jù)

2022-06-29 08:28:58

數(shù)據(jù)可視化數(shù)據(jù)可視化平臺

2017-02-07 15:54:14

數(shù)據(jù)可視化數(shù)據(jù)分析

2022-05-30 08:37:34

可視化圖表項目開源

2017-05-23 09:07:48

可視化圖表視覺

2022-08-23 12:32:37

Python可視化圖表

2017-08-15 18:55:57

大數(shù)據(jù)數(shù)據(jù)可視化圖表

2023-10-12 08:02:36

2024-08-22 12:49:02

2024-10-14 17:43:05

2019-05-28 11:52:43

可視化圖表數(shù)據(jù)

2022-07-13 15:54:14

Matplotlib圖表

2023-12-25 15:51:07

探索性數(shù)據(jù)分析數(shù)據(jù)可視化
點贊
收藏

51CTO技術(shù)棧公眾號

wwwxx欧美| 魔女鞋交玉足榨精调教| 亚洲第一香蕉网| 伊人在线视频| 亚洲+变态+欧美+另类+精品| 黄色在线成人| 欧美人妇做爰xxxⅹ性高电影| 狠狠爱一区二区三区| 日本一级特级毛片视频| 一级黄色性视频| 国产三级三级在线观看| 国产精品嫩草影院在线看| 亚洲成人资源在线| 99久久精品免费看国产四区| www..com国产| 精品伊人久久久| 亚洲午夜电影在线观看| 97视频资源在线观看| 九九热视频在线免费观看| 电影天堂国产精品| 久久蜜臀中文字幕| 中文字幕亚洲在线观看| 精一区二区三区| 亚洲欧美在线x视频| 在线码字幕一区| 国产成人无码专区| 美女少妇全过程你懂的久久 | 亚洲电影一区二区三区| 欧美日韩在线一区二区三区| 日韩av一二三区| 6080成人| 欧美日韩综合一区| 一本一道久久a久久精品综合 | 欧美精品一区二区蜜桃| 欧美专区一区| 一区二区三区久久久| 91在线短视频| 911美女片黄在线观看游戏| 欧美疯狂party性派对| 欧美日韩黄视频| 亚洲中文字幕无码中文字| 三级黄视频在线观看| 免费日韩视频| 视频在线一区二区| 992kp免费看片| 青青在线视频| 91在线视频官网| 日韩美女毛茸茸| 免费黄色激情视频| 国产探花一区二区| 国产偷国产偷亚洲清高网站| 日本a√在线观看| 黄色成人在线观看| 不卡高清视频专区| 国产精品69av| 69av.com| 国产一区二区三区不卡视频网站| 日韩经典中文字幕| www.久久av.com| av电影院在线看| 中文字幕欧美国产| 粉嫩av一区二区三区免费观看 | 亚洲在线观看视频| 日韩欧美视频在线免费观看| 欧美色图麻豆| 亚洲男人天堂网站| 国产熟妇搡bbbb搡bbbb| 国模大尺度视频一区二区| 亚洲三级理论片| 精品国产一区二区三区麻豆小说| 亚洲精选一区二区三区| 日本女人一区二区三区| 久久久久一本一区二区青青蜜月| 1024手机在线观看你懂的| 成人在线超碰| 欧美日韩精品一二三区| 中文字幕在线视频精品| 欧美成人a交片免费看| 一区二区三区免费观看| 国产手机免费视频| 成人在线直播| 中文一区一区三区高中清不卡| 天天人人精品| 欧美婷婷久久五月精品三区| 日本成人在线视频网站| 91精品久久久久久久久久| av大片免费在线观看| 久久久久99| 国模精品视频一区二区| 啦啦啦免费高清视频在线观看| 亚洲在线久久| 亚洲香蕉av在线一区二区三区| 看全色黄大色黄女片18| 9999精品免费视频| 欧美日韩视频在线一区二区| 欧洲美女亚洲激情| 另类在线视频| 色吧影院999| 清纯粉嫩极品夜夜嗨av| 老鸭窝91久久精品色噜噜导演| 国产日本欧美视频| 少妇喷水在线观看| 成人高清免费观看| 天天人人精品| 久草在线中文最新视频| 婷婷综合久久一区二区三区| 日本大片免费看| www.久久久久.com| 日韩欧美一区二区三区久久| 亚洲熟妇av一区二区三区漫画| 国内在线免费视频| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲精品2区| 中文字幕亚洲图片| 日本一二三不卡视频| 影音先锋一区| 91av视频在线观看| 中文字幕在线字幕中文| 韩国成人精品a∨在线观看| 成人av色在线观看| 国产日本精品视频| 国产亚洲精品7777| 亚洲蜜桃在线| 黄色网在线播放| 日本久久电影网| 男人搞女人网站| 97久久亚洲| 伦理中文字幕亚洲| 中文字幕一区二区三区手机版| 日av在线不卡| 欧洲精品国产| 浪潮av一区| 欧美亚洲日本国产| 亚洲黄色片免费| 精品国产一区探花在线观看 | www.久久ai| 欧美四级电影在线观看| 中文幕无线码中文字蜜桃| 亚洲国产激情| 日韩美女中文字幕| 手机看片一区二区三区| 亚洲一区成人在线| 丰满人妻一区二区三区免费视频棣| 免费观看成人www动漫视频| 亚洲毛茸茸少妇高潮呻吟| 国产精品第72页| 久热re这里精品视频在线6| 日本中文字幕久久看| 天堂av中文字幕| 精品露脸国产偷人在视频| 免费看毛片的网站| jvid福利在线一区二区| 日本中文字幕久久看| 粉嫩av在线播放| 一区二区三区加勒比av| 伊人成人免费视频| 偷拍自拍一区| 茄子视频成人在线| 精品人妻一区二区三区蜜桃| 91年精品国产| 裸体裸乳免费看| 亚洲天堂免费电影| 91麻豆精品国产91久久久久久 | 972aa.com艺术欧美| 久色视频在线播放| 国产精品一区高清| 国产精品夜间视频香蕉| www.狠狠干| 亚洲一区在线观看网站| 超碰97在线资源站| 99热国内精品| 日本精品免费一区二区三区| 国产黄在线观看| 欧美日本不卡视频| 九九热精品免费视频| av亚洲精华国产精华| 天天干天天色天天爽| jizz性欧美23| 青青草原一区二区| 在线免费黄色| 日本韩国精品一区二区在线观看| 国产精成人品免费观看| 亚洲精品社区| 欧美自拍资源在线| 欧洲精品99毛片免费高清观看 | 青青草影院在线观看| ccyy激情综合| 国产精品美女主播| 色在线免费视频| 欧美日韩另类一区| 国产无码精品视频| 中文字幕精品综合| 性猛交╳xxx乱大交| 三级久久三级久久久| 精品一区二区三区国产| julia一区二区三区中文字幕| 国产视频精品免费播放| 亚洲影视一区二区| 国产精品情趣视频| www.日本xxxx| 在线视频亚洲专区| 91久久精品国产91久久| 黄色大片在线免费观看| 色综合久久久久综合| 久久亚洲AV成人无码国产野外| 蜜臀精品一区二区三区在线观看 | 色yeye免费人成网站在线观看| 欧美日韩一区二区三区视频| 欧美成人aaa片一区国产精品| 2017欧美狠狠色| 国产成人精品综合久久久久99 | 久久精品在线观看| 热99这里只有精品| 国内精品麻豆美女在线播放视频| 欧美激情手机在线视频| 亚洲国产剧情在线观看| 在线国产亚洲欧美| 黄色国产在线播放| 久久99久久精品| 国产精品免费观看久久| 嫩草影视亚洲| 国产精品成人观看视频免费| 久久麻豆视频| 欧美成人精品一区二区三区| 国产成人精品毛片| 亚洲国产成人91porn| 99热在线观看精品| 欧美激情一区二区三区蜜桃视频| 亚洲欧美自拍另类日韩| 一区二区国产在线| 亚洲欧洲一区二区| 国产精品密蕾丝视频下载| 久草精品电影| yiren22亚洲综合| 欧美一区第一页| 日本中文字幕在线观看| 亚洲天堂免费观看| 欧美精品少妇| 精品偷拍各种wc美女嘘嘘| 人妻无码中文字幕| 欧美性生活大片免费观看网址| 国产精品1234区| 亚洲一区免费观看| 国产一级淫片免费| 亚洲国产日韩在线一区模特| 久久久久亚洲av成人片| 久久久蜜桃精品| 国产精品jizz| 久久久久久一级片| 日韩在线免费观看av| 久久影音资源网| 熟女俱乐部一区二区视频在线| 2024国产精品视频| 国产传媒第一页| 久久99精品久久久久久动态图 | 自拍偷拍99| 五月开心六月丁香综合色啪| 在线视频精品一区| 欧美91精品| 欧美日韩中文国产一区发布| 国产一区二区三区网| 亚洲精品成人自拍| 亚洲激情中文| 日本a在线免费观看| 国产精品成人a在线观看| 中文字幕av日韩精品| 欧美精品不卡| 日本韩国欧美在线观看| 日韩精品欧美精品| 最新国产黄色网址| 国产69精品久久久久777| 一起操在线视频| 国产成人综合在线观看| 国产一级特黄a大片免费| 麻豆视频观看网址久久| 日本a级片免费观看| 日韩国产精品久久| 日本一二三区在线| www.久久精品| 国产123在线| 亚洲欧美日韩中文字幕一区二区三区| 亚洲综合网在线| 国产精品国产a级| 四虎永久免费在线观看| 中文字幕一区二区在线播放 | 一二三区不卡| 777精品久无码人妻蜜桃| 久久精品72免费观看| wwwxx日本| 国产精品少妇自拍| 久久午夜鲁丝片午夜精品| 在线视频你懂得一区二区三区| 国产女同91疯狂高潮互磨| 日韩精品中文字幕有码专区| 免费人成在线观看播放视频| 亚洲欧美另类中文字幕| 久草免费在线| 日本久久久久久久久| 欧美成年网站| 无遮挡亚洲一区| 99精品国产在热久久下载| 久草免费福利在线| 日韩黄色小视频| 国产伦精品一区三区精东| 国产精品护士白丝一区av| 日韩网红少妇无码视频香港| 欧美日韩大陆在线| 欧美美女色图| 久久久欧美精品| 国产精品日韩精品在线播放| 欧美二级三级| 激情视频一区| 色婷婷综合在线观看| 欧美激情一区二区三区不卡| www亚洲视频| 精品成人佐山爱一区二区| 好吊视频一二三区| 亚洲国产精品一区二区久| 色婷婷视频在线| 久久天天躁狠狠躁老女人| 亚洲第一会所001| 久99久在线| 亚洲精品日本| 91丨porny丨对白| 一区二区三区波多野结衣在线观看| 亚洲最大成人av| 国产一区二区三区毛片| 伊人久久视频| 国产欧美va欧美va香蕉在| 天海翼精品一区二区三区| 日韩精品综合在线| 福利一区福利二区| 欧美日韩人妻精品一区二区三区| 欧美日韩国产欧美日美国产精品| 黄色免费在线播放| 国产成人鲁鲁免费视频a| 蜜桃成人av| 日本久久久精品视频| 26uuu久久天堂性欧美| 精品成人久久久| 亚洲精品国精品久久99热| 超黄网站在线观看| 国产传媒一区二区三区| 亚洲国产一区二区三区高清| 在线免费观看av网| 亚洲人123区| 国产99999| 欧美激情精品在线| 电影天堂国产精品| 日韩三级电影| 精品福利电影| a天堂视频在线观看| 欧美日韩国产一中文字不卡| 在线免费观看高清视频| 亚洲性69xxxbbb| 制服诱惑亚洲| 亚洲国产午夜伦理片大全在线观看网站| 日韩中文字幕区一区有砖一区 | 91嫩草国产在线观看| 欧美aa国产视频| 国产伦精品一区二区三区88av| 亚洲不卡在线观看| 亚洲一级视频在线观看| 久久精品国产电影| av高清不卡| 视频在线精品一区| 狠狠狠色丁香婷婷综合久久五月| 日日噜噜夜夜狠狠久久波多野| 日韩欧美国产一区二区三区 | 亚洲视频1区2区| 亚洲成熟女性毛茸茸| 欧美专区日韩视频| 日韩在线精品| 男人操女人免费| 欧美激情中文不卡| 国产欧美久久久| 午夜精品国产精品大乳美女| www.久久爱.com| 国产精品视频网站在线观看| 久久综合资源网| 国产精品美女一区| 色琪琪综合男人的天堂aⅴ视频| 不卡的国产精品| jizzjizz国产精品喷水| 国产精品久久久久影院亚瑟| 精品国产无码AV| 国产激情999| 国产精品豆花视频| av男人的天堂av| 日韩精品一区在线| 电影在线观看一区二区| 欧美日韩精品一区| 黄色精品一二区| 国产一级片毛片| 一区二区三区无码高清视频| 日韩精品三区| 黄色一级大片免费| 高清成人免费视频| 波多野结衣在线观看视频| 亚洲午夜色婷婷在线|