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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机视觉-自定义对象检测器

發(fā)布時間:2023/11/29 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机视觉-自定义对象检测器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、模板匹配

運行指令:python template_matching.py --source 3.jpg --template 2.jpg

import argparse import cv2ap = argparse.ArgumentParser() ap.add_argument("-s", "--source", required=True, help="Path to the source image") ap.add_argument("-t", "--template", required=True, help="Path to the template image") args = vars(ap.parse_args())source = cv2.imread(args["source"]) template = cv2.imread(args["template"]) (tempH, tempW) = template.shape[:2]result = cv2.matchTemplate(source, template, cv2.TM_CCOEFF) #參數(shù)1:源圖像 參數(shù)2:模板圖像 參數(shù)3:模板匹配方法 (minVal, maxVal, minLoc, (x, y)) = cv2.minMaxLoc(result) #獲取最佳匹配的(x,y)坐標 cv2.rectangle(source, (x, y), (x + tempW, y + tempH), (0, 255, 0), 2) #在源圖像上繪制邊框

?

?2、訓(xùn)練自己的物體探測器

作用:結(jié)合caltech101數(shù)據(jù)集,結(jié)合.mat文件,訓(xùn)練對象檢測器,生成SVM線性支持向量機

train_detector.py

運行指令:python train_detector.py --class stop_sign_images --annotations stop_sign_annotations \

--output output/stop_sign_detector.svm from __future__ import print_function from imutils import paths from scipy.io import loadmat from skimage import io import argparse import dlibap = argparse.ArgumentParser() ap.add_argument("-c", "--class", required=True,help="Path to the CALTECH-101 class images")#要訓(xùn)練一個對象檢測器的具體CALTECH-101(數(shù)據(jù)集)類的路徑 ap.add_argument("-a", "--annotations", required=True,help="Path to the CALTECH-101 class annotations")#指定我們正在訓(xùn)練的特定類的邊界框的路徑(caltech101數(shù)據(jù)集中對應(yīng)的.mat文件夾) ap.add_argument("-o", "--output", required=True,help="Path to the output detector")#輸出分類器的路徑 args = vars(ap.parse_args())print("[INFO] gathering images and bounding boxes...") options = dlib.simple_object_detector_training_options() images = [] boxes = []for imagePath in paths.list_images(args["class"]):#循環(huán)輸入需要被訓(xùn)練的圖像imageID = imagePath[imagePath.rfind("/") + 1:].split("_")[1]imageID = imageID.replace(".jpg", "")p = "{}/annotation_{}.mat".format(args["annotations"], imageID)annotations = loadmat(p)["box_coord"]#從路徑中提取圖像ID,然后使用圖像ID ,從磁盤加載相應(yīng)的 注釋(即邊界框) bb = [dlib.rectangle(left=long(x), top=long(y), right=long(w), bottom=long(h)) for (y, h, x, w) in annotations]#構(gòu) 矩形 對象來表示邊界框 boxes.append(bb)images.append(io.imread(imagePath))#更新邊界當(dāng)前圖像框和添加圖片到列表中,在DLIB庫將需要的兩個圖像和函數(shù)加載到訓(xùn)練分類器中

?test_detector.py

運行指令:python test_detector.py --detector output/stop_sign_detector.svm --testing stop_sign_testing

作用:測試自定義對象檢測器效果

from imutils import paths import argparse import dlib import cv2ap = argparse.ArgumentParser() ap.add_argument("-d", "--detector", required=True, help="Path to trained object detector")#訓(xùn)練出的SVM線性檢測器 ap.add_argument("-t", "--testing", required=True, help="Path to directory of testing images")#包含停止標志圖像進行測試的目錄的路徑 args = vars(ap.parse_args())detector = dlib.simple_object_detector(args["detector"])for testingPath in paths.list_images(args["testing"]):#循環(huán)測試需要測試的圖像image = cv2.imread(testingPath)boxes = detector(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))for b in boxes:(x, y, w, h) = (b.left(), b.top(), b.right(), b.bottom())cv2.rectangle(image, (x, y), (w, h), (0, 255, 0), 2)cv2.imshow("Image", image)cv2.waitKey(0)

?

3.1、圖像金字塔  

目錄:

作用:指圖像按一定比例縮放,并且返回。

知識點:關(guān)鍵字 yield 返回并不結(jié)束,理解為延遲返回結(jié)果

helper.py:

import imutils #自定義金字塔函數(shù) def pyramid(image, scale=1.5, minSize=(30, 30)): #參數(shù)1:源圖像 參數(shù)2:每次縮放比例 參數(shù)3:設(shè)置最小尺寸yield image #定義為金字塔原圖像while True:w = int(image.shape[1] / scale)image = imutils.resize(image, width=w) #設(shè)置長寬按比例縮放if image.shape[0] < minSize[1] or image.shape[1] < minSize[0]:#判斷縮放的圖片是否滿足需求breakyield image #定義滑動穿口函數(shù) def sliding_window(image, stepSize, windowSize):#參數(shù)1:要檢查的對象 參數(shù)2:每次跳過多少像素,參數(shù)3:每次窗口要檢查的大小   for y in xrange(0, image.shape[0], stepSize):     for x in xrange(0, image.shape[1], stepSize):       yield (x, y, image[y:y + windowSize[1], x:x + windowSize[0]])

test_pyramid.py

示例:python test_pyramid.py --image florida_trip.png --scale 1.5

#對金字塔函數(shù)的使用
from
pyimagesearch.object_detection.helpers import pyramid import argparse import cv2ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", required=True, help="path to the input image") ap.add_argument("-s", "--scale", type=float, default=1.5, help="scale factor size") #每次圖像縮小比例 args = vars(ap.parse_args())image = cv2.imread(args["image"])for (i, layer) in enumerate(pyramid(image, scale=args["scale"])):cv2.imshow("Layer {}".format(i + 1), layer)cv2.waitKey(0)

?3.2、滑動窗戶

test_sliding_window.py

作用:金字塔與滑動窗口的聯(lián)合的運用

運行指令:python test_sliding_window.py --image florida_trip.png --width 64 --height 64

from pyimagesearch.object_detection.helpers import sliding_window from pyimagesearch.object_detection.helpers import pyramid import argparse import time import cv2ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", required=True, help="path to the input image")#需要處理的圖像 ap.add_argument("-w", "--width", type=int, help="width of sliding window")#滑動窗口的寬度 ap.add_argument("-t", "--height", type=int, help="height of sliding window")#滑動窗口的高度 ap.add_argument("-s", "--scale", type=float, default=1.5, help="scale factor size")#圖像金字塔的調(diào)整大小因子 args = vars(ap.parse_args())image = cv2.imread(args["image"]) (winW, winH) = (args["width"], args["height"])for layer in pyramid(image, scale=args["scale"]):for (x, y, window) in sliding_window(layer, stepSize=32, windowSize=(winW, winH)):if window.shape[0] != winH or window.shape[1] != winW:continueclone = layer.copy()cv2.rectangle(clone, (x, y), (x + winW, y + winH), (0, 255, 0), 2)cv2.imshow("Window", clone)cv2.waitKey(1)time.sleep(0.025)

4.1構(gòu)建自定義檢測框架的6個步驟

哈爾級聯(lián)的問題(Viola-Jones探測器(2)):OpenCV中檢測到面孔/人物/對象/任何東西,將花費大量時間調(diào)整cv2.detectMultiScale參數(shù)。

Viola-Jones探測器不是我們唯一的物體檢測選擇。我們可以使用關(guān)鍵點對象檢測,局部不變描述符和一系列的視覺詞模型。

六步框架:

步驟1:從想要檢測的對象的訓(xùn)練數(shù)據(jù)中取樣p個正樣本,并從這些樣本中提取HOG描述符。將提取對象的邊界框(包括圖像的訓(xùn)練數(shù)據(jù)),然后在該ROI上計算HOG特征,HOG功能將作為正面例子。

步驟2:負面訓(xùn)練集不包含任何要檢測的對象,并從這些樣品中提取HOG描述為好。實踐中負面樣本遠遠大于正樣本

步驟3:在正負樣本上訓(xùn)練線性支持向量機。

步驟4:應(yīng)用硬陰極開采。對于負面訓(xùn)練集中的每個圖像和每個圖像的每個可能的比例(即圖像金字塔),應(yīng)用滑動窗口技術(shù)將窗口滑過圖像。減少我們最終檢測器中的假陽性數(shù)量。

步驟5:采取在硬陰極開采階段發(fā)現(xiàn)的假陽性樣本,以其置信度(即概率)進行排序,并使用這些陰性樣本重新訓(xùn)練分類器

步驟6:分類器現(xiàn)在已經(jīng)受過培訓(xùn),可以應(yīng)用于測試數(shù)據(jù)集。再次,就像在步驟4中,對于測試集中的每個圖像,并且對于圖像的每個比例,應(yīng)用滑動窗口技術(shù)。在每個窗口中,提取HOG描述符并應(yīng)用分類器。如果分類器以很大的概率檢測到對象,記錄窗口的邊界框。完成掃描圖像后,應(yīng)用非最大抑制來刪除冗余和重疊的邊界框。

擴展和其他方法:

在物體檢測中使用HOG+線性SVM方法簡單易懂。與使用的標準6步框架略有不同。

?

第一個變化是關(guān)于HOG滑動窗口和非最大抑制方法。代替從提取特征的二者的正和負數(shù)據(jù)集,所述方法DLIB優(yōu)化HOG滑動窗口使得上的錯誤的數(shù)目??的每個訓(xùn)練圖像。這意味著??整個??訓(xùn)練圖像都用于(1)提取正例,和(2)?從圖像的所有其他區(qū)域提取??負樣本。這完全減輕?了負面培訓(xùn)的需要和強烈的消極采礦的要求。這是Max-Margin Object?檢測方法如此之快的原因之一??。

?

其次,在實際的訓(xùn)練階段,dlib也考慮到非最大的壓制。我們通常只應(yīng)用NMS來獲得最終的邊界框,但在這種情況下,我們實際上可以在訓(xùn)練階段使用NMS。這有助于減少誤報??實質(zhì)上并再次減輕了硬負開采的需要。

?

最后,dlib使用非常精確的算法來找到分離兩個圖像類的最優(yōu)超平面。該方法比許多其他最先進的對象檢測器獲得更高的精度(具有較低的假陽性率)。

5、準備實驗和培訓(xùn)數(shù)據(jù)

框架的完整目錄結(jié)構(gòu):(pyimagesearch同級目錄還有conf目錄存放json文件,datasets目錄,存放數(shù)據(jù)集)

?

實驗配置:運用JSON配置文件

json配置文件優(yōu)勢:

1、不需要明確定義一個永無止盡的命令行參數(shù)列表,只需要提供的是我們配置文件的路徑。

2、配置文件允許將所有相關(guān)參數(shù)整合到一個?位置。

3、確保我們不會忘記為每個Python腳本使用哪些命令行選項。所有選項將在我們的配置文件中定義。

4、允許我們?yōu)槊總€要創(chuàng)建的對象檢測器配置一個配置文件??。這是一個巨大的優(yōu)勢,允許我們通過修改單個文件來定義對象檢測器??。

cars.json:

{######## DATASET PATHS#######"image_dataset": "datasets/caltech101/101_ObjectCategories/car_side",#我們的“正例”圖像的路徑,需要訓(xùn)練的基礎(chǔ)數(shù)據(jù)"image_annotations": "datasets/caltech101/Annotations/car_side",#包含與image_dataset中每個圖像相關(guān)聯(lián)的邊界框的目錄的路徑"image_distractions": "datasets/sceneclass13",#不包含我們想要檢測的對象的任何示例的“否定示例” }

explore_dims.py?

作用:在caltech101數(shù)據(jù)中提取.mat文件信息,遍歷所有圖片輪廓信息,同時獲取滑動活動窗口尺寸

涉及到知識點:1、處理caltech101數(shù)據(jù)集方法及提取.mat文件信息

2、用用golb.golb()函數(shù)遍歷文件夾中的文件方法

運行指令:python explore_dims.py --conf conf/cars.json

from __future__ import print_function from pyimagesearch.utils import Conf from scipy import io import numpy as np import argparse import globap = argparse.ArgumentParser() ap.add_argument("-c", "--conf", required=True, help="path to the configuration file") args = vars(ap.parse_args())conf = Conf(args["conf"])#加載配置文件 widths = []#初始化檢測對象的寬度 heights = []#初始化檢測對象的高度for p in glob.glob(conf["image_annotations"] + "/*.mat"):#循環(huán)檢測對象的注釋文件(y, h, x, w) = io.loadmat(p)["box_coord"][0]widths.append(w - x)heights.append(h - y)#加載每個檢測對象的注釋文件相關(guān)聯(lián)的邊界框,并更新相應(yīng)的寬度和高度列表。#計算平均寬度和高度 (avgWidth, avgHeight) = (np.mean(widths), np.mean(heights)) print("[INFO] avg. width: {:.2f}".format(avgWidth)) print("[INFO] avg. height: {:.2f}".format(avgHeight)) print("[INFO] aspect ratio: {:.2f}".format(avgWidth / avgHeight))

conf.py:解析命令行參數(shù)

作用:解析car.json文件的類
python內(nèi)置函數(shù)__getitem__的作用:

在類中定義了__getitem__()方法,那么他的實例對象(假設(shè)為P)就可以這樣P[key]取值。當(dāng)實例對象做P[key]運算時,就會調(diào)用類中的__getitem__()方法

import commentjson as jsonclass Conf:def __init__(self, confPath):conf = json.loads(open(confPath).read())self.__dict__.update(conf)def __getitem__(self, k):return self.__dict__.get(k, None)

?6、構(gòu)建HOG描述符

cars.json:

{######## DATASET PATHS#######"image_dataset": "datasets/caltech101/101_ObjectCategories/car_side","image_annotations": "datasets/caltech101/Annotations/car_side","image_distractions": "datasets/sceneclass13",######## FEATURE EXTRACTION#######"features_path": "output/cars/car_features.hdf5","percent_gt_images": 0.5,"offset": 5,"use_flip": true,"num_distraction_images": 500,"num_distractions_per_image": 10,######## HISTOGRAM OF ORIENTED GRADIENTS DESCRIPTOR 使用的方向梯度直方圖#######"orientations": 9,"pixels_per_cell": [4, 4], #能被滑動窗口尺寸整除"cells_per_block": [2, 2],"normalize": true,######## OBJECT DETECTOR 定義滑動窗口大小#######"window_step": 4,"overlap_thresh": 0.3,"pyramid_scale": 1.5,"window_dim": [96, 32],"min_probability": 0.7 }

?dataset.py

作用:定義h5py數(shù)據(jù)庫運用的方法

涉及到知識點:1、對h5py數(shù)據(jù)庫的運用

疑問:create_dataset()函數(shù)參數(shù)作用:

參數(shù):數(shù)據(jù)庫的名字,參數(shù)2:數(shù)據(jù)庫維度,參數(shù)3:數(shù)據(jù)類型

擴展:h5py文件是存放兩類對象的容器,數(shù)據(jù)集(dataset)和組(group),dataset類似數(shù)組類的數(shù)據(jù)集合,和numpy的數(shù)組差不多。group是像文件夾一樣的容器,它好比python中的字典,有鍵(key)和值(value)。group中可以存放dataset或者其他的group。”鍵”就是組成員的名稱。

import numpy as np import h5py#從磁盤上的數(shù)據(jù)集加載特征向量和標簽 def dump_dataset(data,labels,path,datasetName,writeMethod="w"):#參數(shù)1:要寫入HDF5數(shù)據(jù)集的特征向量列表。參數(shù)2:標簽,與每個特征向量相關(guān)聯(lián)的標簽列表。參數(shù)3:HDF5數(shù)據(jù)集在磁盤上的存儲位置。參數(shù)5:HDF5文件中數(shù)據(jù)集的名稱。參數(shù)5:HDF5數(shù)據(jù)集的寫入方法db = h5py.File(path, writeMethod)dataset = db.create_dataset(datasetName, (len(data), len(data[0]) + 1), dtype="float")dataset[0:len(data)] = np.c_[labels, data]db.close()def load_dataset(path, datasetName):#加載與datasetName相關(guān)聯(lián)的特征向量和標簽db = h5py.File(path, "r")(labels, data) = (db[datasetName][:, 0], db[datasetName][:, 1:])db.close()return (data, labels)

helpers.py:

?作用:返回每張圖片的ROI,(最小包圍矩陣)

import imutils import cv2def crop_ct101_bb(image, bb, padding=10, dstSize=(32, 32)):(y, h, x, w) = bb(x, y) = (max(x - padding, 0), max(y - padding, 0))roi = image[y:h + padding, x:w + padding]roi = cv2.resize(roi, dstSize, interpolation=cv2.INTER_AREA)return roi

extract_features.py:

作用:提取圖片的hog特征向量,為SVC數(shù)據(jù)分類提供數(shù)據(jù)

?涉及到知識點:1、運用imutils中的paths模塊遍歷文件

疑惑:1、 progressbar模塊的作用:

    創(chuàng)建一個進度條顯示對象

    widgets可選參數(shù)含義:

    'Progress: ' :設(shè)置進度條前顯示的文字

    Percentage() :顯示百分比

    Bar('#') : 設(shè)置進度條形狀

    ETA() : 顯示預(yù)計剩余時間

    Timer() :顯示已用時間?

2、HOG函數(shù)的詳解

https://blog.csdn.net/zhazhiqiang/article/details/20221143

https://baike.baidu.com/item/HOG/9738560?fr=aladdin

3、random.sample函數(shù)作用?

sample(seq, n) 從序列seq中選擇n個隨機且獨立的元素;

4、random.choice函數(shù)的作用?

choice(seq) 從序列seq中返回隨機的元素

random模塊拓展:

1 )、random() 返回0<=n<1之間的隨機實數(shù)n;

?2)、getrandbits(n) 以長整型形式返回n個隨機位;
3)、shuffle(seq[, random]) 原地指定seq序列;

5、sklearn.feature_extraction.image模塊中extract_patches_2d函數(shù)的作用?

6)提示信息:Default value of `block_norm`==`L1` is deprecated and will be changed to `L2-Hys` in v0.15? 比Py中特征少?

運行指令:python extract_features.py --conf conf/cars.json

# import the necessary packages from __future__ import print_function from sklearn.feature_extraction.image import extract_patches_2d from pyimagesearch.object_detection import helpers from pyimagesearch.descriptors import HOG from pyimagesearch.utils import dataset from pyimagesearch.utils import Conf from imutils import paths from scipy import io import numpy as np import progressbar import argparse import random import cv2ap = argparse.ArgumentParser() ap.add_argument("-c", "--conf", required=True, help="path to the configuration file") args = vars(ap.parse_args())conf = Conf(args["conf"])#加載配置文件#調(diào)用函數(shù)初始化HOG描述符 hog = HOG(orientations=conf["orientations"], pixelsPerCell=tuple(conf["pixels_per_cell"]),cellsPerBlock=tuple(conf["cells_per_block"]), normalize=conf["normalize"]) data = [] labels = []#隨機抽取車測試圖 trnPaths = list(paths.list_images(conf["image_dataset"])) trnPaths = random.sample(trnPaths, int(len(trnPaths) * conf["percent_gt_images"])) print("[INFO] describing training ROIs...")widgets = ["Extracting: ", progressbar.Percentage(), " ", progressbar.Bar(), " ", progressbar.ETA()] pbar = progressbar.ProgressBar(maxval=len(trnPaths), widgets=widgets).start() #訓(xùn)練每個圖像 for (i, trnPath) in enumerate(trnPaths):image = cv2.imread(trnPath)image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)imageID = trnPath[trnPath.rfind("_") + 1:].replace(".jpg", "")#提取文件名 p = "{}/annotation_{}.mat".format(conf["image_annotations"], imageID)bb = io.loadmat(p)["box_coord"][0]roi = helpers.crop_ct101_bb(image, bb, padding=conf["offset"], dstSize=tuple(conf["window_dim"]))#確定我們是否應(yīng)該使用ROI的水平翻轉(zhuǎn)作為額外的訓(xùn)練數(shù)據(jù)rois = (roi, cv2.flip(roi, 1)) if conf["use_flip"] else (roi,)#中提取HOG特征,并更新 數(shù)據(jù) 和 標簽 列表for roi in rois:features = hog.describe(roi)data.append(features)labels.append(1)pbar.update(i)dstPaths = list(paths.list_images(conf["image_distractions"])) pbar = progressbar.ProgressBar(maxval=conf["num_distraction_images"], widgets=widgets).start() print("[INFO] describing distraction ROIs...")#訓(xùn)練負圖像樣本 for i in np.arange(0, conf["num_distraction_images"]):image = cv2.imread(random.choice(dstPaths))image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)patches = extract_patches_2d(image, tuple(conf["window_dim"]),max_patches=conf["num_distractions_per_image"])for patch in patches:features = hog.describe(patch)data.append(features)labels.append(-1)pbar.update(i)pbar.finish() print("[INFO] dumping features and labels to file...") dataset.dump_dataset(data, labels, conf["features_path"], "features")

?7、初始訓(xùn)練階段

car.json:

{######## DATASET PATHS#######"image_dataset": "datasets/caltech101/101_ObjectCategories/car_side","image_annotations": "datasets/caltech101/Annotations/car_side","image_distractions": "datasets/sceneclass13",######## FEATURE EXTRACTION#######"features_path": "output/cars/car_features.hdf5","percent_gt_images": 0.5,"offset": 5,"use_flip": true,"num_distraction_images": 500,"num_distractions_per_image": 10,######## HISTOGRAM OF ORIENTED GRADIENTS DESCRIPTOR#######"orientations": 9,"pixels_per_cell": [4, 4],"cells_per_block": [2, 2],"normalize": true,######## OBJECT DETECTOR#######"window_step": 4,"overlap_thresh": 0.3,"pyramid_scale": 1.5,"window_dim": [96, 32],"min_probability": 0.7,######## LINEAR SVM#######"classifier_path": "output/cars/model.cpickle",#分類器被儲存的位置"C": 0.01, }

train_model.py

作用:對獲取的圖像hog特征向量,運用SVC線性分類處理

疑問:1、sklearn函數(shù)模塊詳解?

2、args["hard_negatives"]參數(shù)作用?

3、numpy.stack()函數(shù)作業(yè)用:

改變列表數(shù)據(jù)維度

參數(shù)1:列表數(shù)據(jù),參數(shù)2:設(shè)置列表維度

4、numpy.hstack()函數(shù)作用

水平(按列順序)把數(shù)組給堆疊起來,vstack()函數(shù)正好和它相反

參數(shù)tup可以是元組,列表,或者numpy數(shù)組,返回結(jié)果為numpy的數(shù)組。

?運行指令:python train_model.py --conf conf/cars.json

from __future__ import print_function from pyimagesearch.utils import dataset from pyimagesearch.utils import Conf from sklearn.svm import SVC import numpy as np import argparse import cPickleap = argparse.ArgumentParser() ap.add_argument("-c", "--conf", required=True,help="path to the configuration file") ap.add_argument("-n", "--hard-negatives", type=int, default=-1,help="flag indicating whether or not hard negatives should be used") args = vars(ap.parse_args())print("[INFO] loading dataset...") conf = Conf(args["conf"]) (data, labels) = dataset.load_dataset(conf["features_path"], "features")#抓取提取的特征向量和標簽if args["hard_negatives"] > 0:print("[INFO] loading hard negatives...")(hardData, hardLabels) = dataset.load_dataset(conf["features_path"], "hard_negatives")data = np.vstack([data, hardData])labels = np.hstack([labels, hardLabels])print("[INFO] training classifier...") model = SVC(kernel="linear", C=conf["C"], probability=True, random_state=42) model.fit(data, labels)print("[INFO] dumping classifier...") f = open(conf["classifier_path"], "w") f.write(cPickle.dumps(model))#將分類器轉(zhuǎn)儲成檔 f.close()

objectdetector.py:

作用:經(jīng)過滑動窗口和金字塔處理后的圖像,提取符合概率的輪廓列表。
疑惑:改變概率參數(shù),符合要求的輪廓數(shù)量沒有發(fā)生改變?
pyramid函數(shù)(3.1)、sliding_window函數(shù)(3.2)寫到helpers.py中 iimport helpersclass ObjectDetector:def __init__(self, model, desc):self.model = modelself.desc = descdef detect(self, image, winDim, winStep=4, pyramidScale=1.5, minProb=0.7):#image:需要檢測的圖像,winDim:滑動窗口尺寸大小boxes = []probs = []for layer in helpers.pyramid(image, scale=pyramidScale, minSize=winDim):#循環(huán)金子塔中的圖像scale = image.shape[0] / float(layer.shape[0])for (x, y, window) in helpers.sliding_window(layer, winStep, winDim):(winH, winW) = window.shape[:2]if winH == winDim[1] and winW == winDim[0]:features = self.desc.describe(window).reshape(1, -1)prob = self.model.predict_proba(features)[0][1]if prob > minProb:(startX, startY) = (int(scale * x), int(scale * y))endX = int(startX + (scale * winW))endY = int(startY + (scale * winH)) boxes.append((startX, startY, endX, endY))probs.append(prob)return (boxes, probs)

test_model_no_nms.py(與pyimagesearch同級目錄下)

作用:測試通過輪廓列表尋找到輪廓是否正確

疑問:

1、sklearn.svm模塊中SVC的詳解

參數(shù)解釋鏈接:https://blog.csdn.net/szlcw1/article/details/52336824

2、提示錯誤信息:Default value of `block_norm`==`L1` is deprecated and will be changed to `L2-Hys` in v0.15

運行指令:python test_model_no_nms.py --conf conf/cars.json--image datasets/caltech101/101_ObjectCategories/car_side/image_0004.jpg

from pyimagesearch.object_detection import ObjectDetector from pyimagesearch.descriptors import HOG from pyimagesearch.utils import Conf import imutils import argparse import cPickle import cv2ap = argparse.ArgumentParser() ap.add_argument("-c", "--conf", required=True, help="path to the configuration file") ap.add_argument("-i", "--image", required=True, help="path to the image to be classified") args = vars(ap.parse_args())conf = Conf(args["conf"])model = cPickle.loads(open(conf["classifier_path"]).read()) #SVC線性值 hog = HOG(orientations=conf["orientations"], pixelsPerCell=tuple(conf["pixels_per_cell"]),cellsPerBlock=tuple(conf["cells_per_block"]), normalize=conf["normalize"]) #hog特征向量值提取方法 od = ObjectDetector(model, hog)image = cv2.imread(args["image"]) image = imutils.resize(image, width=min(260, image.shape[1])) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)(boxes, probs) = od.detect(gray, conf["window_dim"], winStep=conf["window_step"],pyramidScale=conf["pyramid_scale"], minProb=conf["min_probability"])for (startX, startY, endX, endY) in boxes:cv2.rectangle(image, (startX, startY), (endX, endY), (0, 0, 255), 2)cv2.imshow("Image", image) cv2.waitKey(0)

問題1:修改感興趣概率,獲取的敏感區(qū)域一樣?

8、非最大抑制

作用:解決重疊邊界框,尋找到最佳匹配輪廓

nms.py(object_detection目錄下):

疑問:1、numpy模塊中argsort()函數(shù)的作用:

  獲取數(shù)組從小到的大索引值

2、numpy模塊中concatenate()函數(shù)作用:

  對數(shù)組進行拼接

3、while里面對idx的處理邏輯?語法規(guī)則?

講解示例:https://blog.csdn.net/scut_salmon/article/details/79318387

nms.py

import numpy as np def non_max_suppression(boxes, probs, overlapThresh):#參數(shù)1:邊界框列表,參數(shù)2:每個框相關(guān)的概率,參數(shù)3:重疊的閥值if len(boxes) == 0:#判斷邊界框列表是否為空return []if boxes.dtype.kind == "i":boxes = boxes.astype("float")#將邊界框數(shù)據(jù)由整型轉(zhuǎn)換成浮點型#獲取邊界框每個角的坐標pick = []x1 = boxes[:, 0]y1 = boxes[:, 1]x2 = boxes[:, 2]y2 = boxes[:, 3]#獲取邊界框的面積area = (x2 - x1 + 1) * (y2 - y1 + 1)idxs = np.argsort(probs)#獲取列表的長度,并將其保留在邊框列表中while len(idxs) > 0:last = len(idxs) - 1i = idxs[last]pick.append(i)#獲取邊最大坐標的界框和最小的坐標邊界寬xx1 = np.maximum(x1[i], x1[idxs[:last]])yy1 = np.maximum(y1[i], y1[idxs[:last]])xx2 = np.minimum(x2[i], x2[idxs[:last]])yy2 = np.minimum(y2[i], y2[idxs[:last]])w = np.maximum(0, xx2 - xx1 + 1)h = np.maximum(0, yy2 - yy1 + 1)# 計算重疊比例overlap = (w * h) / area[idxs[:last]]idxs = np.delete(idxs, np.concatenate(([last],np.where(overlap > overlapThresh)[0])))return boxes[pick].astype("int")

test_model.py(與pyimagesearch目錄同級):

作用:測試解決重疊輪廓的邊界效果

運行指令:python test_model.py --conf conf/cars.json--image datasets/caltech101/101_ObjectCategories/car_side/image_0004.jpg

from pyimagesearch.object_detection import non_max_suppression from pyimagesearch.object_detection import ObjectDetector from pyimagesearch.descriptors import HOG from pyimagesearch.utils import Conf import numpy as np import imutils import argparse import cPickle import cv2ap = argparse.ArgumentParser() ap.add_argument("-c", "--conf", required=True, help="path to the configuration file") ap.add_argument("-i", "--image", required=True, help="path to the image to be classified") args = vars(ap.parse_args())conf = Conf(args["conf"])model = cPickle.loads(open(conf["classifier_path"]).read()) hog = HOG(orientations=conf["orientations"], pixelsPerCell=tuple(conf["pixels_per_cell"]),cellsPerBlock=tuple(conf["cells_per_block"]), normalize=conf["normalize"]) od = ObjectDetector(model, hog)image = cv2.imread(args["image"]) image = imutils.resize(image, width=min(260, image.shape[1])) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)(boxes, probs) = od.detect(gray, conf["window_dim"], winStep=conf["window_step"],pyramidScale=conf["pyramid_scale"], minProb=conf["min_probability"]) pick = non_max_suppression(np.array(boxes), probs, conf["overlap_thresh"]) orig = image.copy()for (startX, startY, endX, endY) in boxes:cv2.rectangle(orig, (startX, startY), (endX, endY), (0, 0, 255), 2)for (startX, startY, endX, endY) in pick:cv2.rectangle(image, (startX, startY), (endX, endY), (0, 255, 0), 2)cv2.imshow("Original", orig) cv2.imshow("Image", image) cv2.waitKey(0)

?9、堅硬的負面特征采集

作用:訓(xùn)練與需要提取的特征完全不相關(guān)的特征,一般是物體的背面場景,所以一般應(yīng)用sceneclass13數(shù)據(jù)集,訓(xùn)練負面特征變量,減少誤判情況。將負面數(shù)據(jù)也寫入h5py數(shù)據(jù)庫中。

運行指令:python hard_negative_mine.py --conf conf/cars.json

hard_negative_mine.py

from __future__ import print_function from pyimagesearch.object_detection.objectdetector import ObjectDetector from pyimagesearch.descriptors.hog import HOG from pyimagesearch.utils import dataset from pyimagesearch.utils.conf import Conf from imutils import paths import numpy as np import progressbar import argparse import cPickle import random import cv2ap = argparse.ArgumentParser() ap.add_argument("-c", "--conf", required = True, help = "path to the configuration file") args = vars(ap.parse_args())conf =Conf(args["conf"]) data =[]model =cPickle.loads(open(conf["classifier_path"]).read()) hog =HOG(orientations = conf["orientations"], pixelsPerCell = tuple(conf["pixels_per_cell"]), cellsPerBlock = tuple(conf["cells_per_block"]), normalize = conf["normalize"])od = ObjectDetector(model, hog)dstPaths = list(paths.list_images(conf["image_distractions"])) dstPaths =random.sample(dstPaths, conf["hn_num_distraction_images"])widgets = ["Mining:", progressbar.Percentage(), " ", progressbar.Bar(), "", progressbar.ETA()] pbar = progressbar.ProgressBar(maxval = len(dstPaths), widgets = widgets).start() myindex = 0 for (i, imagePath) in enumerate(dstPaths):image = cv2.imread(imagePath)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)(boxes, probs) = od.detect(gray, conf["window_dim"], winStep = conf["hn_window_step"], pyramidScale = conf["hn_pyramid_scale"], minProb = conf["hn_min_probability"])for (prob, (startX, startY, endX, endY)) in zip(probs, boxes):roi = cv2.resize(gray[startY:endY, startX:endX], tuple(conf["window_dim"]), interpolation = cv2.INTER_AREA)features = hog.describe(roi)data.append(np.hstack([[prob], features]))pbar.update(i)pbar.finish() print("[INFO] sorting by probability...") data = np.array(data) data = data[data[:, 0].argsort()[::-1]]print("[INFO] dmping hard negatives to file...") dataset.dump_dataset(data[:, 1:], [-1] * len(data), conf["features_path"], "hard_negatives", writeMethod = "a")

10、重新訓(xùn)練對象檢測器

作用:將堅硬的負面特征加入到SVM中,減少虛假輪廓的出現(xiàn)

運行指令:python train_model.py --conf conf/cars.json --hard-negatives 1

train_model.py

from __future__ import print_function from pyimagesearch.utils import dataset from pyimagesearch.utils.conf import Conf from sklearn.svm import SVC import argparse import pickle import numpy as npap = argparse.ArgumentParser() ap.add_argument("-c", "--conf", required = True, help = "path to the configuration file") ap.add_argument("-n", "--hard-negatives", type = int, default = -1, help="flag indicating whether or not hard negatives should be used") args = vars(ap.parse_args())print("[INFO] loading dataset...") conf = Conf(args["conf"]) (data, labels) = dataset.load_dataset(conf["features_path"], "features")if args["hard_negatives"] > 0:print("[INFO] loading hard negatives...")(hardData,hardLabels) = dataset.load_dataset(conf["features_path"], "hard_negatives")data = np.vstack([data, hardData])labels = np.hstack([labels, hardLabels])print("[INFO] training classifier...") model = SVC(kernel = "linear", C = conf["C"], probability = True, random_state = 42) model.fit(data, labels)print("[INFO] dumping classifier...") f = open(conf["classifier_path"], "wb") f.write(pickle.dumps(model)) f.close()

?

11、imglab的運用

前期準備工作:生成xml文件,運用imglab生成器,選取特征輪廓。

步驟1:imglab -c 文件夾路徑 生成xml文件路徑? 步驟2:imglab xml文件? ? ? ? ? ? 手動框選特征區(qū)域

作用:將提取圖片的邊界框,并且將其特征運用svm分類。

運行指令:python?train_detector.py?--xml?face_detector/faces_annotations.xml?--detector?face_detector/detector.svm

from __future__ import print_function import argparse import dlibap = argparse.ArgumentParser() ap.add_argument("-x", "--xml", required = True, help = "path to input XML file") ap.add_argument("-d", "--detector", required = True, help = "path to output director") args = vars(ap.parse_args())print("[INFO] training detector....") options = dlib.simple_object_detector_training_options() options.C = 1.0 options.num_threads = 4 options.bei_verbose = True dlib.train_simple_object_detector(args["xml"], args["detector"], options)print("[INFO] training accuracy:{}".format(dlib.test_simple_object_detector(args["xml"], args["detector"])))detector = dlib.simple_object_detector(args["detector"]) win = dlib.image_window() win.set_image(detector) dlib.hit_enter_to_continue()

?

test_detector.py

作用:測試訓(xùn)練出來SVM線性向量

運行指令:python test_detector.py --detector face_detector/detector.svm--testing face_detector/testing

from imutils import paths import argparse import dlib import cv2ap = argparse.ArgumentParser() ap.add_argument("-d", "--detector", required = True, help = "Path to train object detector") ap.add_argument("-t", "--testing", required = True, help = "Path to directory of testing images") args = vars(ap.parse_args())detector = dlib.simple_object_detector(args["detector"])for testingPath in paths.list_images(args["testing"]):image = cv2.imread(testingPath)boxes = detector(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))for b in boxes:(x, y, w, h) = (b.left(), b.top(), b.right(), b.bottom())cv2.rectangle(image, (x, y), (w, h), (0, 255, 0), 2)

?

轉(zhuǎn)載于:https://www.cnblogs.com/w-x-me/p/7528427.html

總結(jié)

以上是生活随笔為你收集整理的计算机视觉-自定义对象检测器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

欧美午夜寂寞影院 | 狠狠色丁香婷婷综合久久片 | 天天爽天天做 | 精品国模一区二区 | 国产日韩精品一区二区三区 | 五月婷丁香网 | 香蕉视频啪啪 | 免费在线观看a v | 日韩a在线 | 最新免费av在线 | 免费观看性生交大片3 | 黄色大片日本 | 亚洲 欧洲 国产 日本 综合 | 亚州成人av在线 | 97狠狠干| 日韩精品不卡在线观看 | 午夜体验区 | a久久久久久 | 一区二区三区四区精品视频 | 国产色拍 | 久久久久久久网 | 久久av网址 | 久久久精品免费观看 | 中文字幕在线日本 | 在线a视频免费观看 | 日韩免费电影网站 | 国产精品久久久久久久久婷婷 | 久久久久成 | av在线播放亚洲 | 国产资源免费在线观看 | 亚洲精品视频中文字幕 | 久久午夜影视 | 久久综合免费视频影院 | 久久久国产影院 | 久草com| 97在线免费视频观看 | 中文字幕在线免费观看视频 | 91丨九色丨蝌蚪丨对白 | 人人爽人人爽 | 九九久久久 | 久草在线免费色站 | 99久久99久久精品免费 | 国产麻豆精品一区 | 狠狠插狠狠操 | 激情婷婷亚洲 | 亚洲激情婷婷 | 欧美色图30p| 在线观看午夜 | 国产精品va最新国产精品视频 | 成人av高清 | 中国一级片在线观看 | 日韩最新在线视频 | 中文字幕中文中文字幕 | 国产尤物在线 | av三级在线免费观看 | 五月天色综合 | 亚洲电影一区二区 | 久久久国产成人 | 国产99亚洲 | 久久免费的视频 | 亚洲精品av在线 | 亚洲日本va午夜在线电影 | 国产成人91 | 亚洲更新最快 | 亚洲在线精品视频 | 亚洲成人黄色在线观看 | 天天爽网站| 中文字幕欲求不满 | 激情黄色一级片 | 成人免费看视频 | 久久女同性恋中文字幕 | 国产一区成人 | 久久精品免费播放 | 久久精品伊人 | 国产一区在线免费 | 亚洲国产精品一区二区久久hs | 一区二区三区免费 | 欧美性天天 | 国产亚洲精品成人av久久ww | 外国av网| 精品国产区在线 | 成人av电影免费在线观看 | 成人av播放 | 日韩深夜在线观看 | 亚洲视频久久久 | 欧美一区二区在线 | 91福利区一区二区三区 | 99免费在线 | 久久精品毛片 | 国产精品久久久久久久久久 | 国产精品一区二区三区99 | 国产午夜剧场 | 欧美午夜a| 日韩av中文字幕在线免费观看 | 精品视频在线免费 | 91麻豆精品国产91久久久使用方法 | 欧美va天堂在线电影 | 久草视频在线播放 | 九九爱免费视频在线观看 | 亚洲四虎在线 | 国产精品国产三级国产aⅴ9色 | 精品一区二区免费视频 | 久久男人中文字幕资源站 | 在线视频1卡二卡三卡 | 91香蕉国产在线观看软件 | 91精品蜜桃 | 久久精品中文字幕免费mv | 国产免费亚洲高清 | 久久伦理电影网 | 国内精品一区二区 | 国产一卡在线 | 色婷婷啪啪免费在线电影观看 | 中文字幕视频一区二区 | 亚洲久草网 | 欧美精品久久久久久久亚洲调教 | 午夜久久网站 | 99热在线国产 | 亚洲国产成人精品在线 | 国产精品久久久久久久久免费 | 国产在线污 | 成人免费观看网站 | 日本 在线 视频 中文 有码 | 国产精品久久久久婷婷 | 国产91丝袜在线播放动漫 | 久久九九久久精品 | 国产麻豆视频免费观看 | 奇米影视777四色米奇影院 | 麻豆视频免费播放 | 在线看国产精品 | 香蕉影院在线播放 | 亚洲成人午夜在线 | 精品国产乱码 | 国内精品久久久 | 一本到在线 | 五月天综合 | 999电影免费在线观看2020 | 国产色拍拍拍拍在线精品 | 欧美成人免费在线 | 国产69精品久久99不卡的观看体验 | 能在线观看的日韩av | 在线高清av | 亚洲精品h | 国产亚洲婷婷免费 | 久久天天躁狠狠躁亚洲综合公司 | 国语对白少妇爽91 | 日本动漫做毛片一区二区 | 国产精品一区二区三区在线看 | 综合婷婷久久 | 国产精品久久久777 成人手机在线视频 | 国产视频每日更新 | 欧洲av在线 | 夜夜天天干 | 999日韩| 日韩视频免费在线观看 | 亚洲精品午夜一区人人爽 | 99中文字幕在线观看 | 亚洲激情在线视频 | 国产成人精品免高潮在线观看 | 色噜噜日韩精品一区二区三区视频 | 99热日本 | 中文字幕在线观看一区二区三区 | 国产精品大全 | 国产一区不卡在线 | 日韩在线观看三区 | 国产成人高清 | 超碰av在线| 久久久久国产精品视频 | 五月天激情综合网 | 国产在线理论片 | 欧美日韩性视频在线 | 在线观看成人国产 | 伊人五月综合 | 午夜黄色一级片 | 91精品国产麻豆 | 91免费视频网站在线观看 | 国产手机视频在线播放 | 日本中文字幕在线播放 | 免费福利视频网站 | 成人网色 | 国产涩图| 婷婷精品视频 | 亚洲综合情 | 免费日韩一区 | 久草视频在线资源站 | 狠狠狠色丁香婷婷综合激情 | 精品久久久国产 | 成年人免费在线播放 | 日韩特黄av | 亚洲第一伊人 | 国产中文字幕视频在线观看 | 77国产精品 | 国产成人精品一区二区三区福利 | 欧美一级看片 | www久久 | 色婷婷激情电影 | 国产 日韩 欧美 在线 | 成人中文字幕+乱码+中文字幕 | 国内精品在线观看视频 | 日韩一区在线免费观看 | 天天av天天 | 久久久久久久久久久久av | 久久免费视频一区 | 色婷婷中文 | 蜜臀av性久久久久av蜜臀妖精 | 亚洲永久在线 | 日韩a级黄色 | 久久久网 | 天天操天天干天天操天天干 | av免费在线观看1 | 国产在线一区二区 | 国产在线日韩 | 波多在线视频 | 在线午夜电影神马影院 | 97爱爱爱| 99久久99久国产黄毛片 | 国产一区二区在线观看免费 | av电影一区二区三区 | 久久国产精品色av免费看 | 亚洲1区 在线 | 天天爽天天爽天天爽 | 午夜免费福利视频 | 91黄视频在线观看 | 欧美综合色在线图区 | 在线免费视频a | 97在线免费 | 久久精品99国产国产 | www.婷婷com | 免费在线一区二区 | 狠狠插狠狠操 | 国产精品久久久久999 | 久久99精品国产一区二区三区 | 九九九九九精品 | 在线看v片| 又黄又刺激的视频 | 国产精品成人a免费观看 | 国产成人在线免费观看 | 国产韩国日本高清视频 | 天天操天天能 | 国产精品一区二区你懂的 | 特级黄色一级 | 国产69精品久久久久9999apgf | 日韩一三区 | 国内小视频在线观看 | 国产成人精品一区在线 | 久久综合久久综合九色 | 黄网站免费久久 | 久免费视频 | 国产亚洲激情视频在线 | 91cn国产在线 | 色99在线| 免费亚洲黄色 | 欧美在线久久 | 天天操天天怕 | 国产精品99久久久精品免费观看 | 欧美中文字幕久久 | 色婷婷九月| 色综合久久88色综合天天免费 | 久草在线中文视频 | 欧美在线free| 97成人精品 | 亚洲一级片在线观看 | 悠悠av资源片 | 91av免费看| 日韩av一卡二卡三卡 | 日本视频久久久 | 久久激五月天综合精品 | 欧美视频日韩视频 | 久久在线影院 | 综合婷婷久久 | 天天拍天天操 | 在线观看亚洲免费视频 | 国产韩国日本高清视频 | 天天操天天操天天操天天操 | 二区三区av | 伊人宗合网 | 美女黄网久久 | 国产69久久久欧美一级 | 日本乱码在线 | 亚洲精品中文在线 | 日韩成人邪恶影片 | 人成免费网站 | 亚洲免费av网站 | 日韩精品一区二区三区电影 | 免费91麻豆精品国产自产在线观看 | 中日韩在线视频 | 麻豆传媒视频在线免费观看 | 色香蕉在线| 久久人网 | 久久精品伊人 | 国产91aaa | 91精品国产91 | 国产高清在线精品 | www免费网站在线观看 | 免费久久99精品国产婷婷六月 | 最近日本字幕mv免费观看在线 | 91系列在线 | 欧美日韩国产在线精品 | 久久观看免费视频 | 国产日本亚洲高清 | 最近免费在线观看 | 色综合天天天天做夜夜夜夜做 | 国产精品久久久久久久久久新婚 | 成年人免费电影 | 国产精品美女免费 | 国产精品一区二区av影院萌芽 | 久久久伊人网 | 精品91在线 | 国产在线观看免 | 黄色片网站免费 | 欧美日韩国产一区二区三区在线观看 | 高潮久久久久久 | 久久精品美女 | 99久久超碰中文字幕伊人 | 五月婷婷六月丁香在线观看 | 91中文在线视频 | 麻豆国产网站入口 | 国产精品高清免费在线观看 | 成人观看 | 中文字幕刺激在线 | 日本成人中文字幕在线观看 | 黄色的视频网站 | 亚洲人成人在线 | 免费成人在线观看视频 | 国产高清不卡在线 | 国产一区网 | 国产免费资源 | 日韩久久久久久久久 | 亚洲精品欧美专区 | 日本中文字幕视频 | 国产精品99久久久久久小说 | 精品一二三四五区 | 日本一区二区不卡高清 | 久久国产电影院 | 亚洲国产精品成人va在线观看 | 91香蕉视频在线 | 最近免费中文字幕大全高清10 | 国产精品成久久久久 | 成人久久免费视频 | 色婷婷av在线 | 色福利网站 | 在线亚洲成人 | 欧美精品久久久久久久久久 | 超碰电影在线观看 | 日本三级香港三级人妇99 | 中文字幕麻豆 | 视频一区二区免费 | 国产精品久久久久久久久久久久午夜 | 欧美与欧洲交xxxx免费观看 | 激情导航 | 国产精品美女久久久久久2018 | av在线免费观看不卡 | 中文字幕亚洲国产 | 日本不卡视频 | 国产视频综合在线 | 亚洲精品一区二区18漫画 | 久久久精华网 | 亚洲欧美日韩一区二区三区在线观看 | av在线永久免费观看 | 97在线视 | a视频免费看 | 久久免费在线观看视频 | 久草香蕉在线视频 | 免费亚洲电影 | 99精品在线免费在线观看 | zzijzzij日本成熟少妇 | 色视频在线看 | 毛片在线播放网址 | 999久久久久久久久6666 | 亚洲国产精品成人女人久久 | 国产精品久久久久久久7电影 | 国产精品亚洲视频 | 91av精品 | 久久久久久久久久影院 | 免费看黄在线看 | 在线欧美最极品的av | 天天操天天怕 | 亚洲精品久久久久久久不卡四虎 | 久久一区二 | 日韩女同一区二区三区在线观看 | 欧美精品亚州精品 | 国产日韩精品一区二区三区在线 | 亚洲第一久久久 | 国内丰满少妇猛烈精品播 | 操久| 日本不卡123区 | 亚洲国产中文字幕在线观看 | 黄色一区三区 | 精品国产a| 免费观看一级特黄欧美大片 | 色视频网页 | 2018亚洲男人天堂 | 精品爱爱 | 精品欧美乱码久久久久久 | 国产精品毛片一区视频播不卡 | 夜夜躁狠狠躁日日躁视频黑人 | 在线视频你懂得 | 国产精品福利无圣光在线一区 | 免费在线色视频 | 国产一线二线三线性视频 | 欧美极品xxxxx | 草久热 | 美腿丝袜av | 91高清免费| 99日精品 | 最近免费中文视频 | 伊人五月天 | 亚洲第一区精品 | 午夜视频亚洲 | 夜夜夜夜夜夜操 | 香蕉久草 | 国产一级片免费播放 | 国产精品亚洲成人 | 狠狠躁夜夜a产精品视频 | 操久久免费视频 | 亚洲成av人片一区二区梦乃 | 国产黄色成人 | 色大片免费看 | 久久伦理电影网 | 日本中文一区二区 | 中文国产在线观看 | 日韩av一区二区在线影视 | 久久婷婷开心 | 婷婷久久婷婷 | 天天综合在线观看 | 狠狠搞,com | 国产高清中文字幕 | 六月丁香激情综合色啪小说 | 久久久久久久久久伊人 | 免费热情视频 | 三级毛片视频 | 精品欧美乱码久久久久久 | 97精品国产97久久久久久免费 | 国产成人在线一区 | 久久久免费精品视频 | 亚洲三级在线免费观看 | 99久久精品国产亚洲 | 国产中文在线字幕 | 成人动漫视频在线 | 草久电影 | 中文字幕国产精品一区二区 | 国产成人久久精品一区二区三区 | 国产视频中文字幕 | 99国产精品免费网站 | 国产成人精品一区二区三区免费 | 99视频在线免费看 | 日韩色在线 | 9999在线视频 | 99理论片 | 超碰在线免费97 | 中文av一区二区 | 亚洲一区二区三区毛片 | 成人免费亚洲 | 免费成人在线观看视频 | 精品久久久久久亚洲综合网站 | 人人插人人干 | 久久久免费电影 | 国产欧美最新羞羞视频在线观看 | 婷婷五综合 | 一区二区视频在线免费观看 | 亚洲免费在线观看视频 | 久久久久久久久久毛片 | 偷拍福利视频一区二区三区 | 五月婷婷黄色网 | 日韩国产精品一区 | 久久看毛片 | 国产精品九九九九九九 | 国产精品一区二区麻豆 | 国产亚洲精品久久久久久 | 免费影视大全推荐 | 亚洲综合五月天 | www.夜夜操 | 国产麻豆电影在线观看 | 欧美成年人在线视频 | 96av麻豆蜜桃一区二区 | 五月婷久久 | 99精品国产99久久久久久97 | 操操综合网 | 久久久福利视频 | 天无日天天操天天干 | 欧美日韩亚洲在线观看 | 久久毛片视频 | 国产91亚洲 | 亚洲精品国产免费 | 最近免费中文字幕mv在线视频3 | 最新超碰| 国产香蕉久久 | 精品国产中文字幕 | 国产看片免费 | 亚洲黄色小说网 | 高清在线观看av | 久久久人人人 | a资源在线 | 波多野结衣电影一区二区三区 | 色视频网站免费观看 | 中文字幕在线资源 | 亚洲免费公开视频 | 奇米影视8888 | 97超碰中文字幕 | 伊人永久 | 成人免费视频网 | 在线精品视频免费播放 | 毛片一级免费一级 | 久久精品99北条麻妃 | 黄色一集片 | 成人国产网址 | 日本在线视频一区二区三区 | 日韩在线观看第一页 | 精品一区二区视频 | 精品在线观看国产 | 日韩精品播放 | 欧美成人精品在线 | 亚洲香蕉在线观看 | 中文 一区二区 | 色视频网址 | 91成人精品一区在线播放 | 精品美女在线观看 | 中文字幕在线观看免费高清完整版 | 久久久久久久网站 | 天天天干天天射天天天操 | 欧美国产日韩一区 | 国产精品h在线观看 | 亚洲美女精品视频 | 精品欧美日韩 | 激情网在线视频 | 中文字幕在线观看第一页 | 日韩久久精品一区二区三区下载 | 国产99区 | 亚洲精品国产自产拍在线观看 | 色婷婷av一区 | 国产又粗又硬又爽视频 | 亚洲国产视频直播 | 丁香婷婷久久 | 永久免费精品视频网站 | 国产精品 中文字幕 亚洲 欧美 | 天天操天天色天天 | 色av男人的天堂免费在线 | 亚洲精品视频在线观看免费视频 | 欧美另类视频 | 成人在线免费观看视视频 | 手机版av在线 | 日韩婷婷 | 国产999精品视频 | 在线观看视频免费播放 | 成人午夜电影在线 | 亚洲最新精品 | 亚洲高清视频在线 | 在线v片免费观看视频 | 欧美日韩一区二区三区免费视频 | 热久久99这里有精品 | 国产老太婆免费交性大片 | 一区二区三区视频在线 | 久草网视频在线观看 | 国产又粗又硬又爽的视频 | 中文字幕精品一区二区精品 | 国产香蕉视频 | 夜夜嗨av色一区二区不卡 | 女人高潮一级片 | 91福利区一区二区三区 | 免费毛片一区二区三区久久久 | 亚洲精品资源在线 | 日韩av电影中文字幕在线观看 | 黄色动态图xx | 91九色视频| 伊人天堂网 | 欧美aa在线观看 | 日韩精品在线视频 | 一区二区电影在线观看 | 欧美精品色 | 免费在线播放黄色 | 四虎在线视频 | 麻豆传媒视频在线播放 | 国内小视频在线观看 | 香蕉久久国产 | 久久精品视频日本 | 国产精品美女www爽爽爽视频 | 久久久久国产精品免费网站 | 国产女v资源在线观看 | 久久综合久久伊人 | 少妇高潮流白浆在线观看 | 在线国产小视频 | 日韩一区二区三区在线观看 | 国产在线精品国自产拍影院 | 久久综合久色欧美综合狠狠 | 日韩欧美精品在线 | 国产亚洲成人网 | 午夜性盈盈 | 国产在线最新 | 久久99视频免费 | 91久久电影| 午夜黄色影院 | 欧美成人中文字幕 | 深爱五月网| 日批视频在线播放 | 最近久乱中文字幕 | 黄色在线观看www | 亚洲精品字幕在线观看 | 婷婷激情综合 | 一级淫片a | 国产无遮挡又黄又爽在线观看 | 亚洲精品在线二区 | 国产91在线观 | 国产亚洲精品中文字幕 | 就要干b | 在线观看免费av网 | 高清在线一区二区 | 蜜臀av免费一区二区三区 | 国产亚洲精品久久久久久电影 | 久久国产色 | 手机色在线 | 欧美精品v国产精品 | 日日操夜夜操狠狠操 | 伊人黄色网 | 国产精品久久久久久一二三四五 | 综合国产在线观看 | 精品亚洲欧美一区 | 久久免费毛片 | 99视频在线免费观看 | 国产精品久久久久aaaa | 色婷婷综合在线 | 成人在线超碰 | 欧美性色黄大片在线观看 | 久久五月天婷婷 | 亚洲国产一区av | 在线播放 日韩专区 | 欧美成人在线免费 | 综合网av | 久久激情小说 | 成人91在线| 综合色播 | 国产一区91| 日韩一级精品 | 91麻豆视频网站 | 黄色福利视频网站 | 99国产情侣在线播放 | 国产精品欧美久久久久三级 | av免费看网站 | 久久久99精品免费观看app | 97在线成人| 97色国产| 婷婷在线不卡 | 亚洲激情 欧美激情 | 五月婷婷在线视频观看 | 黄色免费网| 天天天天色射综合 | 日本动漫做毛片一区二区 | 色综合久久久网 | 六月丁香伊人 | 天天曰视频| 国产精品一区二区在线免费观看 | 国产精品久久久久影院日本 | 24小时日本在线www免费的 | 美女黄频| 亚洲欧洲日韩在线观看 | h视频在线看 | 九七人人干 | 亚洲精品视频免费看 | 日韩欧美高清免费 | 久久精品9 | 亚洲香蕉视频 | 国产最新福利 | 在线中文字幕一区二区 | 国产在线视频在线观看 | 玖玖999| 久久国产精品色av免费看 | 国产色黄网站 | 51久久夜色精品国产麻豆 | 亚洲黄色av网址 | 久草视频资源 | 亚洲欧洲国产日韩精品 | 日本精油按摩3 | 国产精品久久久久久久99 | 久草免费资源 | 激情综合五月天 | 久久亚洲综合国产精品99麻豆的功能介绍 | 黄色av一区二区三区 | 三级av中文字幕 | 九九色在线观看 | 成年人app网址 | 精品国产一区二区三区免费 | 国产99一区视频免费 | 成人免费在线电影 | 欧美有色 | 精品欧美小视频在线观看 | 香蕉视频在线网站 | 综合久久久久久久 | 午夜日b视频 | 国产精品久久久久久一区二区三区 | 丰满少妇在线观看资源站 | 欧美日韩精品免费观看视频 | av电影不卡在线 | 国产成人免费高清 | 91精品视频播放 | 2023亚洲精品国偷拍自产在线 | 韩日精品在线观看 | 久久久 激情 | 国产污视频在线观看 | 九九在线高清精品视频 | 超碰在线中文字幕 | 成人亚洲综合 | 久久高清国产视频 | 国产精品毛片久久久久久久 | 欧美巨大荫蒂茸毛毛人妖 | 去看片 | 美女性爽视频国产免费app | 黄色aaaaa | 亚洲黄色免费观看 | 国产精品2018| 字幕网资源站中文字幕 | 一区三区视频在线观看 | 黄色在线观看网站 | 中文字幕在线观看完整版电影 | 亚洲专区在线视频 | 欧美日韩视频在线 | 96亚洲精品久久久蜜桃 | 国产午夜在线 | 亚洲精品美女久久17c | 丝袜一区在线 | 91麻豆精品国产91久久久无限制版 | 久久欧美精品 | 精品人人爽 | 久久五月天色综合 | 91av免费观看 | 亚洲高清精品在线 | 久久久久福利视频 | 国产一区国产二区在线观看 | 免费观看黄 | 精品亚洲二区 | 在线观看视频免费大全 | 天天曰| 色综合久久88| 91传媒91久久久 | 色先锋资源网 | 国产日韩精品一区二区三区 | www.国产高清 | 天天曰天天曰 | 日本久久久久久久久久久 | 亚洲最新视频在线 | 在线亚州 | 91精品国产高清 | 亚洲一区久久 | 中文国产字幕 | 色婷婷激情电影 | 人人澡澡人人 | 免费av 在线 | 一区二区三区动漫 | 天天操天天干天天爱 | 欧美在线一级片 | www.亚洲精品 | 久久艹综合 | 国产精品一区二区三区99 | 久久久久久蜜av免费网站 | 五月亚洲综合 | 色停停五月天 | 99色视频| 欧美激情精品一区 | 久热电影| 911免费视频| 久久综合之合合综合久久 | 午夜视频不卡 | 久久综合久久综合久久 | www·22com天天操| 西西www4444大胆在线 | 国产精品一区专区欧美日韩 | 黄色的视频 | av不卡免费看 | 天天爱天天操天天爽 | 992tv人人草 黄色国产区 | 黄色片网站av | 六月丁香久久 | 亚洲国产精品一区二区久久,亚洲午夜 | 五月婷婷六月丁香 | 91av观看| 国产乱对白刺激视频不卡 | 182午夜在线观看 | 天天爽夜夜爽人人爽曰av | 国产黄色免费观看 | 91精品导航 | 色爱成人网 | 在线看欧美| 日韩视频中文字幕在线观看 | 成年人av在线播放 | 婷婷九月激情 | 91av在线免费看 | 不卡的av在线播放 | 天天干,天天射,天天操,天天摸 | 四虎在线影视 | 久久男人免费视频 | 亚洲性xxxx| 久久伦理网 | 国产精品网红福利 | 国产精品无av码在线观看 | 超碰在线成人 | 福利视频导航网址 | 91精品一区二区三区久久久久久 | 久热久草在线 | 日本高清免费中文字幕 | 国产色综合天天综合网 | 欧美电影在线观看 | 国产精品第52页 | av 在线观看 | 午夜视频在线瓜伦 | 天天操综| 99精品国产一区二区三区麻豆 | 182午夜在线观看 | 精品久久国产 | av资源在线观看 | 日韩在线不卡 | 91精品一区国产高清在线gif | 亚洲精选久久 | 日韩大片在线播放 | 手机看片国产日韩 | 欧美日韩高清一区二区 国产亚洲免费看 | 一区二区三区在线观看 | 国产综合视频在线观看 | 国产精品每日更新 | 精品麻豆入口免费 | 中文字幕一区二区三 | 国产精品综合在线观看 | 日韩视频www | 91av中文字幕| 亚洲精品在线观看网站 | 日韩高清久久 | 国产不卡精品视频 | 成年一级片 | 久久久久 | 日韩一级黄色av | 天天干天天草天天爽 | 高清国产午夜精品久久久久久 | av成人免费观看 | 麻豆va一区二区三区久久浪 | 亚洲另类视频 | 久久视频国产精品免费视频在线 | 欧美日韩观看 | 欧美孕妇与黑人孕交 | 97视频免费观看2区 亚洲视屏 | 国产精品欧美久久久久无广告 | 岛国精品一区二区 | 色播五月激情综合网 | 97在线视频免费播放 | 亚洲精品999 | 国内精品亚洲 | 国内精品亚洲 | 亚洲电影免费 | 天堂va在线观看 | 又黄又爽又色无遮挡免费 | 欧美精品久久久久久久久久白贞 | 在线免费黄 | 在线观看深夜福利 | 久久在线免费 | 福利视频区 | 91麻豆免费看 | 亚洲精品影视在线观看 | 91插插插网站 | 不卡电影免费在线播放一区 | 亚洲精品乱码久久久久 | 久久精品国产亚洲aⅴ | 国产高清无线码2021 | 麻豆免费视频 | 成人三级网站在线观看 | 国产精品免费久久久久影院仙踪林 | 亚洲伦理中文字幕 | 91视视频在线直接观看在线看网页在线看 | 久久欧美综合 | 免费亚洲精品 | 992tv又爽又黄的免费视频 | 日韩免费三级 | 日韩一区二区三区高清在线观看 | 国产精品视频免费在线观看 | 国产乱对白刺激视频不卡 | 天天拍天天操 | 久久久午夜影院 | 国产精品成人一区二区 | 国产一区二区在线免费观看 | 九九热精| 久久激情电影 | 国产亚洲视频在线 | 美女久久| 亚洲高清在线 | 91在线国内视频 | 天天操夜操视频 | 亚洲三级在线 | 亚洲毛片久久 | 五月天亚洲综合小说网 | 国产中文字幕在线播放 | 成人国产精品免费 | 天天色草| 九月婷婷人人澡人人添人人爽 | 久久国产精品精品国产色婷婷 | 超碰在线最新网址 | 午夜在线免费观看 | 婷婷激情五月 | 亚洲视频,欧洲视频 | 婷婷丁香在线视频 | 黄色午夜 | 午夜精品一区二区三区免费 | 超碰在线观看av | 在线免费91| 麻豆视频免费观看 | 日本 在线 视频 中文 有码 | 日本中文字幕在线电影 | 色天天综合久久久久综合片 | zzijzzij日本成熟少妇 | 成人aⅴ视频 | 精品久久国产精品 | 国产精品网红福利 | 黄色的视频 | 色综合久久综合 | 91完整版| 亚洲三级在线播放 | 亚洲国产精品va在线看黑人动漫 | 亚洲视频一区二区三区在线观看 | 亚洲国产精品视频 | 成年人免费av网站 | 中文字幕刺激在线 | 美女在线免费观看视频 | 三级黄色免费 | 色综合天天色 | 国产精品视频线看 | 中文字幕一区二区三 | 91夜夜夜 | 一级特黄aaa大片在线观看 | 国产老妇av | 51久久夜色精品国产麻豆 | 精品久久一区二区三区 | 安徽妇搡bbbb搡bbbb | 精品一区精品二区高清 | 久久久精品综合 | 久久久免费精品国产一区二区 | 亚洲国产黄色片 | 精品国产精品久久 | 在线观看av网 | 丁香网五月天 | 国产福利av | 热精品 | 国产色视频网站 | 久久黄页 | 在线视频91 | 在线观看视频99 | 国产精品第一 | 国产福利一区二区三区视频 | 五月天婷亚洲天综合网鲁鲁鲁 | 久久99精品国产 | 黄色三级久久 | 国内一级片在线观看 | 91少妇精拍在线播放 | 精品久久久精品 | 在线一级片| 天天摸天天舔天天操 | 九九视频免费在线观看 | 免费看日韩片 | 久久99国产视频 | 六月丁香在线视频 | 精品亚洲午夜久久久久91 | 久久久www成人免费精品 | 免费亚洲片| 最近的中文字幕大全免费版 | 97视频在线免费播放 | 在线观看成人小视频 | 国产综合小视频 | 97视频在线观看播放 | 婷婷色视频 | 97在线资源 | 国产精品一区二区三区四区在线观看 | 麻豆av电影 | 天天摸天天舔天天操 | 亚洲夜夜综合 | 免费又黄又爽视频 | 久久99亚洲精品久久 | 又黄又爽免费视频 | 免费黄在线看 | 国产视频在线一区二区 | 久久噜噜少妇网站 | 91在线免费看片 | 午夜精品久久久久久久99水蜜桃 | 国产裸体bbb视频 | 99久久综合狠狠综合久久 | 黄色av电影在线 | 天天干天天射天天爽 | 日韩中文字幕a | 成年人黄色免费网站 | 久艹视频免费观看 | 亚洲观看黄色网 | 99视频精品 | 久久久三级视频 | 国产精品久久久久毛片大屁完整版 | 最近中文字幕国语免费高清6 | 婷婷激情在线观看 | 天天搞天天 | 色资源网免费观看视频 | 久久成人一区二区 | 午夜手机电影 | 人人干网 | 精品国内自产拍在线观看视频 | 欧美一区日韩一区 | 亚洲另类视频在线观看 | 国产录像在线观看 | 色姑娘综合天天 | 国产精品久久久久国产精品日日 |