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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

SuperPoint:深度学习特征点+描述子

發布時間:2023/12/29 pytorch 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SuperPoint:深度学习特征点+描述子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【原文鏈接】:https://www.vincentqin.tech/posts/superpoint/

本文出自近幾年備受矚目的創業公司MagicLeap,發表在CVPR 2018,一作Daniel DeTone,[paper][slides][code]

這篇文章設計了一種自監督網絡框架,能夠同時提取特征點的位置以及描述子。相比于patch-based方法,本文提出的算法能夠在原始圖像提取到像素級精度的特征點的位置及其描述子。
本文提出了一種單應性適應(Homographic Adaptation)的策略以增強特征點的復檢率以及跨域的實用性(這里跨域指的是synthetic-to-real的能力,網絡模型在虛擬數據集上訓練完成,同樣也可以在真實場景下表現優異的能力)。

介紹

諸多應用(諸如SLAM/SfM/相機標定/立體匹配)的首要一步就是特征點提取,這里的特征點指的是能夠在不同光照&不同視角下都能夠穩定且可重復檢測的2D圖像點位置

基于CNN的算法幾乎在以圖像作為輸入的所有領域表現出相比于人類特征工程更加優秀的表達能力。目前已經有一些工作做類似的任務,例如人體位姿估計,目標檢測以及室內布局估計等。這些算法以通常以大量的人工標注作為GT,這些精心設計的網絡用來訓練以得到人體上的角點,例如嘴唇的邊緣點亦或人體的關節點,但是這里的問題是這里的點實際是ill-defined(我的理解是,這些點有可能是特征點,但僅僅是一個大概的位置,是特征點的子集,并沒有真正的把特征點的概念定義清楚)。

本文采用了非人工監督的方法提取真實場景的特征點。本文設計了一個由特征點檢測器監督的具有偽真值數據集,而非是大量的人工標記。為了得到偽真值,本文首先在大量的虛擬數據集上訓練了一個全卷積網絡(FCNN),這些虛擬數據集由一些基本圖形組成,例如有線段、三角形、矩形和立方體等,這些基本圖形具有沒有爭議的特征點位置,文中稱這些特征點為MagicPoint,這個pre-trained的檢測器就是MagicPoint檢測器。這些MagicPoint在虛擬場景的中檢測特征點的性能明顯優于傳統方式,但是在真實的復雜場景中表現不佳,此時作者提出了一種多尺度多變換的方法Homographic Adaptation。對于輸入圖像而言,Homographic Adaptation通過對圖像進行多次不同的尺度/角度變換來幫助網絡能夠在不同視角不同尺度觀測到特征點。
綜上:SuperPoint = MagicPoint+Homographic Adaptation

算法優劣對比

  • 基于圖像塊的算法導致特征點位置精度不夠準確;
  • 特征點與描述子分開進行訓練導致運算資源的浪費,網絡不夠精簡,實時性不足;或者僅僅訓練特征點或者描述子的一種,不能用同一個網絡進行聯合訓練;

網絡結構

上圖可見特征點檢測器以及描述子網絡共享一個單一的前向encoder,只是在decoder時采用了不同的結構,根據任務的不同學習不同的網絡參數。這也是本框架與其他網絡的不同之處:其他網絡采用的是先訓練好特征點檢測網絡,然后再去進行對特征點描述網絡進行訓練。
網絡共分成以下4個主要部分,在此進行詳述:

1. Shared Encoder 共享的編碼網絡

從上圖可以看到,整體而言,本質上有兩個網絡,只是前半部分共享了一部分而已。本文利用了VGG-style的encoder以用于降低圖像尺寸,encoder包括卷積層,max-pooling層,以及非線性激活層。通過3個max-pooling層將圖像的尺寸變成Hc=H/8H_c = H/8Hc?=H/8Hc=H/8H_c = H/8Hc?=H/8,經過encoder之后,圖像由I∈RH×WI \in \mathcal{R}^{H \times W}IRH×W變為張量B∈RHc×Wc×F\mathcal{B} \in \mathbb{R}^{H_c \times W_c \times F}BRHc?×Wc?×F

2. Interest Point Decoder

這里介紹的是特征點的解碼端。每個像素的經過該解碼器的輸出是該像素是特征點的概率(probability of “point-ness”)。
通常而言,我們可以通過反卷積得到上采樣的圖像,但是這種操作會導致計算量的驟增以及會引入一種“checkerboard artifacts”。因此本文設計了一種帶有“特定解碼器”(這種解碼器沒有參數)的特征點檢測頭以減小模型計算量(子像素卷積)。
例如:輸入張量的維度是RHc×Wc×65\mathbb{R}^{H_c \times W_c \times 65}RHc?×Wc?×65,輸出維度RH×W\mathbb{R}^{H \times W}RH×W,即圖像的尺寸。這里的65表示原圖8×88 \times 88×8的局部區域,加上一個非特征點dustbin。通過在channel維度上做softmax,非特征點dustbin會被刪除,同時會做一步圖像的reshape:RHc×Wc×64?RH×W\mathbb{R}^{H_c \times W_c \times 64} \Rightarrow \mathbb{R}^{H \times W}RHc?×Wc?×64?RH×W 。(這就是**子像素卷積**的意思,俗稱像素洗牌)

拋出特征點解碼端部分代碼:

# Compute the dense keypoint scores cPa = self.relu(self.convPa(x)) scores = self.convPb(cPa) # DIM: N x 65 x H/8 x W/8 scores = torch.nn.functional.softmax(scores, 1)[:, :-1] # DIM: N x 64 x H/8 x W/8 b, _, h, w = scores.shape scores = scores.permute(0, 2, 3, 1).reshape(b, h, w, 8, 8) # DIM: N x H/8 x W/8 x 8 x 8 scores = scores.permute(0, 1, 3, 2, 4).reshape(b, h*8, w*8) # DIM: N x H x W

這個過程看似比較繁瑣,但是這其實就是一個由depth to space的過程,以N = 1為例,上述過程如下圖所示:

上圖中所示的3個藍色小塊的就是對應的一個cell經過depth to space后得到的,易知其尺寸是8×88 \times 88×8

注意 :這里解釋一下為何此作者設置選擇增加一個dustbin通道,以及為何先進行softmax再進行slice操作,先進行slice再進行softmax是否可行?(scores = torch.nn.functional.softmax(scores, 1)[:, :-1])

之所以要設置65個通道,這是因為算法要應對不存在特征點的情況。注意到之后的一步中使用了softmax,也就是說沿著通道維度把各個數值通過運算后加和為1。如果沒有Dustbin通道,這里就會產生一個問題:若該cell處沒有特征點,此時經過softmax后,每個通道上的響應就會出現受到噪聲干擾造成異常隨機,在隨后的特征點選擇一步中會將非特征點判定為特征,這個過程由下圖左圖所示。在添加Dustbin之后,在沒有特征的情況下,只有在Dustbin通道的響應值很大,在后續的特征點判斷階段,此時該圖像塊的響應都很小,會成功判定為無特征點,這個過程由下圖右圖所示。

上述過程中得到的scores就是圖像上特征點的概率(或者叫做特征響應,后文中響應值即表示概率值),概率越大,該點越有可能是特征點。之后作者進行了一步nms,即非極大值抑制(simple_nms的實現見文末),隨后選擇響應值較大的位置作為特征點。

scores = simple_nms(scores, self.config['nms_radius']) keypoints = [ torch.nonzero(s > self.config['keypoint_threshold']) for s in scores]

nms的效果如下,左圖是未使用nms時score的樣子,響應值極大的位置周圍也聚集著響應較大的點,如果不進行nms,特征點將會很集中;右圖是進行nms操作后的score,響應值極大的位置周圍的響應為0。

nms前后對應的特征點的位置如下所示,可見nms對于避免特征點位置過于集中起到了比較大的作用。

熟悉SuperPoint的同學應該注意到了,Daniel在CVPR 2018公開的實現中nms在特征點提取之后,而Sarlin于CVPR 2020年公開SuperGlue的同時對SuperPoint進行了重構,后者在score上進行nms,這兩種實現上存在一些差異。

下面給出的是Daniel在CVPR 2018開源的SuperPoint推理代碼節選。

nodust = nodust.transpose(1, 2, 0) heatmap = np.reshape(nodust, [Hc, Wc, self.cell, self.cell]) heatmap = np.transpose(heatmap, [0, 2, 1, 3]) heatmap = np.reshape(heatmap, [Hc*self.cell, Wc*self.cell]) xs, ys = np.where(heatmap >= self.conf_thresh) # Confidence threshold. if len(xs) == 0:return np.zeros((3, 0)), None, None pts = np.zeros((3, len(xs))) # Populate point data sized 3xN. pts[0, :] = ys pts[1, :] = xs pts[2, :] = heatmap[xs, ys] pts, _ = self.nms_fast(pts, H, W, dist_thresh=self.nms_dist) # Apply NMS.

但Sarlin為何要這么做呢?本人在Github上提交了一個#issue112咨詢了Sarlin,如下是他的回復,總結起來就重構后的代碼優勢有兩點:1. 更加快速,能夠在GPU上運行,常數級時間復雜度;2. 支持多圖像輸入。

3. Descriptor Decoder

首先利用類似于UCN的網絡得到一個半稠密的描述子(此處參考文獻UCN),這樣可以減少算法訓練內存開銷同時減少算法運行時間。之后通過雙三次多項式插值得到其余描述,然后通過L2-normalizes歸一化描述子得到統一的長度描述。特征維度由D∈RHc×Wc×D\mathcal{D} \in \mathbb{R}^{H_c \times W_c \times D}DRHc?×Wc?×D變為RH×W×D\mathbb{R}^{H\times W \times D}RH×W×D

由特征點得到其描述子的過程文中沒有細講,看了一下源代碼就明白了。其實該過程主要用了一個函數即grid_sample,畫了一個草圖作為解釋。

  • 圖像尺寸歸一化:首先對圖像的尺寸進行歸一化,(-1,-1)表示原來圖像的(0,0)位置,(1,1)表示原來圖像的(H-1,W-1)位置,這樣一來,特征點的位置也被歸一化到了相應的位置。
  • 構建grid:將歸一化后的特征點羅列起來,構成一個尺度為1*1*K*2的張量,其中K表示特征數量,2分別表示xy坐標。
  • 特征點位置反歸一化:根據輸入張量的H與W對grid(1,1,0,:)(表示第一個特征點,其余特征點類似)進行反歸一化,其實就是按照比例進行縮放+平移,得到反歸一化特征點在張量某個slice(通道)上的位置;但是這個位置可能并非為整像素,此時要對其進行雙線性插值補齊,然后其余slice按照同樣的方式進行雙線性插值。注:代碼中實際的就是雙線性插值,并非文中講的雙三次插值;
  • 輸出維度:1*C*1*K。

描述子解碼部分代碼如下:

# Compute the dense descriptors cDa = self.relu(self.convDa(x)) descriptors = self.convDb(cDa) # DIM: N x 256 x H/8 x W/8 descriptors = torch.nn.functional.normalize(descriptors, p=2, dim=1) #按通道進行歸一化# Extract descriptors # 根據特征點位置插值得到描述子, DIM: N x 256 x Mdescriptors = [sample_descriptors(k[None], d[None], 8)[0]for k, d in zip(keypoints, descriptors)]

4. 誤差構建

L(X,X′,D,D′;Y,Y′,S)=Lp(X,Y)+Lp(X′,Y′)+λLd(D,D′,S)\begin{array}{l}{\mathcal{L}\left(\mathcal{X}, \mathcal{X}^{\prime}, \mathcal{D}, \mathcal{D}^{\prime} ; Y, Y^{\prime}, S\right)=} \\ {\qquad \mathcal{L}_{p}(\mathcal{X}, Y)+\mathcal{L}_{p}\left(\mathcal{X}^{\prime}, Y^{\prime}\right)+\lambda \mathcal{L}_ozvdkddzhkzd\left(\mathcal{D}, \mathcal{D}^{\prime}, S\right)}\end{array} L(X,X,D,D;Y,Y,S)=Lp?(X,Y)+Lp?(X,Y)+λLd?(D,D,S)?

可見損失函數由兩項組成,其中一項為特征點檢測lossLp\mathcal{L}_{p}Lp? ,另外一項是描述子的lossLd\mathcal{L}_ozvdkddzhkzdLd?

對于檢測項loss,此時采用了交叉熵損失函數:

Lp(X,Y)=1HcWc∑h=1w=1Hc,Wclp(xhw;yhw)\mathcal{L}_{p}(\mathcal{X}, Y)=\frac{1}{H_{c} W_{c}} \sum_{h=1 \atop w=1}^{H_{c}, W_{c}} l_{p}\left(\mathbf{x}_{h w} ; y_{h w}\right) Lp?(X,Y)=Hc?Wc?1?w=1h=1?Hc?,Wc??lp?(xhw?;yhw?)

其中:

lp(xhw;y)=?log?(exp?(xhwy)∑k=165exp?(xhwk))l_{p}\left(\mathbf{x}_{h w} ; y\right)=-\log \left(\frac{\exp \left(\mathbf{x}_{h w y}\right)}{\sum_{k=1}^{65} \exp \left(\mathbf{x}_{h w k}\right)}\right) lp?(xhw?;y)=?log(k=165?exp(xhwk?)exp(xhwy?)?)

此時類似于一個多分類任務,log?\loglog 運算內部就是cell中元素為特征點的概率(即softmax之后的值),即樣本xhw\mathbf{x}_{hw}xhw?屬于特征的概率。這是一個2D location classifier,每個8x8的范圍內只能有一個特征點,即圖像中最多有$H \times W / 64 $個SuperPoint特征點。

描述子的損失函數:

Ld(D,D′,S)=1(HcWc)2∑h=1w=1Hc,Wc∑h′=1w′=1Hc,Wcld(dhw,dh′w′′;shwh′w′)\mathcal{L}_ozvdkddzhkzd\left(\mathcal{D}, \mathcal{D}^{\prime}, S\right)=\frac{1}{\left(H_{c} W_{c}\right)^{2}} \sum_{h=1 \atop w=1}^{H_{c}, W_{c}} \sum_{h^{\prime}=1 \atop w^{\prime}=1}^{H_{c}, W_{c}} l_ozvdkddzhkzd\left(\mathbfozvdkddzhkzd_{h w}, \mathbfozvdkddzhkzd_{h^{\prime} w^{\prime}}^{\prime} ; s_{h w h^{\prime} w^{\prime}}\right) Ld?(D,D,S)=(Hc?Wc?)21?w=1h=1?Hc?,Wc??w=1h=1?Hc?,Wc??ld?(dhw?,dhw?;shwhw?)

其中ldl_ozvdkddzhkzdld?為Hinge-loss(合頁損失函數,用于SVM,如支持向量的軟間隔,可以保證最后解的稀疏性);
ld(d,d′;s)=λd?s?max?(0,mp?dTd′)+(1?s)?max?(0,dTd′?mn)l_ozvdkddzhkzd\left(\mathbfozvdkddzhkzd, \mathbfozvdkddzhkzd^{\prime} ; s\right)=\lambda_ozvdkddzhkzd * s * \max \left(0, m_{p}-\mathbfozvdkddzhkzd^{T} \mathbfozvdkddzhkzd^{\prime}\right)+(1-s) * \max \left(0, \mathbfozvdkddzhkzd^{T} \mathbfozvdkddzhkzd^{\prime}-m_{n}\right) ld?(d,d;s)=λd??s?max(0,mp??dTd)+(1?s)?max(0,dTd?mn?)
同時指示函數為shwh′w′s_{h w h^{\prime} w^{\prime}}shwhw?,SSS表示所有正確匹配對集合:
shwh′w′={1,if?∥Hphw^?ph′w′∥≤80,otherwise?s_{h w h^{\prime} w^{\prime}}=\left\{\begin{array}{ll}{1,} & {\text { if }\left\|\widehat{\mathcal{H} \mathbf{p}_{h w}}-\mathbf{p}_{h^{\prime} w^{\prime}}\right\| \leq 8} \\ {0,} & {\text { otherwise }}\end{array}\right. shwhw?={1,0,??if??Hphw???phw??8?otherwise??

上式中的p\mathbf{p}p是cell的中心點坐標,Hp\mathcal{H} \mathbf{p}Hpp′\mathbf{p}^{\prime}p的距離小于8個pixel的認為是正確的匹配,這其實對應于cell上的的1個pixel。

讓我們仔細看一下這個損失函數,這其實是一個Double margin Siamese loss。當正例描述子余弦相似度dTd′\mathbfozvdkddzhkzd^T\mathbfozvdkddzhkzd^{\prime}dTd大于mpm_pmp?時,此時不需要懲罰;但如果該相似度較小時,此時就要懲罰了;負樣本時我們的目標是讓dTd′\mathbfozvdkddzhkzd^T\mathbfozvdkddzhkzd^{\prime}dTd變小,但網絡性能不佳時可能這個值很大(大于上式中的mnm_nmn?),此時要懲罰這種現象,網絡權重經過調整后使得該loss降低,對應的描述子相似度降低;

讓我們再看一下這個所謂的Double margin Siamese loss,上圖示中的連線表示distdistdist函數。想象一下,我們希望正例𝑑𝑖𝑠𝑡(𝑑,𝑑′)𝑑𝑖𝑠𝑡(𝑑,𝑑^{\prime})dist(d,d)越小越好,如果𝑑𝑖𝑠𝑡(𝑑,𝑑′)>𝑚𝑝1𝑑𝑖𝑠𝑡(𝑑,𝑑^{\prime})>𝑚_{𝑝1}dist(d,d)>mp1?,網絡要懲罰這種現象,會使得𝑑𝑖𝑠𝑡(𝑑,𝑑′)<𝑚𝑝1𝑑𝑖𝑠𝑡(𝑑,𝑑^{\prime})<𝑚_{𝑝1}dist(d,d)<mp1?.相應的的我們希望負例𝑑𝑖𝑠𝑡(𝑑,𝑑′)𝑑𝑖𝑠𝑡(𝑑,𝑑^{\prime})dist(d,d)越大越好,如果𝑑𝑖𝑠𝑡(𝑑,𝑑′)<𝑚𝑛1𝑑𝑖𝑠𝑡(𝑑,𝑑^{\prime})<𝑚_{𝑛1}dist(d,d)<mn1?,網絡要懲罰這種現象,最終會使得𝑑𝑖𝑠𝑡(𝑑,𝑑′)>𝑚𝑛1𝑑𝑖𝑠𝑡(𝑑,𝑑^{\prime})>𝑚_{𝑛1}dist(d,d)>mn1?

網絡訓練

本文一共設計了兩個網絡,一個是BaseDetector,用于檢測角點(注意,此處提取的并不是最終輸出的特征點,可以理解為候選的特征點),另一個是SuperPoint網絡,輸出特征點和描述子。

網絡的訓練共分為三個步驟:

  • 第一步是采用虛擬的三維物體作為數據集,訓練網絡去提取角點,這里得到的是BaseDetector即,MagicPoint;
  • 使用真實場景圖片,用第一步訓練出來的網絡MagicPoint +Homographic Adaptation提取角點(這一步迭代使用1-2次效果就可以非常棒),這一步稱作興趣點自標注(Interest Point Self-Labeling)
  • 對第二步使用的圖片進行幾何變換(即單應變換)得到新的圖片,這樣就有了已知位姿關系的圖片對,把這兩張圖片輸入SuperPoint網絡,提取特征點和描述子。
  • 這里需要注意的是,聯合訓練使用的單應變換相較于Homographic Adaptation中設置的單應變換更加嚴格,即沒有特別離譜的in-plane的旋轉。作者在論文中提到,這是由于在HPatches數據集中沒有這樣的數據才進行這種設置,原話是“we avoid sampling extreme in-plane rotations as they are rarely seen in HPatches”,這也是為什么SuperPoint無法有效地應對in-plane rotations的原因。

    預訓練Magic Point

    此處參考作者之前發表的一篇論文**[Toward Geometric Deep SLAM]**,其實就是MagicPoint,它僅僅保留了SuperPoint的主干網絡以及特征點解碼端,即SuperPoint的檢測端就是MagicPoint。

    Homographic Adaptation

    算法在虛擬數據集上表現極其優秀,但是在真實場景下表示沒有達到預期,此時本文進行了Homographic Adaptation。
    作者使用的數據集是MS-COCO,為了使網絡的泛化能力更強,本文不僅使用原始了原始圖片,而且對每張圖片進行隨機的旋轉和縮放形成新的圖片,新的圖片也被用來進行識別。這一步其實就類似于訓練里常用的數據增強。經過一系列的單應變換之后特征點的復檢率以及普適性得以增強。值得注意的是,在實際訓練時,這里采用了迭代使用單應變換的方式,例如使用優化后的特征點檢測器重新進行單應變換進行訓練,然后又可以得到更新后的檢測器,如此迭代優化,這就是所謂的self-supervisd。

    最后的關鍵點檢測器,即F^(I;fθ)\hat{F}\left(I ; f_{\theta}\right)F^(I;fθ?),可以表示為再所有隨機單應變換/反變換的聚合:

    F^(I;fθ)=1Nh∑i=1NhHi?1fθ(Hi(I))\hat{F}\left(I ; f_{\theta}\right)=\frac{1}{N_{h}} \sum_{i=1}^{N_{h}} \mathcal{H}_{i}^{-1} f_{\theta}\left(\mathcal{H}_{i}(I)\right) F^(I;fθ?)=Nh?1?i=1Nh??Hi?1?fθ?(Hi?(I))

    構建殘差,迭代優化描述子以及檢測器

    利用上面網絡得到的關鍵點位置以及描述子表示構建殘差,利用ADAM進行優化。

    實驗結果

    總結

  • it is possible to transfer knowledge from a synthetic dataset onto real-world images
  • sparse interest point detection and description can be cast as a single, efficient convolutional neural network
  • the resulting system works well for geometric computer vision matching tasks such as Homography Estimation
  • 未來工作:

  • 研究Homographic Adaptation能否在語義分割任務或者目標檢測任務中有提升作用
  • 興趣點提取以及描述這兩個任務是如何影響彼此的
  • 作者最后提到,他相信該網絡能夠解決SLAM或者SfM領域的數據關聯*,并且*learning-based前端可以使得諸如機器人或者AR等應用獲得更加魯棒。

    代碼

    以下給出的是Sarlin在SuperGlue代碼中重構的SuperPoint前向推理代碼,與Daniel于2018年的原始版本有些差異。不過Sarlin的版本與原版結果幾乎一致,另外增加多batch的支持,執行效率更高。

    # %BANNER_BEGIN% # --------------------------------------------------------------------- # %COPYRIGHT_BEGIN% # # Magic Leap, Inc. ("COMPANY") CONFIDENTIAL # # Unpublished Copyright (c) 2020 # Magic Leap, Inc., All Rights Reserved. # # NOTICE: All information contained herein is, and remains the property # of COMPANY. The intellectual and technical concepts contained herein # are proprietary to COMPANY and may be covered by U.S. and Foreign # Patents, patents in process, and are protected by trade secret or # copyright law. Dissemination of this information or reproduction of # this material is strictly forbidden unless prior written permission is # obtained from COMPANY. Access to the source code contained herein is # hereby forbidden to anyone except current COMPANY employees, managers # or contractors who have executed Confidentiality and Non-disclosure # agreements explicitly covering such access. # # The copyright notice above does not evidence any actual or intended # publication or disclosure of this source code, which includes # information that is confidential and/or proprietary, and is a trade # secret, of COMPANY. ANY REPRODUCTION, MODIFICATION, DISTRIBUTION, # PUBLIC PERFORMANCE, OR PUBLIC DISPLAY OF OR THROUGH USE OF THIS # SOURCE CODE WITHOUT THE EXPRESS WRITTEN CONSENT OF COMPANY IS # STRICTLY PROHIBITED, AND IN VIOLATION OF APPLICABLE LAWS AND # INTERNATIONAL TREATIES. THE RECEIPT OR POSSESSION OF THIS SOURCE # CODE AND/OR RELATED INFORMATION DOES NOT CONVEY OR IMPLY ANY RIGHTS # TO REPRODUCE, DISCLOSE OR DISTRIBUTE ITS CONTENTS, OR TO MANUFACTURE, # USE, OR SELL ANYTHING THAT IT MAY DESCRIBE, IN WHOLE OR IN PART. # # %COPYRIGHT_END% # ---------------------------------------------------------------------- # %AUTHORS_BEGIN% # # Originating Authors: Paul-Edouard Sarlin # # %AUTHORS_END% # --------------------------------------------------------------------*/ # %BANNER_END%from pathlib import Path import torch from torch import nndef simple_nms(scores, nms_radius: int):""" Fast Non-maximum suppression to remove nearby points """assert(nms_radius >= 0)def max_pool(x):return torch.nn.functional.max_pool2d(x, kernel_size=nms_radius*2+1, stride=1, padding=nms_radius)zeros = torch.zeros_like(scores)max_mask = scores == max_pool(scores)for _ in range(2):supp_mask = max_pool(max_mask.float()) > 0supp_scores = torch.where(supp_mask, zeros, scores)new_max_mask = supp_scores == max_pool(supp_scores)max_mask = max_mask | (new_max_mask & (~supp_mask))return torch.where(max_mask, scores, zeros)def remove_borders(keypoints, scores, border: int, height: int, width: int):""" Removes keypoints too close to the border """mask_h = (keypoints[:, 0] >= border) & (keypoints[:, 0] < (height - border))mask_w = (keypoints[:, 1] >= border) & (keypoints[:, 1] < (width - border))mask = mask_h & mask_wreturn keypoints[mask], scores[mask]def top_k_keypoints(keypoints, scores, k: int):if k >= len(keypoints):return keypoints, scoresscores, indices = torch.topk(scores, k, dim=0)return keypoints[indices], scoresdef sample_descriptors(keypoints, descriptors, s: int = 8):""" Interpolate descriptors at keypoint locations """b, c, h, w = descriptors.shapekeypoints = keypoints - s / 2 + 0.5keypoints /= torch.tensor([(w*s - s/2 - 0.5), (h*s - s/2 - 0.5)],).to(keypoints)[None]keypoints = keypoints*2 - 1 # normalize to (-1, 1)args = {'align_corners': True} if torch.__version__ >= '1.3' else {}descriptors = torch.nn.functional.grid_sample(descriptors, keypoints.view(b, 1, -1, 2), mode='bilinear', **args)descriptors = torch.nn.functional.normalize(descriptors.reshape(b, c, -1), p=2, dim=1)return descriptorsclass SuperPoint(nn.Module):"""SuperPoint Convolutional Detector and DescriptorSuperPoint: Self-Supervised Interest Point Detection andDescription. Daniel DeTone, Tomasz Malisiewicz, and AndrewRabinovich. In CVPRW, 2019. https://arxiv.org/abs/1712.07629"""default_config = {'descriptor_dim': 256,'nms_radius': 4,'keypoint_threshold': 0.005,'max_keypoints': -1,'remove_borders': 4,}def __init__(self, config):super().__init__()self.config = {**self.default_config, **config}self.relu = nn.ReLU(inplace=True)self.pool = nn.MaxPool2d(kernel_size=2, stride=2)c1, c2, c3, c4, c5 = 64, 64, 128, 128, 256self.conv1a = nn.Conv2d(1, c1, kernel_size=3, stride=1, padding=1)self.conv1b = nn.Conv2d(c1, c1, kernel_size=3, stride=1, padding=1)self.conv2a = nn.Conv2d(c1, c2, kernel_size=3, stride=1, padding=1)self.conv2b = nn.Conv2d(c2, c2, kernel_size=3, stride=1, padding=1)self.conv3a = nn.Conv2d(c2, c3, kernel_size=3, stride=1, padding=1)self.conv3b = nn.Conv2d(c3, c3, kernel_size=3, stride=1, padding=1)self.conv4a = nn.Conv2d(c3, c4, kernel_size=3, stride=1, padding=1)self.conv4b = nn.Conv2d(c4, c4, kernel_size=3, stride=1, padding=1)self.convPa = nn.Conv2d(c4, c5, kernel_size=3, stride=1, padding=1)self.convPb = nn.Conv2d(c5, 65, kernel_size=1, stride=1, padding=0)self.convDa = nn.Conv2d(c4, c5, kernel_size=3, stride=1, padding=1)self.convDb = nn.Conv2d(c5, self.config['descriptor_dim'],kernel_size=1, stride=1, padding=0)path = Path(__file__).parent / 'weights/superpoint_v1.pth'self.load_state_dict(torch.load(str(path)))mk = self.config['max_keypoints']if mk == 0 or mk < -1:raise ValueError('\"max_keypoints\" must be positive or \"-1\"')print('Loaded SuperPoint model')def forward(self, data):""" Compute keypoints, scores, descriptors for image """# Shared Encoderx = self.relu(self.conv1a(data['image']))x = self.relu(self.conv1b(x))x = self.pool(x)x = self.relu(self.conv2a(x))x = self.relu(self.conv2b(x))x = self.pool(x)x = self.relu(self.conv3a(x))x = self.relu(self.conv3b(x))x = self.pool(x)x = self.relu(self.conv4a(x))x = self.relu(self.conv4b(x))# Compute the dense keypoint scorescPa = self.relu(self.convPa(x))scores = self.convPb(cPa)scores = torch.nn.functional.softmax(scores, 1)[:, :-1]b, _, h, w = scores.shapescores = scores.permute(0, 2, 3, 1).reshape(b, h, w, 8, 8)scores = scores.permute(0, 1, 3, 2, 4).reshape(b, h*8, w*8)scores = simple_nms(scores, self.config['nms_radius'])# Extract keypointskeypoints = [torch.nonzero(s > self.config['keypoint_threshold'])for s in scores]scores = [s[tuple(k.t())] for s, k in zip(scores, keypoints)]# Discard keypoints near the image borderskeypoints, scores = list(zip(*[remove_borders(k, s, self.config['remove_borders'], h*8, w*8)for k, s in zip(keypoints, scores)]))# Keep the k keypoints with highest scoreif self.config['max_keypoints'] >= 0:keypoints, scores = list(zip(*[top_k_keypoints(k, s, self.config['max_keypoints'])for k, s in zip(keypoints, scores)]))# Convert (h, w) to (x, y)keypoints = [torch.flip(k, [1]).float() for k in keypoints]# Compute the dense descriptorscDa = self.relu(self.convDa(x))descriptors = self.convDb(cDa)descriptors = torch.nn.functional.normalize(descriptors, p=2, dim=1)# Extract descriptorsdescriptors = [sample_descriptors(k[None], d[None], 8)[0]for k, d in zip(keypoints, descriptors)]return {'keypoints': keypoints,'scores': scores,'descriptors': descriptors,}

    歡迎大家關注我的公眾號,最新文章第一時間推送。

    總結

    以上是生活随笔為你收集整理的SuperPoint:深度学习特征点+描述子的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    97超碰人| 国产一区二区在线观看免费 | 久久成人精品电影 | 国产成人精品aaa | 在线观看免费视频 | 国产精品久久久久久久久久妇女 | 国产精品自产拍在线观看蜜 | 中文乱码视频在线观看 | 丝袜足交在线 | 97超碰在线久草超碰在线观看 | 在线免费观看黄 | 啪一啪在线 | 天天曰天天干 | 精品久久免费看 | 日韩中文字幕在线不卡 | 国产精品一区免费看8c0m | 日韩欧美电影 | 色射色| 四虎影视成人精品 | 中文字幕精品一区二区精品 | av在线电影免费观看 | 国产精品不卡在线播放 | 日韩中文字幕免费电影 | 国产午夜在线观看 | 黄色a一级视频 | 欧美另类高清 videos | 久久精品福利视频 | 国产一区二区在线免费观看 | 人人草人人草 | 99视频在线看 | 一区二区三区av在线 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 波多野结衣一区三区 | 99视频网站| 在线日韩视频 | 国产日产欧美在线观看 | 日本激情中文字幕 | 亚洲国产欧美在线人成大黄瓜 | 午夜精品一区二区三区在线播放 | 久久精品成人欧美大片古装 | 成年人黄色免费视频 | 久久99久久99精品中文字幕 | 国产资源免费 | www.五月婷 | 在线电影av | 中文字幕在线观看免费高清电影 | 亚洲v欧美v国产v在线观看 | 亚洲高清免费在线 | 久久国产精品成人免费浪潮 | 天天插天天干 | 国产精品综合久久久久 | 999热视频| 成人av中文字幕 | 精品99视频 | 免费看成人片 | 国产精品乱码在线 | 精品久久在线 | 中文字幕丝袜一区二区 | 亚洲最大av网 | 色国产精品 | 日韩精品免费在线视频 | 亚洲午夜精品一区 | 国产一区久久 | www好男人| 精品中文字幕在线观看 | 又黄又刺激视频 | 99热99re6国产在线播放 | 黄色一二级片 | 在线天堂8√ | 日韩av电影中文字幕在线观看 | 久草视频手机在线 | 日韩欧美视频 | 国产精品剧情在线亚洲 | 国产美女视频免费观看的网站 | 免费久久网 | 国产免费看| 欧美ⅹxxxxxx| 久久久毛片 | 国产精品欧美久久久久天天影视 | 欧美在线日韩在线 | 国产99久久 | 视频国产在线 | 麻豆一区二区 | av片免费播放 | 97在线观看免费 | 亚洲精品免费在线播放 | 精品国产激情 | 日本h视频在线观看 | 我要色综合天天 | 日韩精品中文字幕有码 | 黄污网 | 国产午夜精品免费一区二区三区视频 | 中文字幕第| 在线电影91 | 在线观看电影av | 国产女人40精品一区毛片视频 | 超碰在线观看99 | 国产手机视频在线播放 | 国产小视频在线免费观看视频 | 久久久免费毛片 | 国产一区在线视频播放 | 深爱激情综合 | 免费瑟瑟网站 | 亚洲精品国产自产拍在线观看 | 在线免费日韩 | 国产 日韩 在线 亚洲 字幕 中文 | 在线午夜av | 欧美精品亚洲精品日韩精品 | 亚洲精品美女久久久 | 在线免费av观看 | 中文字幕 国产精品 | 日日干网址 | 亚洲狠狠操 | av一区在线 | 人人澡人摸人人添学生av | 在线观看视频在线 | 日韩资源在线播放 | 天天综合色 | 国产亚洲综合精品 | 国产精品女同一区二区三区久久夜 | 成人av电影免费观看 | 久久激情五月丁香伊人 | 欧美人人爱 | 亚洲精品视频免费在线 | 国产又黄又爽又猛视频日本 | 亚洲精品欧美专区 | 久草在线最新视频 | 日韩精品一区二区三区免费观看视频 | 亚洲国产美女精品久久久久∴ | 国产不卡在线看 | 久久综合中文字幕 | 在线观看精品视频 | 97精品久久 | 成人欧美一区二区三区在线观看 | 免费观看一级视频 | 亚洲精品自拍 | 国产精品毛片完整版 | 欧美日韩在线精品一区二区 | 97在线影院 | 精品影院| 久草视频国产 | h网站免费在线观看 | 中文永久字幕 | 三级av小说 | 一本一本久久aa综合精品 | 91视频高清 | 免费黄在线看 | 91桃色在线观看视频 | 亚洲国产成人精品电影在线观看 | 91探花在线视频 | www久久精品 | 欧美午夜久久 | 国产一区免费在线 | 免费久久99精品国产 | www色,com | 久久99精品一区二区三区三区 | 久久人人爽 | 亚洲国产理论片 | 欧美一级电影在线观看 | 91热爆在线观看 | 亚洲激情视频在线 | 日本精品xxxx | 免费高清无人区完整版 | 国产精品区在线观看 | 日韩在线短视频 | 欧美巨大荫蒂茸毛毛人妖 | 亚洲精品久久久蜜臀下载官网 | 特级黄录像视频 | 91av手机在线 | 免费视频久久久久久久 | 久久久高清视频 | 日日干天天操 | 欧美大片mv免费 | 亚洲国产福利视频 | 国产成人精品一区二 | 综合天堂av久久久久久久 | 五月天伊人网 | 18岁免费看片 | 丁香六月网 | 欧美日韩一二三四区 | 一区二区三区高清在线观看 | 亚洲日本韩国一区二区 | 高清在线观看av | av在线免费观看网站 | 天堂av在线免费观看 | 蜜臀久久99静品久久久久久 | av电影一区二区三区 | 国产成人精品av在线 | 欧美另类v | 国产精品美女视频网站 | 亚洲1区 在线 | av大全在线播放 | 香蕉久久国产 | 亚洲精品影院在线观看 | 黄色软件在线观看视频 | 国产亚洲在线视频 | 在线激情av电影 | 精品久久久久久综合日本 | 中文字幕在线久一本久 | 99久久国产免费看 | 天天摸天天操天天舔 | 深夜视频久久 | 国产精品亚洲精品 | 亚洲成人精品在线观看 | 最新av免费在线观看 | 免费高清男女打扑克视频 | 国产又粗又猛又黄又爽 | 成人综合婷婷国产精品久久免费 | 丁香久久激情 | 黄色一区二区在线观看 | 日本三级吹潮在线 | 国产高清免费视频 | 久久久网址 | 六月激情 | 国产高清第一页 | 精品黄色在线 | 天天夜夜亚洲 | 97av视频在线观看 | 99精品国产一区二区 | 亚洲影视九九影院在线观看 | 日韩一区二区在线免费观看 | 狠日日| 高清不卡免费视频 | 国产手机视频在线播放 | 最新不卡av | 久草视频在线免费 | 国产一级免费观看视频 | 久久区二区 | 免费看特级毛片 | 久久午夜网| 四虎国产| 色播五月激情五月 | 亚洲一区免费在线 | 在线播放视频一区 | 五月开心六月伊人色婷婷 | 久久成人精品电影 | 亚洲成人软件 | 中文字幕xxxx | 黄色av一区| 最近免费中文字幕大全高清10 | 日韩精品视 | 国产又粗又猛又黄 | 欧美一级视频在线观看 | 国产黄免费 | 亚洲va韩国va欧美va精四季 | 欧美日韩在线视频免费 | 久久免费片 | 亚洲精品视频在线看 | 射久久 | 国内精品久久久久久久久 | 97碰在线视频 | 狠狠做深爱婷婷综合一区 | 亚洲第一成网站 | 97视频在线观看免费 | 在线 成人 | 色香天天 | 麻豆超碰| 成人9ⅰ免费影视网站 | 亚洲综合色视频 | 欧洲精品码一区二区三区免费看 | 欧美va日韩va | 夜夜操综合网 | 丁香在线观看完整电影视频 | 欧美动漫一区二区三区 | 国产精品一区二区三区在线免费观看 | 国内精品久久久久久久久久久 | 人人澡人人爽欧一区 | 91丨九色丨国产丨porny精品 | 永久免费av在线播放 | 免费亚洲视频 | 天天曰 | 亚洲精品一区二区三区高潮 | 免费h在线观看 | 伊人天天干 | 久久在草 | 色婷婷激婷婷情综天天 | 888av| 2022久久国产露脸精品国产 | 人人干在线 | 久久精品—区二区三区 | 三级av免费观看 | 久久99久久99精品免视看婷婷 | 亚州精品天堂中文字幕 | 欧美精品久久久 | 欧美成人a在线 | 九九天堂 | 久久再线视频 | 亚洲精品久久久久中文字幕m男 | 国产精品二区在线观看 | 日韩综合一区二区三区 | 91中文字幕在线观看 | 99国产成+人+综合+亚洲 欧美 | 婷婷亚洲综合 | 久久免费看av | 国产精品久久久久久69 | 99久久精品免费视频 | 四虎影视久久久 | 97国产精品一区二区 | 亚洲综合狠狠干 | 欧美日韩视频免费 | 日韩精品一区二区三区免费观看视频 | 狠狠狠色丁香婷婷综合久久88 | 久久乐九色婷婷综合色狠狠182 | 人人看人人做人人澡 | 一级片视频在线 | 天天综合网~永久入口 | 国内久久久 | 中文字幕在线视频国产 | 91在线porny国产在线看 | 99久久精品国产观看 | 另类五月激情 | 亚洲成人av免费 | 欧美精品日韩 | 免费看久久久 | 国产操在线 | 97超碰国产在线 | 在线观看久久 | 伊人婷婷 | 国产精品久久久久久久久久ktv | 91丨九色丨国产在线观看 | 成人午夜电影免费在线观看 | 在线中文日韩 | 九九免费在线视频 | 国产高潮久久 | 在线黄色国产 | 中文字幕在线观看第一区 | 欧美一区二区三区不卡 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲精品乱码白浆高清久久久久久 | 美女性爽视频国产免费app | 成人免费网站视频 | 99色免费| 天天草av| 久草精品在线播放 | 美女久久久久久久久久 | 国产亚洲综合性久久久影院 | 国产在线观看你懂得 | 日韩二区三区在线 | 在线播放日韩av | 中文字幕免 | 色大片免费看 | 日一日操一操 | 久久色视频 | 麻豆国产精品永久免费视频 | 久久精品欧美视频 | 一区二区中文字幕在线播放 | 在线看小早川怜子av | av一级久久 | 探花视频在线版播放免费观看 | 99久久婷婷国产一区二区三区 | 夜夜操天天干, | 激情av网| 久久久精品国产一区二区三区 | 日b视频在线观看网址 | 欧美淫aaa免费观看 日韩激情免费视频 | 成年人视频在线 | 91综合久久一区二区 | 午夜电影久久久 | 国产黄色看片 | 亚洲天天在线 | 成人欧美日韩国产 | 91最新在线观看 | 亚洲精品国产精品国自产在线 | 国产一区电影在线观看 | 午夜 在线| 亚洲精品五月 | 亚洲精品中文字幕在线观看 | 亚洲精品乱码 | 亚洲欧美日韩国产一区二区 | 精品美女视频 | 337p西西人体大胆瓣开下部 | 日韩欧美在线观看一区二区 | 成人午夜精品福利免费 | 国产欧美在线一区 | 91网免费看 | 国产精品一区二区三区免费视频 | www日日| 激情婷婷综合网 | 天天操夜夜爱 | 日韩高清三区 | 人人澡人人爱 | 黄色毛片在线 | 精品在线观看一区二区三区 | 国产二区视频在线 | 久久人人爽视频 | 久久人人97超碰精品888 | 激情在线五月天 | 亚洲精品资源在线 | 免费福利片2019潦草影视午夜 | 色综合天天色综合 | 激情av资源 | 一区二区三区在线电影 | 99久久日韩精品视频免费在线观看 | 日韩一区二区免费视频 | 日韩精品久久久久久 | 午夜久久电影网 | 看国产黄色大片 | 日本深夜福利视频 | 黄色av在| 日本久热 | 日韩在线激情 | 奇米影视8888在线观看大全免费 | 欧美激情视频一区二区三区 | 欧美综合国产 | 九九九热精品免费视频观看 | 国产精品二区在线观看 | 天堂在线视频中文网 | 久久久免费观看完整版 | 91在线产啪 | 在线精品观看国产 | 91久久精品日日躁夜夜躁国产 | 人人澡人人爽欧一区 | 欧美日一级片 | 亚洲影院色 | 西西www4444大胆视频 | 天天干天天射天天爽 | 成人精品久久久 | 国内精品久久久久影院一蜜桃 | 日韩在线免费高清视频 | 国内精品久久久久影院一蜜桃 | 不卡的一区二区三区 | 亚洲久草网 | 久久高清免费观看 | 国产 精品 资源 | 中文字幕av最新 | 天天av综合网 | 五月婷丁香网 | av激情五月 | 亚洲一区视频免费观看 | 91成版人在线观看入口 | 中文字幕一区二区三区精华液 | 999久久国精品免费观看网站 | 国产午夜视频在线观看 | 日韩网站在线播放 | 中文字幕人成人 | 久久久不卡影院 | 狠狠黄 | 国产一级三级 | 亚洲国产日韩一区 | 色婷婷 亚洲 | 成人午夜久久 | 国产婷婷色 | 国产精品2018 | 日韩色视频在线观看 | 黄色a大片| 91精品中文字幕 | 一区二区欧美激情 | 00av视频| 日韩一区二区三区高清在线观看 | 日本久久久久久久久 | 97av精品| 91丨九色丨国产在线 | 亚洲一区二区三区毛片 | 成人片在线播放 | 国产在线视频不卡 | 96精品高清视频在线观看软件特色 | 欧美日韩精品国产 | 久久精品久久国产 | 久久夜色精品国产欧美乱极品 | 日韩综合一区二区三区 | 丁香婷婷成人 | 国产亚洲成av片在线观看 | 欧美 日韩 国产 中文字幕 | 男女视频国产 | 97小视频 | 久久久久国产一区二区三区 | 人人看人人做人人澡 | 91精品国产乱码 | 国产在线自 | 午夜婷婷网 | 亚洲欧美日韩精品一区二区 | 久久午夜电影院 | 久久婷婷五月综合色丁香 | 好看的国产精品视频 | 97视频免费播放 | 在线观看亚洲精品视频 | 国产91精品在线播放 | 99精品视频免费全部在线 | 日韩成人免费在线 | 日本激情视频中文字幕 | 色欧美综合 | 一级免费观看 | 日韩欧美国产精品 | 久久1电影院| 日本高清dvd| 精品成人在线 | 国产精品99久久99久久久二8 | 全黄网站| 国产精品久久久久久久久久99 | 日韩国产精品久久 | 久久亚洲区 | 中文字幕在线观看1 | 成人一区二区在线观看 | 四虎在线免费视频 | 天天色天天搞 | 久久久久99精品成人片三人毛片 | 中文字幕免费观看视频 | 欧美一区二区免费在线观看 | 五月天中文字幕mv在线 | 黄色成人在线网站 | 一区二区精品视频 | 国产视频九色蝌蚪 | 国产黄色在线 | 国产精品一区久久久久 | 中文字幕乱码电影 | 日韩久久一区二区 | 日韩在线首页 | 少妇搡bbbb搡bbb搡aa | 国产色久 | 国产91精品一区二区绿帽 | 手机av在线网站 | 午夜视频在线瓜伦 | 欧美老女人xx | 麻豆视频入口 | 午夜精品影院 | 综合在线色 | 国产精品综合久久久久久 | 最新高清无码专区 | 天天操天天操天天操天天操 | 四虎国产精品免费观看视频优播 | 国产午夜麻豆影院在线观看 | 国产精品v欧美精品v日韩 | 久久精品爱视频 | 亚洲精品高清视频 | 欧美99热 | 午夜精品久久久久久久久久久久 | 天天天在线综合网 | 亚洲尺码电影av久久 | 在线免费视频 你懂得 | 国产美女视频免费观看的网站 | 国产精品久久久久三级 | 91私密保健 | 97超碰在线资源 | 国产一级片视频 | 国产一区视频在线 | 97超碰色 | 中文在线免费一区三区 | 97超碰人人澡人人爱学生 | 草在线 | 午夜.dj高清免费观看视频 | 天天摸日日摸人人看 | 日韩免费在线视频观看 | 日韩高清激情 | 免费精品视频在线 | 色狠狠狠| 精品国产一区二区三区久久久蜜臀 | 在线播放 一区 | 国产成人亚洲在线观看 | 亚洲免费精品一区二区 | 国产伦精品一区二区三区无广告 | 久久国产高清视频 | 欧美国产亚洲精品久久久8v | 欧美9999 | 国产拍揄自揄精品视频麻豆 | 在线观看中文字幕第一页 | 色黄久久久久久 | 亚洲少妇激情 | 搡bbbb搡bbb视频 | 午夜影院一级 | 精品9999| 国产精品美女免费 | 欧美日韩高清在线一区 | 亚洲精品视频大全 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 丁香免费视频 | 射射射综合网 | 日韩一区二区三 | 国产男女免费完整视频 | 波多野结衣视频一区二区 | 色噜噜日韩精品欧美一区二区 | 日韩欧美在线观看一区二区 | 日韩高清在线一区二区三区 | 亚洲五月六月 | 日韩免费专区 | 2021国产精品 | 国产一区免费在线 | 国产精品乱码久久久久久1区2区 | 一级黄色片在线 | 亚洲综合丁香 | 精品一区二区三区电影 | 亚洲国产经典视频 | 久久久久欠精品国产毛片国产毛生 | 亚洲天堂网站视频 | 久久伊人免费视频 | 操操色 | 成人网页在线免费观看 | 在线观看免费91 | 91在线网址 | 久久久久亚洲最大xxxx | 在线观看免费日韩 | 亚洲国产精品成人va在线观看 | 精品久久久久久久久中文字幕 | 国产高清久久 | 97视频久久久 | 成人一区二区在线观看 | 久久99久久99久久 | 久久久色 | 亚州精品天堂中文字幕 | 美女黄频视频大全 | 丁香六月天婷婷 | 欧美日韩一区二区三区免费视频 | 国产色小视频 | 成人小视频在线免费观看 | 久久久久国产一区二区三区四区 | www.黄色片.com | 91在线播放国产 | 久久dvd| 91视频电影 | 亚洲精品免费观看视频 | 福利视频一区二区 | 在线观看va | 久久亚洲欧美 | 国产xxxx做受性欧美88 | 夜夜爽天天爽 | 91成人观看 | 久久经典国产视频 | 色在线网站 | 在线之家官网 | 日韩欧美综合在线视频 | 色成人亚洲 | 日本精品一二区 | 色在线亚洲 | 91精品国产91久久久久久三级 | 中文字幕视频免费观看 | 久久久久久视频 | 国产精品美女久久久网av | 一区二区在线电影 | 丁香亚洲 | 91私密视频 | 黄色软件网站在线观看 | 91亚洲精品久久久久图片蜜桃 | 2019中文字幕第一页 | 久久精品国产亚洲 | 欧美日产在线观看 | 免费久久久久久 | 视频三区 | 日韩高清在线观看 | 久久99国产精品自在自在app | 午夜精品久久久久久99热明星 | 国产精品大片在线观看 | 91成人黄色 | 黄色成品视频 | 久久久久久久久久久久国产精品 | 中文字幕免 | 超碰日韩| 99婷婷狠狠成为人免费视频 | 特级片免费看 | 精品一区二区三区香蕉蜜桃 | 国产首页| 9i看片成人免费看片 | 九九热在线免费观看 | 亚洲欧洲成人精品av97 | 手机成人av在线 | 三上悠亚一区二区在线观看 | 色五月色开心色婷婷色丁香 | 天天草天天插 | 亚洲国产手机在线 | 深爱五月激情五月 | 2020天天干夜夜爽 | 高清中文字幕 | 黄色一级性片 | 国产高清视频在线播放一区 | 国产精品2018 | 久久免费av电影 | 久久国内精品 | 久久亚洲综合国产精品99麻豆的功能介绍 | 毛片1000部免费看 | 人人插人人看 | 中文字幕在线看片 | 黄色免费看片网站 | 中文免费在线观看 | 欧美日韩国产mv | 久久精品艹 | 91资源在线免费观看 | 国产精品日韩 | 日韩在线观看你懂的 | 天天干天天拍天天操天天拍 | 操老逼免费视频 | 久久黄色免费观看 | 射久久 | 国产夫妻自拍av | 日韩av一区二区三区在线观看 | 国产成人1区 | 97视频在线观看网址 | 一区免费视频 | 国产精品白浆视频 | 在线观看黄色 | 国产精品99蜜臀久久不卡二区 | 久久免费看毛片 | 丁香婷婷激情网 | 婷婷精品国产欧美精品亚洲人人爽 | 激情综合婷婷 | 中文字幕日韩精品有码视频 | 久久再线视频 | 国产精品一区二区三区免费视频 | 精品一区91 | 91超碰在线播放 | 日韩中文字幕视频在线观看 | 麻豆精品国产传媒 | 在线欧美日韩 | 狠狠躁日日躁狂躁夜夜躁 | 激情av在线播放 | 精品免费一区 | 丁香婷婷综合色啪 | 国产精品自产拍在线观看蜜 | 99精品在线 | 婷婷综合av| 青青河边草免费视频 | 日韩av偷拍 | 国产一区二区三区免费视频 | 国产精品第7页 | 成人久久18免费网站麻豆 | 日本高清xxxx | 久久精品久久精品久久精品 | 久久久污| 看片在线亚洲 | 国产视频亚洲精品 | 久久精品8 | 91综合久久一区二区 | 日本丶国产丶欧美色综合 | 999久久久久久久久 69av视频在线观看 | 亚洲毛片在线观看. | 911亚洲精品第一 | 超黄视频网站 | 亚洲高清视频在线播放 | 午夜视频在线观看欧美 | 狠狠躁日日躁狂躁夜夜躁av | 久久99在线 | 国产美腿白丝袜足在线av | 久久久久久高潮国产精品视 | 成人国产精品一区 | 久久久久久久综合色一本 | 日韩91在线 | 人人看97 | 欧洲亚洲国产视频 | 丁香九月婷婷 | 国产欧美日韩精品一区二区免费 | 在线免费观看欧美日韩 | 日日添夜夜添 | 久久久久成人精品亚洲国产 | 亚洲精品99久久久久久 | 亚洲精品视频网站在线观看 | 国产在线不卡一区 | 国产99久久久久久免费看 | 国内视频在线观看 | 天天曰视频 | 五月婷婷爱 | 69久久夜色精品国产69 | 欧美二区视频 | 久久久久亚洲天堂 | av片无限看| 人人插人人插 | 不卡av在线 | 国产精品国产三级国产不产一地 | 精品美女视频 | 成人黄色大片在线观看 | 精品色综合| 国产高清免费视频 | 五月婷婷开心中文字幕 | 奇米网网址| 久久这里只有精品久久 | 天天操夜夜操国产精品 | 国产.精品.日韩.另类.中文.在线.播放 | 九九九在线| 亚洲视频网站在线观看 | 成人在线黄色 | 久久精品视频免费观看 | 成人久久18免费网站 | 日韩精品最新在线观看 | 国产成人精品午夜在线播放 | 国产精品久久久久久久久久三级 | 国产成人区 | 在线观看黄网站 | 国产高清在线观看 | 成 人 免费 黄 色 视频 | 四虎影视成人精品 | 99在线高清视频在线播放 | 久久精品系列 | 一区二区三区四区五区在线 | 91色影院 | 欧美精品中文在线免费观看 | 亚洲欧美日韩一二三区 | 亚洲精品mv在线观看 | 激情视频一区二区三区 | 91精品视频网站 | 亚洲作爱视频 | 日本性生活免费看 | 国产小视频在线免费观看视频 | 亚洲色图22p| 日韩影视大全 | 在线观看视频97 | 999精品网 | 91资源在线观看 | av网址在线播放 | 国产精品久久久久久a | 婷婷综合亚洲 | 亚洲黄色在线免费观看 | 亚洲视频专区在线 | 精品国产电影 | 中中文字幕av在线 | 亚洲欧美综合精品久久成人 | 国产成人免费精品 | 亚欧日韩av | 成人黄色中文字幕 | 国内精品久久久久久久久久清纯 | 午夜 免费 | 日韩精品一区二区三区免费观看视频 | 亚洲一区精品人人爽人人躁 | 特级a老妇做爰全过程 | 国产精品国产三级国产 | 毛片网站在线观看 | 亚洲欧美日韩中文在线 | 综合久久网 | 日韩精品视频一二三 | 永久免费的av电影 | 日韩三区在线 | 国产黄色精品在线观看 | 国产青春久久久国产毛片 | 欧美视频在线观看免费网址 | 在线免费观看羞羞视频 | 免费观看的黄色 | 亚洲精品国产成人 | 日本精品久久久久中文字幕5 | 精品国偷自产国产一区 | 韩日在线一区 | 亚洲传媒在线 | 亚洲有 在线 | 日本久久电影 | 亚洲一区动漫 | 久草视频播放 | 91成人免费看 | 久久久片 | 国产高清免费在线观看 | 国产一区久久 | 久久这里只有精品视频首页 | 亚洲91网站 | 米奇狠狠狠888 | 91探花系列在线播放 | 天天操综合网站 | 在线免费观看一区二区三区 | 免费污片 | 国产亚洲精品久久久久久久久久 | 精品国产一区二区三区久久久蜜月 | 国产五月天婷婷 | 91视频一8mav | 又黄又爽又无遮挡的视频 | 超碰97免费在线 | 九九视频一区 | 中文字幕视频一区 | 亚洲精品五月 | 色视频网站在线 | 色噜噜狠狠色综合中国 | 国产九九九精品视频 | 久久午夜网 | 美女精品 | 在线观看亚洲电影 | 黄色成人av网址 | 在线你懂的视频 | 国产无遮挡又黄又爽在线观看 | 中文字幕第一页在线播放 | 极品美女被弄高潮视频网站 | 国产99久久精品一区二区永久免费 | 久久综合九色综合欧美狠狠 | 国产精品永久久久久久久久久 | 三级黄色片在线观看 | 天天干,天天插 | 亚洲综合色视频 | 国产又粗又硬又长又爽的视频 | 激情五月亚洲 | 免费观看的av网站 | 911久久| 中国一级片在线观看 | 成人免费视频播放 | 91麻豆精品国产91久久久更新时间 | 国产999在线 | 日b视频国产 | 五月天高清欧美mv | 日韩aa视频 | 91丨九色丨国产在线 | 国产精品一区二区三区电影 | 丁香久久综合 | 久久成人国产精品一区二区 | 免费成人在线观看 | 精品国产一区二区三区久久久蜜臀 | av观看久久久 | 久久人人爽人人片av | 久久夜色精品国产欧美乱 | 久久精品中文字幕免费mv | 久久精品爱爱视频 | 久久99国产精品视频 | 中文字幕免费在线 | av免费在线免费观看 | 岛国大片免费视频 | 麻豆一二三精选视频 | 日韩一区二区三区不卡 | 波多野结衣视频一区二区三区 | 欧美精品一区二区三区四区在线 | 久久国产精品网站 | 欧美精品一区二区蜜臀亚洲 | 精品特级毛片 | 国产亚洲精品久久久久久电影 | 久草视频在线播放 | 天天爽夜夜爽精品视频婷婷 | 丁香婷婷自拍 | 国产成人av在线影院 | 国产在线观看中文字幕 | 国产午夜三级一区二区三桃花影视 | 国产精品乱码久久久 | 天堂在线视频中文网 | a级免费观看 | 亚洲视频免费在线 | 免费视频色 | 国产精品免费不 | 成人免费一级 | 在线观看日韩一区 | 久久99亚洲热视 | 日韩中文字幕a | 久久久久欧美精品 | 91av福利视频 | 午夜黄色大片 | 欧美日韩国产高清视频 | 国产福利av在线 | 91激情视频在线播放 | 丁香免费视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 天天搞夜夜骑 | 岛国av在线免费 | 福利一区在线视频 | 久久字幕网 | a在线一区| 91免费高清在线观看 | 久久免费视频国产 | 日本在线精品视频 | 国产 欧美 日产久久 | 国产精品地址 | 亚洲撸撸| 天天天天射| 激情开心站 | 亚洲色五月 | 特级片免费看 | 在线观看日韩精品 | 国产精品一区二区麻豆 | 天堂资源在线观看视频 | 亚洲午夜久久久久久久久电影网 | 久草91视频 | 国产精品免费看 | 草久久久久久 | 免费看污在线观看 | 亚洲成人动漫在线观看 | 国产成人精品免费在线观看 | 亚洲网站在线看 | 日韩在线视频看看 | 91自拍成人 | 国内精品福利视频 | 91激情小视频| 欧美日韩一级视频 | 成人动漫一区二区三区 | 波多野结衣在线视频免费观看 | www.888av| 蜜桃视频在线视频 | 在线看国产日韩 | 91黄色视屏 | 波多野结衣视频一区二区 | 91亚洲精品在线 | 亚洲一区尤物 | 毛片网免费 | 中文电影网| 精品国产一区二区三区久久 | 爱爱av在线 | 久久综合影音 | 精品国产一区二 | 玖玖爱在线观看 | 涩涩资源网 | 日韩精品久久久 | 久久综合九色综合欧美就去吻 | 黄色在线免费观看网站 | 国产激情电影综合在线看 | 亚洲香蕉在线观看 | 丁香国产视频 | 激情五月播播久久久精品 | 日韩一二三 | 五月天中文在线 | 久久久久久久久久久网 | 国产视频一| 在线之家官网 | 中文资源在线观看 | 国产色视频一区 | 国产色网| 中文网丁香综合网 | 日韩欧美在线影院 | 午夜影院在线观看18 | 日日干美女 | 开心色插| www欧美xxxx| 亚洲黄色在线观看 | 91av小视频 | 天天综合天天做天天综合 | 欧美日韩一区二区久久 |