久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MicrosoftAsia-Semantics-Aligned Representation Learning for Person Re-identification---论文阅读笔记和工程实现总结

發布時間:2024/1/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MicrosoftAsia-Semantics-Aligned Representation Learning for Person Re-identification---论文阅读笔记和工程实现总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給我一瓶酒,再給我一支煙,說code就code, 我沒的是時間
各位看官老爺,歡迎就坐觀看。
博主Github鏈接:https://github.com/wencoast

原理流程

摘要

就是去掉REID supervision后直接訓練SAN,然后把訓到的SAN(此時因為是用PIT訓練的所以叫SAN-PG), 從另外一個程序里導入,然后配合上網絡結構,從而生成pseudo groundtruth texture image for the reID datasets.

a decoder (SA-Dec) for reconstructing or regressing the densely semantics aligned full texture image. We jointly train the SAN under the supervisions of person re-identification and aligned texture generation(因為這個生成的合成紋理是對齊的. Moreover, at the decoder, besides the reconstruction loss, we add Triplet ReID constraints over the feature maps as the perceptual losses. 不僅僅是重構loss還有一個三元組REID約束。這個重構loss沒在pipeline圖里面體現。


然后,這是1_004_1_01.png_ep_1.jpg, 難道這就是回歸出來的最后的結果么,這要去查看代碼來驗證。

意思在于,讓語義對齊的載體來作為監督,然后讓學成的東西滿足語義對齊。

從這開始看:

一句話,同樣是表達學習,但是他這里能滿足在Re-ID任務中語義對齊。

In this paper, we propose a framework that drives the re-ID network to
learn semantics-aligned feature representation through delicate
supervision designs

提出了一個框架,一個驅動reID 網絡學習語義對齊的feature representation through 精細的監督設計。

build a Semantics Aligning Network (SAN)(怎么實現的,讓這個網絡就是語義對齊的網絡呢?) which consists of a base network as encoder (SA-Enc 語義對齊Enc) for re-ID[For re-ID的語義對齊編碼器], and a decoder (SA-Dec) for reconstructing or regressing the densely semantics aligned full texture image [語義對齊解碼器, 來重構和回歸密集語義對齊的全紋理圖像full texture image]

說明這個總的語義對齊網絡是由語義對齊的編碼器和語義對齊的解碼器組成的。編碼器和解碼器各有分工,怎么分工的呢?

經過幾個月的理解, Encoder負責提特征, decoder負責回歸出texture image然后進一步來改善reID feature.

以解決person re-identification的目地作為監督信號和對齊的texture generation作為監督信號,也就是under the supervision of person re-identification and aligned texture generation.

在decoder中,除了重構 reconstruction loss, 我們添加Triplet ReID constraints over the feature maps as the perceptual losses (作為感知loss). 在inference階段,decoder被discard, 從而實現了計算上更有效。消融研究確定了他們設計的有效性。

主要挑戰在于

large variation in

  • human pose
  • capturing view points
  • incompleteness of the bodies(due to occlusion)

而這些問題都會result in semantics misalignment across 2D images

什么是全紋理圖像?

什么是紋理圖像呢?

A texture image on the UV coordinate system represents the aligned full texture of the 3D surface of the person. 意思,在uv空間內獲得的紋理圖像表達人的3D surface的對齊的全紋理。 (因為人有通用的3D model) . 此外,Besides, a texture image contains all the texture of the full 3D surface pf a person.

不管來自哪個人,UV空間里紋理圖像的紋理信息是對齊的。

Note that the texture images across different persons are densely semantically aligned. Dense Pose就是用來從person images獲得dense semantics的. 合著本文用到的紋理圖像是用DensePose獲得的?

值得注意的是:用aligned texture image 來合成 person image of another pose or view不是MicrosoftAsia的創新點,這個工作是由FaceBook AI Research和Wang et al. 2019年時候做的。

  • 對于不同的人的input images, the corresponding texture images are well semantics aligned.
  • 在不同的texture image的相同空間位置上,語義是一樣的。
  • The person images with different visible semantics/regions, their texture images are semantics consistent/aligned since each one contains the ful texture/information of the 3D person surface
  • 在本文中,學到的特征表達,在本質上就是語義對齊的。

    為什么要用紋理圖像?

    • As the person identity is mainly characterized by textures.
      因為person identity 主要用texture來特定化,因為3D human model的話,對于人而言,是有通用模型的。而另外的話,對于人的動作和姿態,大家都會做出那些動作和姿態。最大的區別就是在于外觀上的紋理了,所以我覺得texture應該隸屬于appearance.
    • Texture images for different persons/viewpoints/poses are densely semantically aligned, as illustrated in the following Figure.
    • 對于不同person的輸入圖像,the corresponding texture image卻是well semantics aligned.
      • 首先,對于在不同texture image的相同空間位置,the semantics are the same. 該代表胳膊的地方都代表胳膊,該代表腿的地方都代表腿。
      • 其次, for person images with different visible semantics/regions, 對于具有不同區域或者不同語義的行人圖像,比如有的含完整上半身,有另外一張卻只含上半身不含腦袋,就算是這,他們的texture image也是語義對齊的,since each one contains the full texure/information of the 3D person surface.

    這不代表我那個就是包含full texture information of the 3D person surface的吧, 因為他們這個紋理圖像確實很全面的,感覺是個360度。

    他們也是把原圖作為輸入,但是他們用的模型SAN是在合成數據集上面訓練過的, 然后這個模型被用于來生成pseudo ground-truth texture image.

    那么問題就來了,如何在我目前的基礎上,來得到full texture information of the 3D person surface?


    我自己生成的是64×64,然后作者開源的是256×256的。

    首先,紋理圖像是產生于3D human surface, 而3D human surface又要依托于專門基于表面的坐標系,也就是UV space.


    3D human surface上的each position (u,v) 會在texture image上有unique semantic identity具有唯一語義標識,例如在texture image右下角的
    像素對應的是some semantics of a hand.

    此外,一個texture image 包含 all the texture of the full 3D surface of a person. 然而一個普通的2D person image只有一部分the surface texture.

    意思,texture是個360度,而普通2D person image只是某個視角,是這個意思么?

    the full 3D surface of a person, 這塊這個full具體什么意思?可以問問cena

    如何做的Pseudo Groundtruth Texture Images Generation?

    最奇怪的是: 明明只是由single image獲得的texture image,作者們怎么把這個稱為Pseudo Groundtruth Texture Images呢?

    For any given input person image, we use a simplified SAN (i.e., SAN-PG) which consists of the SA-Enc and SA-Dec, but with only the reconstruction loss. 這個reconstruction loss是不是只有encoder-decoder里才有的呢?

    是用的別的作者發布的本來3D scanned的紋理數據集 (SURREAL),再自己放上原input image, 合成一個a Paired Image Texture dataset (PIT)

    什么是語義對不齊(Semantic Misalignment)?

    • Spatial semantics misalignment 這個意思,雖然視角差不多,但是不同圖像相同位置卻對應著人體不同的語義(其實就是本質上是什么什么玩意?相對人而言,就是腿,肚子,胳膊什么的)。
      比如一個是腿,另一個卻是腹部。
    • Inconsistency of visible body regions/semantics 可以見到的語義都不一樣,比如: 一個看到的是front side的腿,而另一個卻是后面的腿。雖然都是腿,但是本質上語義壓根不一樣,一前一后的。從英文上看的話,意思一前一后of a person, 這樣的話語義就是不一致的。

    Alignment

    • Explicitly exploit human pose/landmark information (body part alignment) 但是body part alignment is coarse.
      而且在部分內within parts 仍然是對不齊的。
      There is still spatial misalignment within the parts.
    • Based on estimated dense semantics (什么意思?能估計到具體的對應人體什么屬性?)
      語義對齊的好處:
      To achieve fine-granularity spatial alignment (實現精細粒度的空間對齊)
      語義對齊的最早工作是來自Guler, Neverova的2018那篇么?

    Densely Semantically Aligned Person Re-Identification(CVPR2019)這篇的話

    思想是把原來語義上對不齊的圖像,wrap到規范的UV坐標系,然后這樣就獲得了語義對齊的圖像,意思是先獲得語義對齊的圖像,然后把這些densely semantics aligned images作為輸入, 再開展進一步的ReID任務?

    但CVPR2019這篇還有問題,問題是:

    the invisible body regions result in many holes in the warped images and thus the inconsistency of
    visible body regions across images,尚且還存在dense semantics misalignment的問題。

    Our work

    引入了一個對齊的紋理生成子任務,aligned texture generation subtask, 然后在此基礎上,with densely semantics aligned texture image 用的是不同于CVPR2019的, 這個多在texture上,這里是densely semantics aligned texture image.

    • Encoder

      SA-Enc can be any baseline network used for person reID.
      用于獲得feature map of size h×w×ch\times w \times ch×w×c 然后的話,應該會再拉成一維的。
      等下,應該是在拉成1D以前,先池化,在feature map上做average pool會得到the reID feature.
      然后應該是在獲得這個reID feature后后面跟著reID losses.

      為鼓勵SA-Enc來learn semantically aligned features, 本文引入SA-Dec并對SA-Dec做些設置.
      要求用SA-Dec在pseudo ground-truth supervision下來regress/generate the densely semantically aligned full texture image(為了簡化,有時候叫texture image).
      可見,這些semantics aligned texture image是由SA-Dec生成的. 然后的話,用的是合成的數據集來進行texture image generation的.

      怎么就引入和設置后就能實現語義對齊呢?

      因為的是: empowering the encoded feature map with aligned full texture generation capability。 感覺是先通過編碼器獲得reID feature, 然后通過Decoder在解碼的時候賦予上它對齊的紋理生成。

      語義對齊約束被引入是因為賦予編碼后的特征圖以對齊的完整紋理生成,感覺是因為紋理生成的這個對齊性才對齊的呢

    看來如何獲得這個紋理生成應該很重要。也就是看SA-Dec怎么工作。

    • Decoder For generating densely semantically aligned full texture image with supervision.

      At the SA-Dec, besides the reconstruction loss, Triplet ReID constraints over the feature maps as the perceptual metric.
      之前那是reID loss這塊這是reconstruction loss和Triplet ReID constraints.

    • ReID 數據集本身沒groundtruth aligned texture image, Generating pseudo groundtruth texture images by leveraging synthesized data with person image and aligned texture image pairs(這塊這個對齊的紋理圖像對哪來的呢?).
      之所以能這么干的原因,都是因為:Figure4, 即一個Texture image和一個3D mesh(person image)再加上background, 再利用上合適的rendering參數, 就生成synthesized person image 此時沒涉及解碼器,所以,應該生成的這個帶紋理的person image應該還不是語義對齊的。

    Related Work

    • Semantics Aligned Human Texture
      A human body could be represented by a 3D mesh(例如SMPL)和a texture image as illustrated in the following figure. 就像下面這個圖顯示的一樣,給定一個texture image,然后再加一個3D mesh, 就能通過rendering獲得那個人的person image.


    • 注意到: 沒說,2D圖像上的每一個點都有semantic identity, 而是說,3D mesh上的每個點都有唯一的semantic identity(這種唯一的標識使用UV空間里的(uv)坐標來表示的。)

    3. The Semantic Alignment Network

    在這個網絡里把,in which densely semantically aligned full texture images are taken as supervision to drive the learning of semantics aligned features.

    怎么做到的,怎么把另外一種信息用進來,并且作為監督的?

  • 怎么用進來?
  • 單獨地先生成texture image的文件夾,然后把它里面的紋理圖像通過下面的代碼讀入進來。

    img = read_image(img_path) img_texture = read_image(img_path.replace('images_labeled', 'texture_cuhk03_labeled'))

    然后讀進來以后,怎么再給網絡用呢?用下面的代碼:

    def __getitem__(self, index):return img, pid, camid, img_path, img_texture

    到這一步,已經進來了。接下來看看到底怎么來作為監督信號被使用的?

    下面這個圖就是框架圖,由一個為ReID編碼的編碼器,編碼器說白了就是一個network(encoder for ReID), 然后還有一個decoder sub-network, 有了這個SA-Dec才generating densely semantically aligned full texture with supervision. 啥意思? 真正把texture image作為監督是通過SA-Dec實現的,對么?

    model = models.init_model(name=args.arch, num_classes=dm.num_train_pids, loss={'xent', 'htri'})

    這是把在ImageNet上面預訓練的Resnet50(且FC512)作為architecture.

    注意看到這里的loss

    loss={set:2}{'htri','xent'} num_classes={int}767 # 這是和xent結合使用的。

    Encoder和Decoder怎么工作?

    解碼器a decoder SA-Dec which enforces constraints over the encoder, 解碼器居然是給編碼器施加約束,by requiring the encoded feature (編碼的特征,我還以為是解碼的特征呢) to be able to predict/regress the semantically aligned full texture image. 怎么解釋呢? 怎么做到的?

    在Decoder部分,channel數量在逐漸減少,從2048的input_channel到final_channel的16,然后2D內的size在不斷地增大。

    從這個圖也可以看出來,REID的特征向量f和網絡的FC不是一個玩意。FC才接ID loss, 然后之前的f直接接上Triplet loss, 為啥要接這個Triplet loss? 這里面這個Triplet loss在這怎么工作?

    Encoder怎么工作?

    好了,這個input image輸入進來后,通過Encoder for ReID----編碼器for ReID其實就是得到REID的feature vector能夠在pooling后(更具體的是:對encoder的最后一層的feature map進行average pooling)得到這個ReID用的feature vector,疑問在于:那么的話,REID這個feature vector和FC是一個東西么? 應該不是吧? 然后的話,這個監督網絡參數是用的ReID loss, 說白了就是cross entropy.


    回答上面自己的疑問,感覺應該不是一個東西,因為:

    保存在self.global_avgpool和保存在self.fc里的顯然是兩個不一樣的東西

    那這塊這個Triplet Loss 的作用呢? 就是the ranking loss of triplet loss with batch hard miniing.

    Decoder怎么工作?

    注意看的Loss就是: LRecL_{Rec}LRec?


    A decoder 形成以密集語義對齊的全紋理圖像進行的監督。

    然后就是解碼器,解碼器緊接著被添加(接著the last layer of the SA-Enc),就是為了在偽groundtruth texture image的約束下,讓SA-Dec來重構或者回歸出densely semantically aligned full texture image(這么看的話,好像再回歸出來的長成另外一個樣子,確實應該不是一個東西。然后的話,回頭可以打印出來顯示下). 這相當于是用cuhk03的偽groundtruth texture image來做監督學習,比著樣子學出來的感覺。

    確實有還比著生成的texture image, 而且是通過最小化它和pseudo texture image的L1距離而得到的。

    我們可以看出,作者專門為這個decoder工作部分寫了個Class

    輸入咋就是2048么? 不是說緊緊地接著the last layer of the SA-Enc么?而last layer不是應該為512嘛?


    而且是先有一個UNet structure:(難道說的意思是:decoder的架構用U-Net而不是ResNet?)

    緊接著還有如下別的類似的描述網絡結構的東西:


    我們可以看到,

    這塊還有個Triplet , 之前那個叫Triplet Loss,然而這個叫做Triplet ReID Constraints (LTRL_{TR}LTR?).

    In the SA-Dec, Triplet REID constraints are further incorporated at different layers/blocks as the high level perceptual metric to encourage identity preserving reconstruction

    這個不是僅僅接在最后的,而是在每個layers和blocks都用,還沒在代碼上找到對應,因為這部分的代碼在train那個函數里,而不是放在對Loss函數定義的py文件里。

    因為它是高級的perceptual metric,得以確保更加保持identity的重構。一樣的盡可能近,不一樣的盡可能遠。

    可以認為這是Encoder和decoder里的那個重構loss。 會進一步影響到重構出來的東西的好壞。

    作為鼓勵保留身份重建的高級感知指標

    ====

    這塊Triplet ReID Constraints的作用是讓每個identity的,也就是自己和自己的更近,自己和別人的更遠,從而達到自己的真是自己,也就是說是保持identity的reconstruction. 保identity的reconstruction. 然后這塊這個Reconstruction loss也就是其實就是minimize L1 differences between the generated texture image(應該是帶人的,而不是那個惡心的texture image) and its corresponding(pseudo groundtruth texture images)

    然后的話,這塊在解碼器這還有個loss, 是為了讓編碼器繼承讓不同的identity更可分

    是什么意思? 用這個loss來最小化同類特征的L2 difference然后最大化不同類的特征的差異。

    生成的紋理過程。

    工程實現

    dm = ImageDataManager(use_gpu, **image_dataset_kwargs(args)) # dm是數據管理器。 dm = ImageDataManager(use_gpu, **image_dataset_kwargs(args))

    image_dataset_kwargs是為ImageDataManager服務的一個函數,而ImageDataManager是data_manager.py里面定義的一個類。這就得看這個類以什么作為輸入,并且以什么作為輸出了。

    class ImageDataManager(BaseDataManager): """ Image-ReID data manager """

    更加具體的:

    class ImageDataManager(BaseDataManager):"""Image-ReID data manager"""def __init__(self,use_gpu,source_names,target_names,root,split_id=0,height=256,width=128,train_batch_size=32,test_batch_size=100,workers=4,train_sampler='',num_instances=4, # number of instances per identity (for RandomIdentitySampler)cuhk03_labeled=False, # use cuhk03's labeled or detected imagescuhk03_classic_split=False # use cuhk03's classic split or 767/700 split):

    在深入ImageDataManager之前,先康康image_dataset_kwargs函數。

    def image_dataset_kwargs(parsed_args):"""Build kwargs for ImageDataManager in data_manager.py fromthe parsed command-line arguments."""return {'source_names': parsed_args.source_names, # {list:1}['cuhk03'] 意思只處理cuhk03一個數據集'target_names': parsed_args.target_names, # {list:1}['cuhk03'] 意思處理哪個就將其對應保存出來。所以還是cuhk03. 'root': parsed_args.root, # {str}'/project/snow_datasets/Re_ID_datasets/data' 這是存放cuhk03及其他數據集的上一級目錄。'split_id': parsed_args.split_id, # 0 split index (note: 0-based) 從0開始的split index 具體在哪里其作用呢?'height': parsed_args.height, # 256 這是什么的尺寸? 圖像的默認高度'width': parsed_args.width, # 128 圖像的默認寬度,但是re-id數據都不是這些尺寸啊'train_batch_size': parsed_args.train_batch_size, # 4'test_batch_size': parsed_args.test_batch_size, # 4 'workers': parsed_args.workers, # 4 'train_sampler': parsed_args.train_sampler, # 'RandomIdentitySampler' 好像是往出選identity而不是identity確定后隨機選樣本'num_instances': parsed_args.num_instances, # 4 number of instances per identity (for RandomIdentitySampler)'cuhk03_labeled': parsed_args.cuhk03_labeled, # True'cuhk03_classic_split': parsed_args.cuhk03_classic_split # True 但是Lan他們的項目里用的是new split protocal(767/700)}# 這個函數的輸入是解析出的args. 實參就是main.py里的args.# 這個函數的輸出是:將解析出的args某些key和value返回出來。==后來我把--cuhk03_classsic_split給刪除掉了, 然后再次傳給**kwargs的時候就相當于里面的cuhk03_classsic_split=False. image_dataset_kwargs這個函數里面的return里面的項決定了kwargs的實際的可變長度。==模型上的每個點,哪個點是可見的,并且對應模型到這一步,只要能通過模型得到densepose.

    先用CUHK03(labeled)

    數據集統計:

    • 分割方式:767/700
    • 涉及identity數目:843+440+77+58+49 第一個到第五個攝像機組的所有數據都用上

    query={list:1400} {要查找的}list里面的每個元素都是一個image, 然后格式如下:['/project/snow_datasets/Re_ID_datasets/data/cuhk03/images_labeled/1_003_1_01.png', 3, 0]
    文件名的命名規則:
    第一個數字:代表拍攝的攝像機組的編號,這意思是第一組
    第二個由三個數組成的數據: 代表identity的編號,因為每個攝像機組獲得的identity都不會超過843,所以三位數就夠了。
    第三個數字:代表攝像機組里的1號相機或者2號相機
    第四個數字:代表這個人的第多少張圖像,最多10張(從1到10).
    ————————————————
    版權聲明:本文為CSDN博主「貝勒的杭蓋VanDebiao」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
    原文鏈接:https://blog.csdn.net/HeavenerWen/article/details/106248257
    剩下的3和0的意義:
    3應該代表的是那個攝像機組下更具體的Identity的編號。 剛好和1_003_1_01.png里面的3是一個玩意。
    0應該代表0方向還是1方向,因為每個組里有2個相機。0可以認為是拍側向的那個相機,1可以認為是拍背面那個相機。

    gallery={list:5332} {所有的}list里面的每個元素都是一個image,

    Gallery集的例子

    query集的例子

    從這個Query集合的例子可以看出的是:在這里的Query集里,每個identity共有2個圖像,分別來自0號和1號相機,也就是一個側向和一個背向。而且怎么感覺都是第二張和第八張?是為了保障兩個方向的樣本都能被取到而作為query樣本么?

    num_gallery_cams={int}2 num_query_cams={int}2 num_train_cams={int}2


    這塊有一堆json,這些json是根據程序和用的數據集自動生成的,如果換成別的數據庫的話,不知道還能不能正常生成。


    看看訓練圖像的這個格式,我們知道訓練的identities是767個,這767個身份類別在測試時候都是沒見過的。

    1. ['/project/snow_datasets/Re_ID_datasets/data/cuhk03/images_labeled/1_001_1_01.png', 0, 0] 2. ['/project/snow_datasets/Re_ID_datasets/data/cuhk03/images_labeled/1_001_2_06.png', 0, 1] 3. ['/project/snow_datasets/Re_ID_datasets/data/cuhk03/images_labeled/1_002_1_01.png', 1, 0] 4. ['/project/snow_datasets/Re_ID_datasets/data/cuhk03/images_labeled/1_002_2_06.png', 1, 1] 5. ['/project/snow_datasets/Re_ID_datasets/data/cuhk03/images_labeled/1_004_1_01.png', 2, 0] 6. ['/project/snow_datasets/Re_ID_datasets/data/cuhk03/images_labeled/1_004_2_06.png', 2, 1] # 這次的話,第二個item代表的應該是:767個ids的從0到766的label. **沒錯的,我檢查過了,確實是0到766** # 然后的話,第三個item代表的應該是: 0側向攝像頭還是1背向攝像頭。

    訓練集合中的樣本示例

    可以看出來,在他們這種測試協議下,5個攝像頭組的數據都用到了。

    pid += self._num_train_pids pid = pid + self._num_train_pids = 0 + 0 = 1 + 0= 2 + 0 # 查看self發現num_train_pids等于0.

    然后我們看到了,在運行到self._num_train_cams += dataset.num_train_cams這句話的時候吧,我們知道,最后的self.train就變成下面這個樣子了。


    我們可以看出來最后是相當于img_path, pid, camid組合在一起的。然后,實際的訓練到現在還沒開始,不但實際訓練沒開始,連訓練數據的導入還沒開始,真正的把訓練數據導入進去是從下面開始的

    if self.train_sampler == 'RandomIdentitySampler':self.trainloader = DataLoader(ImageDataset(self.train, transform=transform_train), # ImageDataset 來自 from .dataset_loader import ImageDatasetsampler=RandomIdentitySampler(self.train, self.train_batch_size, self.num_instances),batch_size=self.train_batch_size, shuffle=False, num_workers=self.workers,pin_memory=self.pin_memory, drop_last=True)

    這里面的最重要的函數就是DataLoader,是在開頭導入的,from torch.utils.data import DataLoader.

    這個是pytorch的類,

    pytorch document里的DataLoader


    結合pytorch的類的官方API,我們發現dataset = ImageDataset(self.train, transform=transform_train). 然而,這里的又出來個ImageDataset. 這和ImageDataManager感覺很像啊,有點傻傻分不清的感覺。

    from .dataset_loader import ImageDataset # ImageDataset有是一個類。 # 更準確地將應該是ReID訓練集專用的類 class ImageDataset(Dataset):"""Image Person ReID Dataset"""def __init__(self, dataset, transform=None):self.dataset = datasetself.transform = transformself.totensor = ToTensor()self.normalize = Normalize([.5, .5, .5], [.5, .5, .5])def __len__(self):return len(self.dataset)def __getitem__(self, index):img_path, pid, camid = self.dataset[index]img = read_image(img_path)# Add by Xin Jin, for getting texture:img_texture = read_image(img_path.replace('images_labeled', 'texture_cuhk03_labeled'))if self.transform is not None:img = self.transform(img)img_texture = self.normalize(self.totensor(img_texture))return img, pid, camid, img_path, img_texture

    可以把這個類看作如下:

    class ImageDataset():"""Image Person ReID Dataset"""def __init__(self, dataset, transform=None):self.dataset = datasetself.transform = transformself.totensor = ToTensor()self.normalize = Normalize([.5, .5, .5], [.5, .5, .5])def __len__(self):return len(self.dataset)def __getitem__(self, index):img_path, pid, camid = self.dataset[index]img = read_image(img_path)

    然后再結合:dataset = ImageDataset(self.train, transform=transform_train), 我們可以看出

    self.dataset = dataset = self.train self.transform = transform_train # 同時為這個self(也就是屬于ImageDataset類的實例,更準確地說應該是ReID訓練集專用的類)生成兩屬性 # 也就是: self.totensor = ToTensor() self.normalize = Normalize([.5, .5, .5], [.5, .5, .5])

    然后就該到哪一步了,該到利用__getitem__得到對應的單個image的sample. 同時在這步驟中加入合成紋理。我應該看看論文,他們怎么描述的對這個紋理的獲取和應用。

    if self.transform is not None:img = self.transform(img) # 對原圖進行transform操作img_texture = self.normalize(self.totensor(img_texture)) # 對紋理圖像進行normalize操作,在normalize操作之前,先轉化成tensor, 我們保留這個normalize操作不變。 return img, pid, camid, img_path, img_texture

    然后, 就到了DataLoader的第二個參數 sampler,

    sampler=RandomIdentitySampler(self.train, self.train_batch_size, self.num_instances)

    這里的RandomIdentitySampler是個從下面導入的類

    from .samplers import RandomIdentitySampler

    這個類的具體信息:

    class RandomIdentitySampler(Sampler):"""Randomly sample N identities, then for each identity,也是要選N個pit的identitiesrandomly sample K instances, therefore batch size is N*K. # 然后,每個identity選取k個 instanceArgs:- data_source (list): list of (img_path, pid, camid).- num_instances (int): number of instances per identity in a batch.- batch_size (int): number of examples in a batch."""

    然后這個類的實際功能是決定一個batch具體怎么得來。

    def __init__(self, data_source, batch_size, num_instances):self.data_source = data_sourceself.batch_size = batch_size # 訓練和測試的batch_size都是4。 對PIT這是64.self.num_instances = num_instances # 如下面定義,是每個identity選取的實例的數目。對PIT, num_instance還是4。self.num_pids_per_batch = self.batch_size // self.num_instances # 每個batch里面的identity的數量 # 然后就是64/4=16.# 因為batch里面總sample數目= 每個identity取多少個instance*多少個identity.# 那么,這樣的話,4/4=1. # 那如果把batch_size改成64的話呢, 那么就是64//4 = 16. 也就是一個batch里處理涉及16個identity. 但不能說明# 不能說明就會涉及這16個pid的每個identity的9/10張圖像self.index_dic = defaultdict(list)for index, (_, pid, _) in enumerate(self.data_source):self.index_dic[pid].append(index)self.pids = list(self.index_dic.keys()) parser.add_argument('--num-instances', type=int, default=4,help="number of instances per identity")

    接下來就到了一個很關鍵的地方defaultdict:

    from collections import defaultdict # 這是在用python的官方庫

    我們再看看另外一個,另外一個在SANPG里面的RandomIdentitySampler

    python3.7官方API解釋


    什么是containner datatype呢?

    先不關注這個細節, 先看看這個defaultdict什么作用呢? 為什么涉及defaultdict呢,因為It gets more interesting when the values in a dictionary are collections (lists, dicts, etc.) 當字典中的值是集合(列表,字典等)時,它會變得更加有趣。

    defaultdict: dict subclass that calls a factory function to supply missing values dict子類,調用工廠函數以提供缺失值

    對factory函數的解釋

    Quora對python factory function的解釋

    具體怎么使用以及defaultdict的工作原理的解釋

    解釋defaultdict的博客

    剛剛通過defaultdict(<class 'list'>, {})那句代碼self.index_dic = defaultdict(list)得到的index_dic

    index_dic={defaultdic:0}defaultdict(<class 'list'>, {})

    In this case, the value (an empty list or dict) must be initialized the first time a given key is used. While this is relatively easy to do manually, the defaultdict type automates and simplifies these kinds of operations.

    當字典中的值是集合(列表,字典等)時,它會變得更加有趣。在這種情況下,必須在首次使用給定鍵時初始化該值(一個空列表或字典)。 盡管這相對容易手動完成,但是defaultdict類型可以自動執行并簡化這些類型的操作。

    defaultdict(<class 'list'>, {0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 1: [10, 11, 12, 13, 14]}) # 這意思,這個字典吧,字典中的值value是集合,所以會用到defaultdict.

    字典類型如下:

    defaultdict(<class ‘list’>,)# 指明哪類集合

    字典如下:

    {0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 1: [10, 11, 12, 13, 14]}

    key如下:

    0 1

    value如下:

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14]

    理解到現在這個程度的話,對接下來理解程序已經足夠了?;仡^再細細研究defaultdict更具體的東西。

    self.pids = list(self.index_dic.keys()) # 這句代碼得到的是: pids={list:767}[0, 1, 2, 3, ..., 766] # 說明是在所有的id里面采樣

    我們看到__iter__函數了. 先不深入研究這部分代碼,如果沒對圖像進行特別處理的話,先忽略這部分。

    def __iter__(self):batch_idxs_dict = defaultdict(list) # 同樣的方法,討論一個batch時候的情形for pid in self.pids:idxs = copy.deepcopy(self.index_dic[pid]) # python里面的賦值語句that do not copy objects, 而是在target和object之間創建綁定。不改變原來這個self.index_dic[pid].if len(idxs) < self.num_instances:idxs = np.random.choice(idxs, size=self.num_instances, replace=True)random.shuffle(idxs)batch_idxs = []for idx in idxs:batch_idxs.append(idx)if len(batch_idxs) == self.num_instances:batch_idxs_dict[pid].append(batch_idxs)batch_idxs = []

    For collections that are mutable or contain mutable items, a copy is sometimes needed so one can change one copy without changing the other.
    對于可變或包含可變項的集合,有時需要一個副本,因此一個副本可以更改一個副本而不更改另一個副本。

    copy.deep_copy的操作

    copy.deepcopy(x[, memo]) Return a deep copy of x.

    A deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the original. 深層副本將構造一個新的復合對象,然后遞歸地將原始對象中發現的對象的副本插入其中。

    Two problems often exist with deep copy operations that don’t exist with shallow copy operations:

    • Recursive objects (compound objects that, directly or indirectly, contain a reference to themselves) may cause a recursive loop.

    • Because deep copy copies everything it may copy too much, such as
      data which is intended to be shared between copies.

    然后的話,根據不同的train_sampler,我們會有兩種不同的self.trainloader.

    這代碼寫得還是很不錯的,這相當于對train數據組織完了,就到測試部分了。他們把對data(including train, test[query, gallery])都寫到一個py文件data_manager.py里.

    因為我現在是在訓練,所以涉及測試的部分會有如下顯示:

    當train phase時候,測試數據并不參與工作。

    但是,在又讀了一次cuhk03數據集后,

    for name in self.target_names:dataset = init_imgreid_dataset(root=self.root, name=name, split_id=self.split_id, cuhk03_labeled=self.cuhk03_labeled,cuhk03_classic_split=self.cuhk03_classic_split) #

    我發現testloader_dict內部的內容發生變化了。

    當train phase時候,又讀了一次數據后,query和gallery里面開始有東西。

    其中,query的情況:

    其中,gallery的情況:

    經過如下代碼:

    self.testdataset_dict[name]['query'] = dataset.query self.testdataset_dict[name]['gallery'] = dataset.gallery

    testdataset_dict也發生了變化.


    到這,才看到導數據(含train和test)完畢. 而且才是剛得到管理數據的對象dm,還沒真正執行導入。

    dm = ImageDataManager(use_gpu, **image_dataset_kwargs(args)) trainloader, testloader_dict = dm.return_dataloaders() # 為什么返回的是:testloader_dict而不是testdataset_dict

    trainloader

    有幾個數值相當重要:
    如:1492,7365,有空看看他們具體代表什么意義?

    這個trainloader相當的重要,因為在訓練時候就是用這個來組織的數據:

    訓練時候用到它的代碼顯示如下:

    for batch_idx, (imgs, pids, _, img_paths, imgs_texture) in enumerate(trainloader): # 我以為的batch_idx應該從0開始 確實是從0開始 # 我以為的imgs 就是原圖 不,實際為原圖的tensor才對 # 我以為的pids 就是涉及的那些identity的編號 我以為是一個數,但是實際為[556, 556, 556, 556]一個列表這種。 # 我以為的img_paths就是涉及到的樣本圖像的路徑,是多個絕對路徑字符串 # 我認為的圖像紋理,也就是同樣讀入進來的紋理圖像,不,實際為紋理圖像的tensor

    接下來的圖像不是我以為的,而是實際的(在batch_size=4的情況下)。

    然而imgs不代表是原圖,而應該是原圖的tensor, 而且維度是torch.Size([4, 3, 256, 128]). 這應該就是為啥他們提供的texture image的尺寸是256*256!



    從上圖來看的話,確實只是1個identity的4張圖像。

    同樣地,我們還有imgs_texture如下,尺寸為torch.Size([4, 3, 256, 256]):



    然后有一個_代表的意思就是前三個來自冊向相機,最后一個來自背向相機.


    還有幾個中間的tensor很重要,

    outputs, features, feat_texture, x_down1, x_down2, x_down3 = model(imgs)

    decoder部分同樣有幾個tensor很重要

    recon_texture, x_sim1, x_sim2, x_sim3, x_sim4 = model_decoder(feat_texture, x_down1, x_down2, x_down3)

    x_sim1, x_sim2, x_sim3, x_sim4是干啥的,后面有用沒?

    這邊最重要的肯定當然要屬recon_texure, 需要把outputs, features, feat_texture,recon_texture從tensor轉換為numpy的數組然后都保存出來,看看是什么樣子。尤其是feat_texture, recon_texture的樣子。因為目前他們的維度尚且是{size:4}的,所以還需要進一步的分解和操作。

    我們看看recon_texture, 它的維度是{size:4}torch.Size([4, 3, 256, 256]):


    然后,重構loss真正有作用的地方是:

    loss_rec = nn.L1Loss() loss_tri = nn.MSELoss() loss_recon = loss_rec(recon_texture, imgs_texture) # 用L1來約束recon_texture和imgs_texture之間的差距.

    但是,這也沒啥啊,也沒體現出來用到triplet啊, 只體現出為了重構的更好,用了L1

    # L1 loss to push same id's feat more similar: loss_triplet_id_sim1 = 0.0 loss_triplet_id_sim2 = 0.0 loss_triplet_id_sim3 = 0.0 loss_triplet_id_sim4 = 0.0

    這塊才是真正的再次用到triplet呢,這是重構部分用triplet的例子。

    for i in range(0, ((args.train_batch_size//args.num_instances)-1)*args.num_instances, args.num_instances):loss_triplet_id_sim1 += max(loss_tri(x_sim1[i], x_sim1[i+1])-loss_tri(x_sim1[i], x_sim1[i+4])+0.3, 0.0)loss_triplet_id_sim2 += max(loss_tri(x_sim2[i+1], x_sim2[i+2])-loss_tri(x_sim2[i+1], x_sim2[i+5])+0.3, 0.0)loss_triplet_id_sim3 += max(loss_tri(x_sim3[i+2], x_sim3[i+3])-loss_tri(x_sim3[i+2], x_sim3[i+6])+0.3, 0.0)loss_triplet_id_sim4 += max(loss_tri(x_sim4[i], x_sim4[i+3])-loss_tri(x_sim4[i+3], x_sim4[i+4])+0.3, 0.0) loss_same_id = loss_triplet_id_sim1 + loss_triplet_id_sim2 + loss_triplet_id_sim3 + loss_triplet_id_sim4

    具體怎么用,以及為啥用,暫時還沒時間寫,回頭有空會繼續跟進。

    首先outputs, 維度是torch.Size([4, 767]),這個767是啥的維度,是FC么,為啥是767:
    因為767是類別的總數。從這里可以看出來, 我們知道, outputs在這是個Tensor{Tensor:4}.說明這不在list或者tuple里面,所以這個isinstance返回個False.


    然后是features, 維度是torch.Size([4, 512]). features同樣也是個Tensor而不是元組或者列表.


    然后是feat_texture, 維度是torch.Size([4, 2048, 16, 8])


    然后是x_down1, x_down2, x_down3, 維度分別是torch.Size([4, 256, 64, 32]),torch.Size([4, 512, 32, 16]), torch.Size([4, 1024, 16, 8]) 這應該是對應于pipeline圖里的fe1f_{e1}fe1?,fe2f_{e2}fe2?,fe3f_{e3}fe3?

    然后最值得區分的就是outputs, features, feature_texture, 或者看看這個outputs到底在后面有用么,怎么用的?

    有用,cross entropy時候用的是outputs, 然后triplet用的features

    而且這塊這個return_dataloaders()這個函數吧,還是在data_manager.py里面用@property修飾過的函數。

    行人重識別中的warm up設置

    # warm_up settings:optimizer_warmup = torch.optim.Adam(model.parameters(), lr=8e-06, weight_decay=args.weight_decay, betas=(0.9, 0.999)) # 一個是優化器warmupscheduler_warmup = lr_scheduler.ExponentialLR(optimizer_warmup, gamma=1.259)# 這個是scheduler——warmup, 是不是進行學習率warmup, 一定要借助優化器warmup

    對于baseline的學習率一開始是一個很大的常量,而經過其他論文提出,Warm up的策略對于行人重識別的模型更加有效,具體是一開始從一個小的學習率經過幾個epoch后慢慢上升,如下圖紅色曲線部分, 而不是和藍色線一樣上來就很大的學習率:

    上面的圖像引用自那些板磚的日子的知乎

    這里的encoder和decoder是分開優化的

    因為本來我以為只有optimizer_encoder,

    optimizer_encoder = torch.optim.Adam(model.parameters(), lr=0.00001, betas=(0.5, 0.999))

    但其實不是的,還有單獨的decoder的優化部分:

    optimizer_encoder = torch.optim.Adam(model.parameters(), lr=0.00001, betas=(0.5, 0.999))

    有關打印的效果

  • 每10個batch打印一下,時間,Data, Loss,以及Loss_recon的具體數值.
  • Epoch: [1][10/1492] Time 0.281 (424.272) Data 0.0095 (4.4704) Loss 6.7790 (6.6711) Loss_recon 0.4306 (0.5146) Epoch: [1][20/1492] Time 0.282 (212.276) Data 0.0096 (2.2401) Loss 6.6996 (6.6891) Loss_recon 0.5033 (0.4998) Epoch: [1][30/1492] Time 0.277 (141.610) Data 0.0096 (1.4967) Loss 6.5957 (6.6648) Loss_recon 0.5269 (0.4921) Epoch: [1][40/1492] Time 0.277 (106.276) Data 0.0097 (1.1249) Loss 6.7289 (6.6543) Loss_recon 0.4795 (0.4902) Epoch: [1][50/1492] Time 0.287 (85.077) Data 0.0106 (0.9019) Loss 6.6434 (6.6531) Loss_recon 0.3934 (0.4831)

    為啥只是打印到這啊?

    Epoch: [1][480/1492] Time 0.285 (9.119) Data 0.0097 (0.1031) Loss 6.3775 (6.6790) Loss_recon 0.2461 (0.3105) Epoch: [1][490/1492] Time 0.280 (8.939) Data 0.0099 (0.1013) Loss 6.1843 (6.6781) Loss_recon 0.2337 (0.3099) Epoch: [1][500/1492] Time 0.284 (8.766) Data 0.0098 (0.0995) Loss 6.9592 (6.6812) Loss_recon 0.3021 (0.3084) Epoch: [1][510/1492] Time 0.279 (8.600) Data 0.0098 (0.0977) Loss 6.8927 (6.6811) Loss_recon 0.2927 (0.3065) Epoch: [1][520/1492] Time 0.286 (8.440) Data 0.0106 (0.0960) Loss 6.8176 (6.6848) Loss_recon 0.3276 (0.3054) Epoch: [1][530/1492] Time 0.287 (8.286) Data 0.0102 (0.0944) Loss 6.5900 (6.6861) Loss_recon 0.2101 (0.3042)

    關于訓練的細節,我們利用ResNet-50來構建我們的SA-Enc. 然后把用ResNet-50不帶decoder(帶ID loss和triplet loss)作為Baseline:

    這足夠實現RE-ID了,因為這就可以提取到RE-ID特征,然后后面加上cross-entropy從而形成分類器. 此外,還有Triplet loss的約束下,會讓模型把不同類拉得更開,回頭再用模型提取到特征。

    先訓SAN-PG

    為了提供the image pairs的目地,也就是the person image and its texture image, 我們合成了一個Paired-Image-Texture(成對的圖像紋理)數據集,不是說我們獲得了in total 9,290 different synthesized (person image, texture image) pairs. 不太對勁啊,我發現只有9290個person image啊,沒有9290個texture image啊。而是929種, 每一種可以對應在images文件夾里的10個圖。

    images: 9290 person images with different poses, viewpoints, and texture
    GT_texture: 929 kinds of texture, each texture corresponds to 10 person images that stored in images folder
    image-texture-label: save the correspondiing relationship of (person image, texture), which is used for person texture prediction/synthesis training.

    為了盡可能逼真real-world, 渲染用的background images是隨機從COCO數據集采樣的。

    紋理圖像不是512×512么,也不是256×256啊

    我們訓練the SAN-PG with 我們的synthesized PIT dataset. 用合成訓練SAN-PG(which consists of the SA-Enc and SA-Dec, but with only reconstruction loss).

    • 怎么導入呢?怎么導入PIT數據集?
    • 另外,怎么確保用的是SAN-PG的結構。
    • 因為用U-Net那個直接用的是預訓練模型,用的也是U-net的網絡,那直接看看沒用預訓練權重的unet架構啥樣。

    SAN-PG

    SAN-PG encoder

    用的什么網絡?

    用的ResNet(是不是50暫時還不確定),自己定義的包括3?33*33?3的卷積conv3x3,還有自己定義的3?33*33?3的去卷積deconv3x3, 去卷積里面用到的是Upsample, 感覺像是上采樣一樣將channel變小,將size變大。然后還定義了basic resnet block

    def deconv3x3(in_planes, out_planes, stride=1):return nn.Sequential(nn.Upsample(scale_factor=stride, mode='bilinear'),nn.ReflectionPad2d(1),nn.Conv2d(in_planes, out_planes,kernel_size=3, stride=1, padding=0)) # Basic resnet block: # x ---------------- shortcut ---------------x # \___conv___norm____relu____conv____norm____/ 這個是shortcut的組成, 指的是下圖這個結構。


    那BasicResBlock和ConvResBlock啥區別呢?

    ConvResBlock是那種最經典的帶2個conv layer的殘差塊. 然后,它的結構可以描述如下:

    #ResBlock: A classic ResBlock with 2 conv layers and a up/downsample conv layer. (2+1)
    #x ---- BasicConvBlock ---- ReLU ---- conv/upconv ----

    感覺意思是網絡由BasicResBlock, ConvResBlock共同組成。

    然后就是encoder怎么初始化,這里面涉及對loss的更改。

    model = models.init_model(name=args.arch, num_classes=dm.num_train_pids, loss={'xent', 'htri'}) # 如何修改這塊的xent和htri? # 應該是得把REID的監督移除掉!

    網絡的話和原來的SAN一樣,只是得把REID監督移除掉。with the reID supervisions removed.

    Given an input person image, the SAN-PG outputs predicted texture image as the pseudo groundtruth.

    這句話,讓我懷疑的建立的一一對應作為監督對么? SAN-PG的本意不是去利用合成數據然后生成偽紋理圖像么,怎么還拿偽紋理圖像作為監督呢?

    怎么初始化?

    SAN-PG decoder

    用的什么網絡?

    用到unet吧?是的,用的U-net做的decoder的architecture.

    # For UNet structure:self.embed_layer3 = nn.Sequential(nn.Conv2d(in_channels=1024, out_channels=512,kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(512),nn.ReLU(inplace=True))self.embed_layer2 = nn.Sequential(nn.Conv2d(in_channels=512, out_channels=256,kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(256),nn.ReLU(inplace=True))self.embed_layer1 = nn.Sequential(nn.Conv2d(in_channels=256, out_channels=64,kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(64),nn.ReLU(inplace=True))self.reduce_dim = nn.Sequential(nn.Conv2d(input_channel, input_channel//4, kernel_size=1, stride=1, padding=0), # 2048, 512, 1, 1, 0nn.BatchNorm2d(512),nn.ReLU(inplace=True)) # torch.Size([64, 512, 16, 8]) # 2048//4 = 512

    先是定義了 ConvResDecoder, 這個 ConvResDecoder被當作用于upsampling的convres block卷積殘差塊.
    為啥叫做上采樣呢,感覺應該是從一個向量feature再變成一個圖像,所以叫做上采樣吧。 難道這是經過上述u-net后的最后所得么? 寬和高是分別是64,512,16是channel,8是啥?torch.Size([64, 512, 16, 8])

    # 其中up代表要得到更大的圖像 self.up1 = ConvResBlock(512, 256, direction='up', stride=2, norm_layer=nn.BatchNorm2d, activation_layer=nn.ReLU(inplace=True)) # torch.Size([64, 256, 32, 16]) self.up2 = ConvResBlock(256, 64, direction='up', stride=2, norm_layer=nn.BatchNorm2d, activation_layer=nn.ReLU(inplace=True)) # torch.Size([64, 64, 64, 32]) self.up3 = ConvResBlock(64, 32, direction='up', stride=2, norm_layer=nn.BatchNorm2d, activation_layer=nn.ReLU(inplace=True)) # torch.Size([64, 32, 128, 64]) self.up4 = ConvResBlock(32, 16, direction='up', stride=2, norm_layer=nn.BatchNorm2d, activation_layer=nn.ReLU(inplace=True)) # torch.Size([64, 16, 256, 128])

    上面代碼段中的torch.size分別代表什么意思? torch.Size([64, 16, 256, 128])各個維度分別代表什么意思?

    怎么初始化?

    PIT數據集的處理

    如何把這個數據集的images文件夾和GT_texture建立聯系?


    然后在程序上怎么實現出這種對應呢?

    我們現在有的是00000到00001到00002,…, 到00009. 然后每十個對應前面的10行

    可以先整體10行讀出一個子集,然后子集的[0][1][2]對應給0到9。

    應該是這樣的,從這個txt文件里逐行讀取,然后后面對應的圖像在路徑上加1.

    args里的height和width怎么在程序工作的? 在哪塊工作的?

    我想的是,仍然按照之前REID數據的組織和導入形式往進導入PIT,然后寫個文件的操作把重構的紋理約束關聯起來

    先把PIT的images導入進來再說,還是同樣得有隨機性,

    經過查看,經過查看原來作者的代碼,我們知道,我們不關心怎么從mat把數據存儲到label或者detect文件夾,而是關注把弄好的數據怎么輸入到模型.

    def _extract_img(name):print("Processing {} images (extract and save) ...".format(name))meta_data = []imgs_dir = self.imgs_detected_dir if name == 'detected' else self.imgs_labeled_dirfor campid, camp_ref in enumerate(mat[name][0]):camp = _deref(camp_ref)num_pids = camp.shape[0]for pid in range(num_pids):img_paths = _process_images(camp[pid,:], campid, pid, imgs_dir)assert len(img_paths) > 0, "campid{}-pid{} has no images".format(campid, pid)meta_data.append((campid+1, pid+1, img_paths))print("- done camera pair {} with {} identities".format(campid+1, num_pids))return meta_data

    _extract_img和_process_images都是服務于把圖像從mat里提取出來并且命名的,這不是我重點考慮的部分。

    這塊這個_extract_img里的這個self.imgs_detected_dir到這句代碼時候還是空白的目錄,里面還沒有文件呢.然后正打算逐個攝像機組的往出extract和save圖像呢.

    for pid in range(num_pids):img_paths = _process_images(camp[pid,:], campid, pid, imgs_dir)

    這句話得到的這個img_paths是啥? 是一個還是多個?


    main的pid好像是從1開始

    我的pid好像是從0開始

    所有和query和gallery有關的沒用的代碼都刪除掉,這樣的話,得到一個干凈版本的,模型和SAN一樣的SAN-PG.

    下圖是SAN-PG情形.

    下圖為main情形.

    不同的重構 Different Reconstruction Guidance

    reconstruct時候是肯定重構的,那么REID SAN時候也往出重構么?

    往出重構,因為the addition of a reconstruction subtask helps improve the reID performance which encourages the encoded feature to preserve more original information是為了讓encoded feature保持更多原始信息。所以原來的SAN里就是帶reconstruction的.

    從Table2可以得知:得知到什么呢,得知到:CUHK03時候也是reconstruct而且也試過reconstruct input和pose(pose這個是在生成PIT時候也生成這么個pose aligned person image數據庫),以及PN-GAN(也是用來生成pose aligned person image的方法),但是,都沒有重構texture好。但是他試驗的都是Loss reconstruction, loss REID, Triplet loss組合下的。

    研究the effect of using different reconstruction guidance并且在Table2中顯示不同的結果,意思就是the same encoder-decoder網絡(但是這個網絡是SAN-basic,這里的basic指的啥,指的是用,Loss reconstruction, loss REID, Triplet loss),但是三個重構目標:

    • reconstructing the input image
    • reconstructing the pose aligned person image
    • reconstructing the texture image

    注意:

    To have pose aligned person image(首先得有這個pose aligned person image) as supervision, during synthesizing the PIT dataset, for each projected person image, 說白了就是在合成PIT數據集的時候,我們也synthesized a person image of a given fixed pose (frontal pose here). 合成時候是在PIT合成的時候同時做的,合成方法是根據下圖。


    這種pose aligned person image是語義對齊的(不光只有紋理圖像才是對齊的),那得到這種pose aligned person image的程序也同樣沒開源啊。

    這種重構同樣也是只有部分紋理被保留,而且他們也指出這確實存在information loss。


    這種情況下,只有partial texture(front body regions) of the full 3D surface texture is retained(保留保持) with the information loss. 這是說在得到這種pose aligned person image時候,怎么搭配loss從而保留你想要的信息。 也就是partial texture(front body regions). 然后不只用了他們合成的pose aligned person image. 還用了別人PN-GAN生成的pose aligned person image.

    4. Experiment

    4.1 Datasets and Evaluation Metrics

    4.2 Implementation Details

    4.3 Ablation Study

    SAN-basic到底是啥樣的網絡啊? 表格里整理過了. ResNet50+ConvResDecoder

    一共涉及多少個網絡類型? 六個

    是不是每個網絡都是有encoder和decoder然后encoder都是用的resnet50? 不是每個都有decoder, 有沒有Decoder就是看有沒有decoder部分的loss.

  • Baseline(ResNet-50) 這個的意思難道是沒有decoder? 就是沒有decoder.
  • SA-Enc(ResNet50), REID loss, triplet loss 對的,沒有decoder(因為沒triplet約束和reconstruction). 有沒有decoder可以理解有有沒有Loss,或者loss是不是0.

    我訓練時候, 是用那兩個loss訓的么? 不是的,我帶了triplet約束和reconstruction. 跑出來的結果和baseline一樣,但是我好像不是真的baseline,而是4個loss都帶。

    我確定,我訓練的時候后邊那兩個loss是帶著的!!!!!!!!!!!!!??????

    the last spatial down-sample operation in the last Conv layer is removed
    說的是Resnet50里面的最后一個Conv層最后的空間下采樣操作被removed.不是說的decoder的事。


    說的是這個decoder(SA-Dec)就是通過4個殘差上采樣block形成的,這個SA-Dec部分的參數只是SA-Enc(Resnet50)的三分之一。

    這沒說baseline那個算法涉及SA-Dec.

    來自論文的原文描述,We also take it as our baseline(Baseline) with both ID loss and triplet loss.

    最起碼的就是,你得知道你每次訓的都使用了哪些個loss吧,這個實驗最重要的不就是取決于loss的設置么?

  • SAN-basic
    trained with the supervision of the pseudo groundtruth texture images with(因為REID數據是沒有掃描得到的真實的紋理的,所以這個叫做pseudo groundtruth texture images)
  • Loss reconstruction, loss REID, Triplet loss

  • SAN-PG

  • Loss reconstruction, 0 loss REID, 0 Triplet loss,

  • SAN w/LTRw/L_{TR}w/LTR?

  • Loss reconstruction, loss REID, Triplet loss, Triplet ReID Constraints

  • SAN w/syn.dataw/syn. dataw/syn.data

  • 用PIT數據集,但是Loss組成如下:

    Loss reconstruction, loss REID, Triplet loss

  • SAN

  • 用PIT數據集,也用 Triplet ReID Constraints,所以Loss組成如下:

    Loss reconstruction, loss REID, Triplet loss, Triplet ReID Constraints

    Loss的設置

    對于main.py:

    我們知道:

    對于main.py的程序,

    對于SAN-PG.py:


    在現在不確定的情況下,先試試這個. 然后另外一種可能就是,設置λ\lambdaλ的組合.


    該去探究,探究下為什么會生成這些圖片,這些圖片真的很莫名其妙。


    想知道怎么把pth.tar給用上. 這應該就會關乎到到底打開SAN的哪個Flags開關?

    另外就是得確定我的SAN-PG的輸入和輸出是和論文說的SAN-PG一樣。

    如何獲得SAN-PG

    只需要把loss保留一個就是SAN-PG。然后,至于生不生成pseudo groundtruth, 那都是后話了。 然后把這個得到的checkpoint權重作為初始化SAN的權重,重新訓練SAN。

    先研究怎么把pretrained weights of SAN-PG給SAN用上吧

    • 論文SAN-PG輸入: REID行人圖像
    • 論文SAN-PG輸出: 讓人誤以為是紋理圖像。但是紋理圖像不是被用來作為監督了么?the SAN-PG outputs predicted texture image as the pseudo groundtruth. 應該就是為了得到權重,然后再用上generate_texture.py那個腳本,那網絡可能也得有個代碼。先不管,因為我們確實先有了SAN-PG的權重了。
    • 我自己SAN-PG輸入: PIT數據
    • 我自己SAN-PG輸出:SAN-PG權重和regress the semantically aligned full texture image.

    我訓練300epoch regress出的結果例子:

    那300epoch那個得訓練一天以上的感覺。

    訓練日志



    我查看過了,args.print_freq就是10。也就是每個10個batch打印一次。

    [1][10/232] 1代表第多少epoch, 10代表第1個batch_size為10的batch. 232代表trainloader的長度.

    232是len(trainloader)
    batch_time = AverageMeter() 這個不太重要
    data_time = AverageMeter() 這個也不太重要
    Loss = losses 重要 因為我把兩個lambda都設置為了0,所以這個的值確實應該都恒等于0
    Loss_recon = losses_recon才是真正最值得關注的Loss

    我們可以知道的是:

    Loss的變化情形:

    loss_rec = nn.L1Loss()

    Creates a criterion that measures the mean absolute error (MAE) between each element in the input x and target y. 平均絕對誤差(MAE), 每個元素的平均絕對誤差,這個是怎么定義的.

    SAN300EPOCH Loss的情形

    EPOCH1到10 從36.3492到9.2652

    • 36
    • 32
    • 28
    • 23
    • 22
    • 21
    • 17
    • 13
    • 16
    • 23
    • 14
    • 15
    • 12
    • 15
    • 12
    • 16
    • 9
    • 10
    • 12
    • 10
    • 7
    • 5
    • 7
    • 5
    • 10
    • 2
    • 7
    • 7
    • 5
    • 8
    • 5
    • 5
    • 7
    • 5
    • 6
    • 7
    • 7
    • 5
    • 3
    • 9
    • 2
    • 5
    • 3
    • 6
    • 3
    • 5

    以上是前11個EPOCH的數據??梢钥吹竭@loss變動還是很大的,從最小的2到最大的36。

    EPOCH11到20 從2.3651到

    關于調參

    我們知道,交叉熵損失的下確界是0,但是永遠都不可能達到0

    因為要達到0,那么所有的預測向量分布就必須完全和真實標簽一致,退化為獨熱編碼. 但是,實際在神經網絡中,經過了softmax層之后,是不可能使得除了目標分量的其他所有分量為0的。因此,Cross entropy永遠不可能達到0的,正是因為如此,交叉熵損失可以一直優化,這也是它比MSE損失優的一個點之一。

    不收斂

    不收斂是個范圍很大的問題,有很多可能性:

    • 學習率設置過大了
    • 可能是因為我把label-smooth給去掉了
    • 還有就是:我把-t的FLAG給去掉了
    • 還有就是FrankZhu說的可能是因為沒對應上。
    • 可能性5

    學習率設置太大

    太大的學習率將會導致嚴重的抖動,使得無法收斂,甚至在某些情況下可能使得loss變得越大直到無窮。

    **

    • 還是沒怎么降低,所以,明天看下reconstruction的結果

    確定Loss的故障與否

    這是wht程序乘以10后的loss。

    這是wht程序去掉乘以10后的loss。


    我現在要弄明白wht程序的cuhk03到底管用還是不管用?或者壓根就是-s,-t都是寫在那,但是卻沒用過的。

    確定對應關系

    在MicroAsia的原代碼里:

    class ImageDataset(Dataset):"""Image Person ReID Dataset"""def __init__(self, dataset, transform=None):self.dataset = datasetself.transform = transformself.totensor = ToTensor()self.normalize = Normalize([.5, .5, .5], [.5, .5, .5])def __len__(self):return len(self.dataset)def __getitem__(self, index):img_path, pid, camid = self.dataset[index]img = read_image(img_path)# Add by Xin Jin, for getting texture:img_texture = read_image(img_path.replace('images_labeled', 'texture_cuhk03_labeled'))if self.transform is not None:img = self.transform(img)img_texture = self.normalize(self.totensor(img_texture))return img, pid, camid, img_path, img_texture 調試:1. 從第0個batch,因為Loss是按照Batch更新的??匆幌?#xff0c;看重構loss是不是0.6, 但開始必須是0.6. 然后可以從0.6開始, 因為別的loss的引入可以從0.6升到13 因為REID loss會影響它。 2. baseline是這樣的,沒decoder. 你是這么訓的么,沒訓。 3. 4.

    你有沒有加了別的loss以后,沒效果是不?沒試,主要在搞SAN-PG

    我好像沒跑basic. 就是把另一個設為0,留著剩下3個。

    cena:你做到哪一步?
    我:做到第二個。
    cena: 你之前沒預訓練,你直接把所有loss加上一點提升都沒有是吧?
    我:你得知道你到底跑的哪個啊
    cena: 之前你只跑baseline,后面那些Loss一個都沒加?
    我:我沒試試加loss,減loss影響。
    cena: 所有Loss都加上你跑了么?人家原文里加了,你為啥沒加? 有constraint的代碼?
    我:我說好像我沒加constraint(但是其實我加了).

    我:

    我跑的版本:交叉熵(確定), triplet(確定), constraint, recon。
    我沒跑的版本:baseline只帶前兩個。
    我得到的結果跟baseline差不多,但是我用了四個Loss,只是結果差不多。

    cena: baseline你也跑了是吧?baseline你跟原文差不多,是吧?

    cena

    你得先跑下baseline, 你把baseline也跑下,然后看看相比baseline什么變化?
    萬一加上有效果,只是baseline很低呢?好建議
    加兩個如果沒提升,說明后面那兩個沒用。加兩個提升很大,說明后面兩個作用很大。

    沒加第三個?后面那些Loss一個都沒加,

    • 首先,確定之前訓練的用的哪些loss,做個表格
    • 不加兩個loss的baseline和加上兩個loss的decoder. 說明沒用或者有問題。相當于把table 1實驗做一下。

    程序解析

    Optimizer:

    分為

    • 正常訓練時候的optimizer, 正常訓練反向傳播算梯度的那個
    • 然后warmup時候的optimizer

    學習率規劃器

    分為

    • r_scheduler.MultiStepLR的300個epoch里到了自動變化那種
    • lr_scheduler.ExponentialLR是warm_up階段如何進行學習率的變化。


    close_specified_layers(model, ['fc','classifier'])

    我們知道:在關閉前,含fc和classifier的部分內容如下:


    這是數據的結構,但是看不到數據內容啊。不重要,不用看到,可以確定數值也沒再更新。

    因為如下代碼:


    給我的感覺是,那這兩個被固定的部分內容不再變化,但是沒固定的,那些層的權重參數就會發生變化。所以,確實會因為后面再加的兩個Loss影響encoder部分resnet50的參數。

    看一看trainloader的length以及query啥的長度。

    兩次打印和保存的epoch區別

    每隔50epoch打印一次

    if (epoch + 1) % 50 == 0:

    里面的epoch是49, 99, 149, 199, 249, 299才測重構結果的表現.

    Test

    if (epoch + 1) > args.start_eval and args.eval_freq > 0 and (epoch + 1) % args.eval_freq == 0 or (epoch + 1) == args.max_epoch: # 這個代碼主要判斷的就是: (epoch + 1) % args.eval_freq == 0 也就是都哪個epoch數值加上1可以被80整除而余數為0. # 79, 159, 239, 319(超了),別忘了299 ''' 注意到:還有(epoch+1)==300的情況 也就是epoch=299 '''

    里面的epoch有79,159,239,299

    但是,就算有299,也不會重復的,因為

    # 這是訓練時候檢查重構結果 print('finish: ', os.path.join(args.save_dir, img_paths[0].split('images_labeled/')[-1].split('.png')[0]+'_ep_'+str(epoch)+'_trainloader_'+'.jpg')) cv2.imwrite(os.path.join(args.save_dir,img_paths[0].split('images_labeled/')[-1].split('.png')[0] + '_ep_' + str(epoch) +'_trainloader_'+ '.jpg'), out) print('finish: ', os.path.join(args.save_dir, img_paths[0].split('images_labeled/')[-1].split('.png')[0]+'_ep_'+str(epoch)+'_queryloader_'+'.jpg')) cv2.imwrite(os.path.join(args.save_dir, img_paths[0].split('images_labeled/')[-1].split('.png')[0]+'_ep_'+str(epoch)+'_queryloader_'+'.jpg'), out)

    注意到就算epoch都取299,我們,因為我重新增加了來自哪個loader的后綴,所以,我同樣不會覆蓋掉檢查重構結果時候相同epoch299的結果.


    通過上圖可以看出來,299,239,159, 79,確實是通過測試輸出的,49是通過檢查紋理輸出的,那0為啥能輸出呢?

    而且咋還train_loader和query_loader的圖像一模一樣呢?

    再檢查一個:SAN-PG的結果


    我們知道:對于SAN-PG的代碼,我把測試的部分已經都注釋掉了。所以,應該只按照檢查紋理時候的49, 99, 149, 199, 249, 299來往出輸出。



    通過上圖可以看出,對于同一張圖像,colon和out保存出來的結果不一樣,out的結果更偏向于藍色。我們跑個300從PG移動過來好好看看.

    • 把cython的文件夾刪了試一試
    • 把環境變量添加了試一試

    出現無法轉換為cuda變量的情況

    在沒有進行Git repo的README里面的配置的時候,


    目前的情況下,connect界面會卡住。 接下來,我們試試配置一下,然后,看看還會不會卡在connect界面。

    在用linux apt命令重新安裝pycharm后,發現之前train和evaluate時候的connected問題都沒有了。

    但是,這步驟又取決于:

    • 在環境激活的時候配置
    • 在沒激活環境的時候配置. 不可以這么配置,這會提示Cython evaluation is unavailable.

    必須在激活環境的情況下配置。

    在沒激活環境的時候配置:


    可以看出來,確實會多出來:eval_metrics_cy.so. 現在再試試還會不會卡在connected?


    在激活環境的情況下,再make一下。會多出來個`x86_64_linux_gnu.so

    應該是必須要在環境激活的時候配置,否則就會現實Cython evaluation is unavailable.

    在消除connected的reclone版本里已經有了

    可能存在的問題:

    • Pycharm
    • 代碼本身train部分
    • 代碼本身evaluation_only部分,實際參數有變動。
    • 因素太多了,想配置vs code吧。

    用Vscode跑的時候,能跑時候的文件內容

    • Original 程序


    用上述文件的時候,train和evaluate_only都能debug. check核對過了.

    • Reclone 程序


    用上述文件的時候,train和evaluate_only都能debug. check核對過了.

    而且都在pytorch conda環境下能這么順利執行,所以,環境應該也沒問題。

    在沒有執行out = (out / 2.0 + 0.5) * 255.時候的,數據范圍:

    下面是執行完以后的,給我的感覺應該是:

    原來都是-1左右,好奇怪,應該是0-1或者 -1到1啊。 感覺out = (out / 2.0 + 0.5) * 255.這句話有問題啊。而應該是:batch = np.transpose(batch, [0, 2, 3, 1]) * 0.5 + 0.5這種。

    這是把-1到1變到-0.5到0.5然后再變到0到1的慣用方法。


    然后,經過轉化數據類型為np.uint8以后:


    為啥在輸出整潔記錄前會有9個打印?


    因為吧,因為滿足epoch是1的整數倍的條件啊。然后每個batch的每一張圖片都會被保存,所以,為了節約空間,batch數目少點,batchsize大點。


    也就是在batch_idx為9,19,29,,也就是batch_idx+1是10的整數倍的時候,會打印Epoch:[1][XX/XXX]這種信息.

    還得更改一些部分為None

    triplet 約束怎么起作用

    training_batch_size=16時候:

    執行到還沒加上triplet約束。

    下圖是加上triplet約束以后的:當training_batch_size=16時候,i會取到0,4,8。


    加上約束以后的重構loss的值變為如下:


    這OUT還是越界啊!這不一定越界,這還有e-05呢.


    所以這次沒越界,因為如下圖所示: 尚且在(127.49, 127.49).

    就算真越界的情況下,還是能轉換到整數的,但是不代表沒有問題。




    這確實越界了。這超過1了。倒是沒超過-1。最保險的還是做下clip. 如果不clip, 我們可以看到:居然還有308




    1.54變完以后就得到323同樣也是越界的。雖然變完以后,看到好像也是0-255,但是其實很多都被忽略了,從而導致保存出來的圖片有問題。

    如果recon_texture越界,就一定會影響訓練. 因為下面這句代碼.

    loss_recon = loss_rec(recon_texture, imgs_texture)

    只要這個recon_texture是有問題的,那和正常的imgs_texture就會出現很多奇怪的差值. 從而影響loss, 進而又影響訓練整體.

    但是recon_texture又來自于:

    recon_texture, x_sim1, x_sim2, x_sim3, x_sim4 = model_decoder(feat_texture, x_down1, x_down2, x_down3)

    那還往feat_texture,x_down1, x_down2, x_down3 上追根溯源么?

    先不管. 先把feat_textureclip一下試試看.

    關于數據尺寸

    不管REID數據集中的行人圖像的大小為多少, 都會經過程序變成128和256.



    從上面的圖可以出來無論多大的都會被變到256和128.

    沒有clip以前的初始loss= 0.4975:


    clip以后的初始loss= 0.4542:


    說明: 我的clip至少對loss值沒大影響, 而且還是能得到不至于數值范圍變的奇怪的loss值.

    在下一次打印的時候, loss變大了,感覺這也很正常. 不能這么單次地看.


    query的話是: 79, 159, 239, 299. 79,159,239就是test函數保存出來的. 299兩者都有可能.


    確實299會cover掉trainloader和queryloader.

    然后看下trainloader的: 有49, 99, 149, 199, 249, 299 因為加了詞綴, 所以299 不因命名覆蓋.

    • 把Github release跑通. 看看到底給個啥結果.另外用Github跟蹤具體變化. 完成
    • 先用他的SAN-PG, (記住: 一定要把san_basic權重倒入部分涉及dict的部分改一下.) 正在弄還沒完成.
    • 如果不行就把reconstruction loss乘以上0.0001那個. 從而突出最后我們的工作中心在REID而不是重構紋理.


    可以知道, 確實checkpoint里面有state_dict和decoder_state_dict.


    下圖是沒被SAN-PG更新之前的.


    看看更新后,是不是由2.248e-01變成2.1573e-01. 是的 , 確實改了. 下面是改完以后的:


    要去看看, 看看是不是用了SAN-PG的loss在初始上就開始變得很低.

    而不是沒用時候那么大.

    先把沒用時候的截個圖放在這.


    然后再放一個用了SAN-PG以后的:

    下面是不經過warmup, 而且batch_size很小時候的.


    如果這么看的話, 確實已經比沒用SAN-PG時候要小了. 先跑個本地的1個epoch看看. 然后, 該檢查test部分,如果沒問題就上傳,然后訓練.

    這是小batch在本地跑的結果. 好像也看不出來什么啊? 還是檢查完了,上傳完整的再說吧.


    我現在要做的就是重新尋個SAN-PG然后得到SAN-PG權重。

    • 重新訓個SAN-PG權重 基于wht,然后再重新導入再看。
    • 大改我自己的SAN-PG代碼 先不干這個。太耗時

    總結

    以上是生活随笔為你收集整理的MicrosoftAsia-Semantics-Aligned Representation Learning for Person Re-identification---论文阅读笔记和工程实现总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    亚洲精品久久久久avwww潮水 | 高潮毛片无遮挡高清免费视频 | 丰满妇女强制高潮18xxxx | 亚洲精品一区二区三区在线 | 国产精品久久久av久久久 | 欧美日韩视频无码一区二区三 | 国产成人精品三级麻豆 | 亚洲精品国产精品乱码不卡 | 国产精品无码一区二区三区不卡 | 成人性做爰aaa片免费看不忠 | 日韩精品无码免费一区二区三区 | 极品尤物被啪到呻吟喷水 | 精品亚洲成av人在线观看 | 国产艳妇av在线观看果冻传媒 | 国产偷国产偷精品高清尤物 | 亚洲大尺度无码无码专区 | 老熟妇仑乱视频一区二区 | 色综合久久久无码网中文 | 性生交大片免费看l | 欧美第一黄网免费网站 | 精品久久8x国产免费观看 | 久久成人a毛片免费观看网站 | 日日橹狠狠爱欧美视频 | 婷婷综合久久中文字幕蜜桃三电影 | 久久综合激激的五月天 | 中文字幕无码av波多野吉衣 | 日本护士xxxxhd少妇 | 波多野结衣高清一区二区三区 | 狂野欧美性猛xxxx乱大交 | 亚洲最大成人网站 | 色一情一乱一伦一视频免费看 | 黄网在线观看免费网站 | 午夜福利电影 | 国产色精品久久人妻 | 国产精品视频免费播放 | 99国产欧美久久久精品 | 婷婷五月综合缴情在线视频 | 久久久久久亚洲精品a片成人 | 少女韩国电视剧在线观看完整 | 欧美 亚洲 国产 另类 | 久久综合香蕉国产蜜臀av | 欧美丰满熟妇xxxx性ppx人交 | 大地资源中文第3页 | 在线欧美精品一区二区三区 | 色综合久久久无码中文字幕 | 久久99久久99精品中文字幕 | 亚洲熟妇色xxxxx亚洲 | 欧美丰满熟妇xxxx | 久久久精品成人免费观看 | 国产色视频一区二区三区 | 欧美xxxx黑人又粗又长 | 女人色极品影院 | 免费人成网站视频在线观看 | 99久久精品午夜一区二区 | 国产凸凹视频一区二区 | 东北女人啪啪对白 | 国产成人无码一二三区视频 | 男女下面进入的视频免费午夜 | 日本大乳高潮视频在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 国产成人精品视频ⅴa片软件竹菊 | 色综合视频一区二区三区 | 夜夜影院未满十八勿进 | 成人一区二区免费视频 | 国产av剧情md精品麻豆 | 国产特级毛片aaaaaa高潮流水 | 四十如虎的丰满熟妇啪啪 | 丰满护士巨好爽好大乳 | 黑人粗大猛烈进出高潮视频 | 樱花草在线播放免费中文 | 人妻aⅴ无码一区二区三区 | 亚洲精品久久久久中文第一幕 | 人人妻人人藻人人爽欧美一区 | 天堂无码人妻精品一区二区三区 | 免费观看的无遮挡av | 欧美黑人性暴力猛交喷水 | 亚洲男人av香蕉爽爽爽爽 | 亚洲啪av永久无码精品放毛片 | 少妇邻居内射在线 | 精品夜夜澡人妻无码av蜜桃 | 亚洲精品一区二区三区在线 | 我要看www免费看插插视频 | 98国产精品综合一区二区三区 | 国产又爽又猛又粗的视频a片 | 人妻体内射精一区二区三四 | 一本久道久久综合婷婷五月 | av小次郎收藏 | 欧美怡红院免费全部视频 | 无码国产色欲xxxxx视频 | 日本精品少妇一区二区三区 | 中文字幕 人妻熟女 | 六月丁香婷婷色狠狠久久 | 中文字幕av伊人av无码av | 国产激情一区二区三区 | 九九久久精品国产免费看小说 | 黑人巨大精品欧美一区二区 | 成人无码视频在线观看网站 | 亚洲成熟女人毛毛耸耸多 | 最新版天堂资源中文官网 | 未满成年国产在线观看 | 国产九九九九九九九a片 | a在线观看免费网站大全 | 欧美xxxx黑人又粗又长 | 国产成人人人97超碰超爽8 | 娇妻被黑人粗大高潮白浆 | 丰满妇女强制高潮18xxxx | 无码吃奶揉捏奶头高潮视频 | 色五月丁香五月综合五月 | 亚洲精品一区二区三区大桥未久 | 久久午夜夜伦鲁鲁片无码免费 | 女人高潮内射99精品 | 人妻人人添人妻人人爱 | 国产内射爽爽大片视频社区在线 | 日日天日日夜日日摸 | 超碰97人人射妻 | 国产亚洲美女精品久久久2020 | 国产成人精品无码播放 | 国产精品第一国产精品 | 婷婷综合久久中文字幕蜜桃三电影 | 成人动漫在线观看 | 欧美性猛交xxxx富婆 | a国产一区二区免费入口 | 欧美亚洲国产一区二区三区 | 日韩亚洲欧美中文高清在线 | 中文字幕无码视频专区 | 色欲综合久久中文字幕网 | 六月丁香婷婷色狠狠久久 | 俺去俺来也www色官网 | 又粗又大又硬毛片免费看 | 老头边吃奶边弄进去呻吟 | 精品人人妻人人澡人人爽人人 | 日韩人妻无码一区二区三区久久99 | 亚洲男人av香蕉爽爽爽爽 | 婷婷五月综合缴情在线视频 | 人妻体内射精一区二区三四 | 日本一本二本三区免费 | 日韩av无码一区二区三区 | 少妇性荡欲午夜性开放视频剧场 | 亚拍精品一区二区三区探花 | 国内揄拍国内精品少妇国语 | 亚洲综合精品香蕉久久网 | 欧美野外疯狂做受xxxx高潮 | 欧美性猛交xxxx富婆 | 中文精品久久久久人妻不卡 | 丁香啪啪综合成人亚洲 | 3d动漫精品啪啪一区二区中 | 欧美人与禽zoz0性伦交 | 亚洲国产精品成人久久蜜臀 | 99视频精品全部免费免费观看 | 在教室伦流澡到高潮hnp视频 | 亚洲成a人片在线观看无码3d | 对白脏话肉麻粗话av | 亚洲色偷偷偷综合网 | 一二三四在线观看免费视频 | 无码人妻丰满熟妇区五十路百度 | 三级4级全黄60分钟 | 中文字幕乱码人妻二区三区 | 色一情一乱一伦一区二区三欧美 | 久久久精品国产sm最大网站 | 精品国偷自产在线 | 久久久久se色偷偷亚洲精品av | 国产成人精品必看 | 精品少妇爆乳无码av无码专区 | 99久久久无码国产aaa精品 | 正在播放东北夫妻内射 | 亚洲小说图区综合在线 | 国产乱人偷精品人妻a片 | 波多野42部无码喷潮在线 | 风流少妇按摩来高潮 | 亚洲第一网站男人都懂 | 97夜夜澡人人爽人人喊中国片 | 97夜夜澡人人双人人人喊 | 无码av免费一区二区三区试看 | 乱人伦人妻中文字幕无码 | 日本肉体xxxx裸交 | 亚洲精品一区二区三区在线 | 国产人妻人伦精品 | 久久精品人人做人人综合试看 | 少妇人妻大乳在线视频 | 国内揄拍国内精品人妻 | 国产口爆吞精在线视频 | 午夜福利电影 | 亚洲男人av香蕉爽爽爽爽 | 国精产品一品二品国精品69xx | 少妇一晚三次一区二区三区 | 西西人体www44rt大胆高清 | 国产偷自视频区视频 | 日日摸天天摸爽爽狠狠97 | 亚洲 a v无 码免 费 成 人 a v | 亚洲自偷自偷在线制服 | 国产人妻人伦精品 | 国产免费无码一区二区视频 | 国产无遮挡又黄又爽又色 | 亚洲中文字幕无码中文字在线 | 久久精品人人做人人综合试看 | 中文字幕人妻无码一区二区三区 | 日韩视频 中文字幕 视频一区 | 亚洲综合在线一区二区三区 | 日本饥渴人妻欲求不满 | 国产成人一区二区三区在线观看 | 色综合久久久无码网中文 | 精品国精品国产自在久国产87 | 亚洲精品久久久久久久久久久 | 熟女少妇在线视频播放 | 四虎永久在线精品免费网址 | 久久www免费人成人片 | 3d动漫精品啪啪一区二区中 | 久久国产精品_国产精品 | 伊在人天堂亚洲香蕉精品区 | 99精品久久毛片a片 | 国产口爆吞精在线视频 | 日韩精品乱码av一区二区 | 麻豆国产97在线 | 欧洲 | 欧美人与物videos另类 | 99在线 | 亚洲 | 国产精华av午夜在线观看 | 亚洲 a v无 码免 费 成 人 a v | 亚洲色www成人永久网址 | 成人免费视频视频在线观看 免费 | 女人被男人爽到呻吟的视频 | 曰韩少妇内射免费播放 | 亚洲国产精华液网站w | 国内揄拍国内精品少妇国语 | 午夜福利电影 | 最新版天堂资源中文官网 | 成人片黄网站色大片免费观看 | 成人一区二区免费视频 | 亚洲日韩av片在线观看 | 国产无套粉嫩白浆在线 | 亚洲国产av美女网站 | 波多野结衣av一区二区全免费观看 | 国产激情艳情在线看视频 | 久久综合色之久久综合 | 色一情一乱一伦一区二区三欧美 | 精品久久久久久亚洲精品 | 丰满人妻被黑人猛烈进入 | 欧美 丝袜 自拍 制服 另类 | 亚洲精品欧美二区三区中文字幕 | 综合网日日天干夜夜久久 | 97无码免费人妻超级碰碰夜夜 | 久久久久人妻一区精品色欧美 | 色综合天天综合狠狠爱 | 国内综合精品午夜久久资源 | 精品成人av一区二区三区 | 天堂а√在线中文在线 | 国产人成高清在线视频99最全资源 | 牲欲强的熟妇农村老妇女 | 久久久无码中文字幕久... | 伊人久久婷婷五月综合97色 | 欧美亚洲国产一区二区三区 | 色 综合 欧美 亚洲 国产 | 久久这里只有精品视频9 | 色综合视频一区二区三区 | 国产精品igao视频网 | 性欧美疯狂xxxxbbbb | 永久免费观看美女裸体的网站 | 激情综合激情五月俺也去 | 狠狠cao日日穞夜夜穞av | 荫蒂被男人添的好舒服爽免费视频 | www一区二区www免费 | 又紧又大又爽精品一区二区 | 国产片av国语在线观看 | 精品熟女少妇av免费观看 | 国产特级毛片aaaaaaa高清 | 99久久久国产精品无码免费 | 亚洲色成人中文字幕网站 | 狂野欧美性猛交免费视频 | 久久午夜无码鲁丝片午夜精品 | 成人无码精品1区2区3区免费看 | 亚洲理论电影在线观看 | a片免费视频在线观看 | 久久国产36精品色熟妇 | 18禁止看的免费污网站 | 日韩精品成人一区二区三区 | 又大又硬又爽免费视频 | 免费视频欧美无人区码 | 国产精品亚洲综合色区韩国 | 黑人粗大猛烈进出高潮视频 | 午夜无码人妻av大片色欲 | 又紧又大又爽精品一区二区 | 日韩欧美中文字幕在线三区 | 中文字幕乱码亚洲无线三区 | 激情国产av做激情国产爱 | 亚洲色在线无码国产精品不卡 | 久久久www成人免费毛片 | 亚洲成av人片在线观看无码不卡 | 色综合久久久久综合一本到桃花网 | 性欧美熟妇videofreesex | 亚洲日韩av一区二区三区四区 | 日本一区二区三区免费高清 | 思思久久99热只有频精品66 | 色综合久久久无码中文字幕 | 国产肉丝袜在线观看 | 久久www免费人成人片 | 欧美三级不卡在线观看 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 欧美老人巨大xxxx做受 | 国产精品免费大片 | 丁香花在线影院观看在线播放 | 人妻天天爽夜夜爽一区二区 | 欧美老妇与禽交 | 成人亚洲精品久久久久 | 色一情一乱一伦一视频免费看 | 老司机亚洲精品影院无码 | 国产成人无码一二三区视频 | 久久国产精品萌白酱免费 | 国内揄拍国内精品人妻 | 精品无码国产自产拍在线观看蜜 | 亚洲色偷偷偷综合网 | 亚洲中文字幕va福利 | 国产精品免费大片 | 国产av无码专区亚洲awww | 久久亚洲国产成人精品性色 | 国产麻豆精品一区二区三区v视界 | 女人色极品影院 | 妺妺窝人体色www在线小说 | 黑人玩弄人妻中文在线 | 中国大陆精品视频xxxx | 老熟妇乱子伦牲交视频 | 国产午夜福利100集发布 | 欧美激情一区二区三区成人 | 18精品久久久无码午夜福利 | 亚洲欧美国产精品专区久久 | 日韩欧美成人免费观看 | 国产午夜无码精品免费看 | 国产精品资源一区二区 | 国产另类ts人妖一区二区 | 欧美精品一区二区精品久久 | 国精产品一品二品国精品69xx | 国产做国产爱免费视频 | 18禁止看的免费污网站 | 日韩人妻无码中文字幕视频 | 亚洲综合另类小说色区 | 少妇无套内谢久久久久 | 波多野结衣av一区二区全免费观看 | 久久久www成人免费毛片 | а√天堂www在线天堂小说 | aⅴ在线视频男人的天堂 | 国产免费无码一区二区视频 | 久久久av男人的天堂 | 3d动漫精品啪啪一区二区中 | 亚洲欧洲日本无在线码 | 久久成人a毛片免费观看网站 | 亚洲国产精品毛片av不卡在线 | 亚洲熟悉妇女xxx妇女av | 久久人人爽人人爽人人片av高清 | 久久久婷婷五月亚洲97号色 | 1000部夫妻午夜免费 | 国产精品18久久久久久麻辣 | 一本大道伊人av久久综合 | 免费观看黄网站 | 性史性农村dvd毛片 | 中文字幕精品av一区二区五区 | 精品人人妻人人澡人人爽人人 | 成人性做爰aaa片免费看不忠 | 天天拍夜夜添久久精品 | 乱人伦人妻中文字幕无码 | 天下第一社区视频www日本 | 女人被爽到呻吟gif动态图视看 | 四十如虎的丰满熟妇啪啪 | 中文字幕乱码人妻无码久久 | 学生妹亚洲一区二区 | 无码人妻精品一区二区三区下载 | 中文字幕乱码亚洲无线三区 | 国产又粗又硬又大爽黄老大爷视 | 牛和人交xxxx欧美 | 十八禁真人啪啪免费网站 | 亚洲综合在线一区二区三区 | 最近免费中文字幕中文高清百度 | 波多野结衣aⅴ在线 | 国产av无码专区亚洲awww | 色爱情人网站 | 无码福利日韩神码福利片 | 午夜嘿嘿嘿影院 | 影音先锋中文字幕无码 | 久久zyz资源站无码中文动漫 | 久久国语露脸国产精品电影 | 国产美女精品一区二区三区 | 日本精品少妇一区二区三区 | 国产乱人无码伦av在线a | 成人性做爰aaa片免费看不忠 | 久久综合给合久久狠狠狠97色 | 成人aaa片一区国产精品 | 国产香蕉尹人综合在线观看 | 日本精品久久久久中文字幕 | 特级做a爰片毛片免费69 | 少妇无码一区二区二三区 | 波多野结衣乳巨码无在线观看 | 九九久久精品国产免费看小说 | 无遮挡啪啪摇乳动态图 | 成在人线av无码免观看麻豆 | 波多野结衣 黑人 | 午夜男女很黄的视频 | 午夜福利试看120秒体验区 | 国产成人无码av片在线观看不卡 | 麻豆av传媒蜜桃天美传媒 | 九九热爱视频精品 | 一本大道伊人av久久综合 | 男女作爱免费网站 | 97精品人妻一区二区三区香蕉 | 正在播放老肥熟妇露脸 | √天堂资源地址中文在线 | 国语自产偷拍精品视频偷 | 亚洲一区二区三区含羞草 | 国产成人无码av一区二区 | 夜先锋av资源网站 | 伊人久久大香线焦av综合影院 | 日韩人妻系列无码专区 | 亚洲日韩av片在线观看 | 久久精品99久久香蕉国产色戒 | 青青草原综合久久大伊人精品 | 丰满少妇高潮惨叫视频 | 精品久久久久香蕉网 | 国产又爽又猛又粗的视频a片 | 色窝窝无码一区二区三区色欲 | 人妻少妇被猛烈进入中文字幕 | 亚洲国产精品无码一区二区三区 | 欧洲熟妇色 欧美 | 特级做a爰片毛片免费69 | 爱做久久久久久 | 女人被男人爽到呻吟的视频 | 久久综合网欧美色妞网 | 女人色极品影院 | 精品少妇爆乳无码av无码专区 | 国产精品国产三级国产专播 | 亚洲第一网站男人都懂 | 国产亚洲精品久久久闺蜜 | 色五月五月丁香亚洲综合网 | 亚洲欧美日韩国产精品一区二区 | 国产亚洲精品久久久ai换 | 夫妻免费无码v看片 | 亚洲精品国偷拍自产在线观看蜜桃 | 无码乱肉视频免费大全合集 | 精品乱码久久久久久久 | 少妇高潮一区二区三区99 | 成人性做爰aaa片免费看不忠 | 精品一区二区三区波多野结衣 | 99国产精品白浆在线观看免费 | 亚洲一区二区三区无码久久 | 国产熟妇高潮叫床视频播放 | 中文字幕乱码中文乱码51精品 | 久久久久人妻一区精品色欧美 | 亚洲自偷自偷在线制服 | 露脸叫床粗话东北少妇 | 亚洲人成网站免费播放 | a片免费视频在线观看 | 亚洲精品成人福利网站 | 99久久婷婷国产综合精品青草免费 | 久久精品无码一区二区三区 | 丝袜足控一区二区三区 | a国产一区二区免费入口 | 国产精品福利视频导航 | 国产精品无码mv在线观看 | 国产精品办公室沙发 | 色婷婷久久一区二区三区麻豆 | 日韩视频 中文字幕 视频一区 | 俺去俺来也在线www色官网 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲综合无码久久精品综合 | 亚洲熟妇色xxxxx亚洲 | 精品人妻av区 | 黑人玩弄人妻中文在线 | 亚洲无人区午夜福利码高清完整版 | 国产精品99久久精品爆乳 | 性色欲网站人妻丰满中文久久不卡 | 精品国产成人一区二区三区 | 国产无遮挡又黄又爽又色 | 欧美35页视频在线观看 | 欧美喷潮久久久xxxxx | 欧美一区二区三区视频在线观看 | 久久综合给久久狠狠97色 | 亚洲人亚洲人成电影网站色 | 特黄特色大片免费播放器图片 | 免费人成网站视频在线观看 | 欧美精品免费观看二区 | 国产av剧情md精品麻豆 | 日本在线高清不卡免费播放 | 久久亚洲精品中文字幕无男同 | 亚洲阿v天堂在线 | 四虎4hu永久免费 | 2019nv天堂香蕉在线观看 | 色婷婷久久一区二区三区麻豆 | 人妻夜夜爽天天爽三区 | 无码av最新清无码专区吞精 | 国产亲子乱弄免费视频 | 亚洲欧美色中文字幕在线 | 日韩欧美中文字幕公布 | 国产精品无套呻吟在线 | 国产精品办公室沙发 | 亚洲人成网站免费播放 | 国产激情无码一区二区app | 国内丰满熟女出轨videos | 国产精品亚洲专区无码不卡 | 波多野结衣av一区二区全免费观看 | 国产美女精品一区二区三区 | 亚洲七七久久桃花影院 | 亚洲男女内射在线播放 | 奇米影视7777久久精品人人爽 | 国产日产欧产精品精品app | 狂野欧美激情性xxxx | 国产熟妇高潮叫床视频播放 | 中文字幕中文有码在线 | 小鲜肉自慰网站xnxx | 成人欧美一区二区三区黑人免费 | 国产精品久久久久无码av色戒 | av无码电影一区二区三区 | 国产美女极度色诱视频www | 欧美日韩精品 | 亚洲精品国偷拍自产在线观看蜜桃 | 无码av最新清无码专区吞精 | 亚洲国精产品一二二线 | 人妻有码中文字幕在线 | 日韩精品无码一区二区中文字幕 | 激情爆乳一区二区三区 | 一本色道久久综合狠狠躁 | 丝袜 中出 制服 人妻 美腿 | 精品无码国产自产拍在线观看蜜 | 欧美野外疯狂做受xxxx高潮 | 欧美日韩色另类综合 | 亚洲爆乳大丰满无码专区 | 国产内射老熟女aaaa | 黑人巨大精品欧美一区二区 | 国产成人无码av在线影院 | 亚洲成熟女人毛毛耸耸多 | 国产两女互慰高潮视频在线观看 | 丰满少妇熟乱xxxxx视频 | 人人妻人人澡人人爽精品欧美 | 亚洲中文无码av永久不收费 | 男女作爱免费网站 | 久久人人爽人人爽人人片av高清 | 人人妻人人澡人人爽欧美一区 | 国产综合在线观看 | 亚洲国产一区二区三区在线观看 | 久久久国产精品无码免费专区 | 无码精品国产va在线观看dvd | 亚洲精品一区三区三区在线观看 | 亚洲爆乳精品无码一区二区三区 | 成熟女人特级毛片www免费 | 露脸叫床粗话东北少妇 | 欧洲美熟女乱又伦 | 午夜福利试看120秒体验区 | 国产无av码在线观看 | 天海翼激烈高潮到腰振不止 | 人妻插b视频一区二区三区 | 亚洲欧洲中文日韩av乱码 | 国产人妖乱国产精品人妖 | 久久人妻内射无码一区三区 | 国产精品成人av在线观看 | 国产又爽又黄又刺激的视频 | 大胆欧美熟妇xx | 欧美三级a做爰在线观看 | 青青草原综合久久大伊人精品 | 亚洲日韩av片在线观看 | 又大又硬又爽免费视频 | 色综合久久久久综合一本到桃花网 | 夜先锋av资源网站 | 久久国语露脸国产精品电影 | 欧美日韩久久久精品a片 | 国产手机在线αⅴ片无码观看 | 色综合久久88色综合天天 | 国产亚洲美女精品久久久2020 | 丁香花在线影院观看在线播放 | 欧美性生交xxxxx久久久 | 国产午夜视频在线观看 | 欧美真人作爱免费视频 | 国产人妻大战黑人第1集 | 亚洲区欧美区综合区自拍区 | 国产精品无码永久免费888 | 午夜丰满少妇性开放视频 | 色妞www精品免费视频 | 久久精品视频在线看15 | 欧美日韩一区二区免费视频 | 久久精品国产99精品亚洲 | 又粗又大又硬又长又爽 | 亚洲国产日韩a在线播放 | 少妇高潮一区二区三区99 | 国产成人无码a区在线观看视频app | √天堂资源地址中文在线 | 亚洲成a人片在线观看无码 | 免费看男女做好爽好硬视频 | 2020久久超碰国产精品最新 | 在线精品亚洲一区二区 | 久久精品国产一区二区三区 | 色噜噜亚洲男人的天堂 | 激情综合激情五月俺也去 | 国产suv精品一区二区五 | 国产精品无码永久免费888 | 国产精品久久国产三级国 | 黑人粗大猛烈进出高潮视频 | 啦啦啦www在线观看免费视频 | 亚洲人亚洲人成电影网站色 | 国产人妻精品一区二区三区不卡 | 麻花豆传媒剧国产免费mv在线 | 亚洲理论电影在线观看 | 图片小说视频一区二区 | 在线看片无码永久免费视频 | 日韩精品无码免费一区二区三区 | 国产精品久久久久9999小说 | 免费看男女做好爽好硬视频 | 精品国产青草久久久久福利 | 又色又爽又黄的美女裸体网站 | 亚洲日韩av一区二区三区四区 | 三级4级全黄60分钟 | 欧美35页视频在线观看 | 一本久久伊人热热精品中文字幕 | 国产综合在线观看 | 无码人妻精品一区二区三区下载 | 久久五月精品中文字幕 | 国产精品人人妻人人爽 | 国产超碰人人爽人人做人人添 | 乱人伦人妻中文字幕无码久久网 | 国产亚洲人成a在线v网站 | 日本一区二区更新不卡 | 亚洲色偷偷偷综合网 | 丝袜人妻一区二区三区 | 玩弄少妇高潮ⅹxxxyw | 久热国产vs视频在线观看 | 鲁一鲁av2019在线 | 偷窥村妇洗澡毛毛多 | 亚洲成av人在线观看网址 | 日韩欧美群交p片內射中文 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 欧美真人作爱免费视频 | 麻豆蜜桃av蜜臀av色欲av | 久久精品国产日本波多野结衣 | 亚洲成a人片在线观看日本 | 中文字幕 亚洲精品 第1页 | 国产疯狂伦交大片 | 亚洲毛片av日韩av无码 | 黑人粗大猛烈进出高潮视频 | 婷婷五月综合缴情在线视频 | 亚洲色www成人永久网址 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产免费久久久久久无码 | 欧美变态另类xxxx | 中文字幕人成乱码熟女app | 娇妻被黑人粗大高潮白浆 | 久久人人97超碰a片精品 | 性做久久久久久久免费看 | 精品国精品国产自在久国产87 | 天堂亚洲免费视频 | 久久久久成人片免费观看蜜芽 | 精品国精品国产自在久国产87 | 国内丰满熟女出轨videos | 中文字幕人妻无码一夲道 | 国产在线精品一区二区三区直播 | 亚洲一区二区三区含羞草 | 欧美亚洲日韩国产人成在线播放 | 中文字幕无码日韩专区 | 无遮挡啪啪摇乳动态图 | 久久婷婷五月综合色国产香蕉 | 国产特级毛片aaaaaa高潮流水 | av香港经典三级级 在线 | 久久人人爽人人爽人人片av高清 | 国产一区二区三区影院 | 国产黑色丝袜在线播放 | 亚洲欧美日韩综合久久久 | 熟妇人妻无码xxx视频 | 日本一本二本三区免费 | 一本无码人妻在中文字幕免费 | 久久久久国色av免费观看性色 | 狂野欧美性猛交免费视频 | 亚洲 a v无 码免 费 成 人 a v | 丰满少妇高潮惨叫视频 | 久久综合九色综合97网 | 国产农村乱对白刺激视频 | 日本va欧美va欧美va精品 | 内射后入在线观看一区 | 亚洲熟妇色xxxxx亚洲 | 亚洲精品中文字幕 | 狠狠cao日日穞夜夜穞av | 澳门永久av免费网站 | 欧美日韩综合一区二区三区 | 人人澡人摸人人添 | 国产极品视觉盛宴 | 日本爽爽爽爽爽爽在线观看免 | 国产精品人人妻人人爽 | 中国女人内谢69xxxx | 综合激情五月综合激情五月激情1 | 亚洲成熟女人毛毛耸耸多 | 九月婷婷人人澡人人添人人爽 | 99视频精品全部免费免费观看 | 波多野结衣aⅴ在线 | 亚洲一区二区三区偷拍女厕 | 午夜无码区在线观看 | 亚洲天堂2017无码中文 | 领导边摸边吃奶边做爽在线观看 | 青青草原综合久久大伊人精品 | 亚洲成av人影院在线观看 | 无码乱肉视频免费大全合集 | 成熟妇人a片免费看网站 | 亚洲欧美精品伊人久久 | 色婷婷香蕉在线一区二区 | 少妇愉情理伦片bd | 久久99精品国产麻豆 | 久久亚洲精品中文字幕无男同 | 在线天堂新版最新版在线8 | 丁香花在线影院观看在线播放 | √天堂中文官网8在线 | 久久国语露脸国产精品电影 | 波多野结衣av在线观看 | 精品人妻人人做人人爽夜夜爽 | 久久人人爽人人人人片 | 好屌草这里只有精品 | 国产精品亚洲一区二区三区喷水 | 亚洲日韩乱码中文无码蜜桃臀网站 | 欧美日本日韩 | 乱人伦人妻中文字幕无码久久网 | 四虎永久在线精品免费网址 | 国产亚洲精品久久久久久久久动漫 | 欧美人与善在线com | 日韩欧美群交p片內射中文 | 亚洲s色大片在线观看 | 国产av久久久久精东av | 国产人妻人伦精品 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 亚洲一区二区三区国产精华液 | 亚洲狠狠婷婷综合久久 | 任你躁国产自任一区二区三区 | 国产精华av午夜在线观看 | 草草网站影院白丝内射 | 午夜嘿嘿嘿影院 | 亚洲中文字幕av在天堂 | 成人av无码一区二区三区 | 午夜精品一区二区三区在线观看 | 内射欧美老妇wbb | 97久久精品无码一区二区 | 学生妹亚洲一区二区 | 麻豆成人精品国产免费 | 日日摸日日碰夜夜爽av | 秋霞成人午夜鲁丝一区二区三区 | 亚洲色欲久久久综合网东京热 | 亚洲中文字幕无码一久久区 | 午夜成人1000部免费视频 | 俄罗斯老熟妇色xxxx | 无码av最新清无码专区吞精 | 亚洲va中文字幕无码久久不卡 | 亚洲a无码综合a国产av中文 | 无码帝国www无码专区色综合 | 国产热a欧美热a在线视频 | 国产精品18久久久久久麻辣 | 国产精品a成v人在线播放 | 国产三级精品三级男人的天堂 | 精品夜夜澡人妻无码av蜜桃 | 国产日产欧产精品精品app | 大肉大捧一进一出视频出来呀 | 青青青爽视频在线观看 | 亚洲大尺度无码无码专区 | 小sao货水好多真紧h无码视频 | 国语自产偷拍精品视频偷 | 国产精品无码一区二区桃花视频 | 天堂а√在线中文在线 | 日日摸夜夜摸狠狠摸婷婷 | 日本www一道久久久免费榴莲 | 久久无码人妻影院 | 亚洲乱码国产乱码精品精 | 亚洲国产午夜精品理论片 | 天堂久久天堂av色综合 | 嫩b人妻精品一区二区三区 | 色综合久久久久综合一本到桃花网 | 最近的中文字幕在线看视频 | 欧美日韩综合一区二区三区 | 曰韩少妇内射免费播放 | 骚片av蜜桃精品一区 | 亚洲人成影院在线观看 | 亚洲一区二区三区在线观看网站 | 成人女人看片免费视频放人 | 日本丰满护士爆乳xxxx | av小次郎收藏 | 天堂无码人妻精品一区二区三区 | 黑人粗大猛烈进出高潮视频 | 红桃av一区二区三区在线无码av | 无码人妻av免费一区二区三区 | 亚洲呦女专区 | 国产人妻人伦精品 | 色综合久久中文娱乐网 | 国产亚洲人成在线播放 | 99精品无人区乱码1区2区3区 | 日韩少妇白浆无码系列 | 牛和人交xxxx欧美 | 高潮毛片无遮挡高清免费 | 国产在线无码精品电影网 | 18禁止看的免费污网站 | 亚洲а∨天堂久久精品2021 | 欧美35页视频在线观看 | 最近中文2019字幕第二页 | 日韩无码专区 | 九九久久精品国产免费看小说 | 色综合久久中文娱乐网 | 国产成人人人97超碰超爽8 | 亚洲综合精品香蕉久久网 | 狠狠色色综合网站 | 疯狂三人交性欧美 | 日日碰狠狠丁香久燥 | 免费无码肉片在线观看 | 亚洲国产综合无码一区 | 亚洲国精产品一二二线 | 国产成人无码av在线影院 | 男人扒开女人内裤强吻桶进去 | 国产在线精品一区二区三区直播 | 色情久久久av熟女人妻网站 | 国内揄拍国内精品人妻 | 少妇邻居内射在线 | 精品久久综合1区2区3区激情 | 男女性色大片免费网站 | 亚洲中文字幕乱码av波多ji | 女人色极品影院 | 亚洲精品一区二区三区四区五区 | 特级做a爰片毛片免费69 | 亚洲欧美国产精品专区久久 | 亚洲色偷偷男人的天堂 | 成人免费视频视频在线观看 免费 | 国产精品鲁鲁鲁 | av无码不卡在线观看免费 | 波多野结衣一区二区三区av免费 | 日本大乳高潮视频在线观看 | 午夜无码人妻av大片色欲 | 精品偷拍一区二区三区在线看 | 日韩人妻无码一区二区三区久久99 | 我要看www免费看插插视频 | 夜先锋av资源网站 | 亚洲色欲久久久综合网东京热 | 亚洲精品午夜无码电影网 | 精品成人av一区二区三区 | 亚洲综合无码一区二区三区 | 日本熟妇大屁股人妻 | 5858s亚洲色大成网站www | 久久久久久久女国产乱让韩 | 51国偷自产一区二区三区 | 在线欧美精品一区二区三区 | 久久国产自偷自偷免费一区调 | 色偷偷人人澡人人爽人人模 | 在教室伦流澡到高潮hnp视频 | 中文字幕乱码亚洲无线三区 | 99精品国产综合久久久久五月天 | 岛国片人妻三上悠亚 | 国产精品手机免费 | 粉嫩少妇内射浓精videos | 日本乱人伦片中文三区 | 精品人人妻人人澡人人爽人人 | 亚洲自偷精品视频自拍 | 国产精品久久久一区二区三区 | 九九在线中文字幕无码 | 日本成熟视频免费视频 | 18禁止看的免费污网站 | 小sao货水好多真紧h无码视频 | 99久久精品无码一区二区毛片 | 99久久久无码国产精品免费 | 亚洲日韩一区二区三区 | 色五月五月丁香亚洲综合网 | 又大又黄又粗又爽的免费视频 | 色婷婷欧美在线播放内射 | 老熟妇仑乱视频一区二区 | 无码人妻丰满熟妇区毛片18 | 国产超级va在线观看视频 | 清纯唯美经典一区二区 | 日韩精品a片一区二区三区妖精 | 欧美人与动性行为视频 | 国产精品高潮呻吟av久久4虎 | 蜜桃av抽搐高潮一区二区 | 午夜精品一区二区三区的区别 | 精品一二三区久久aaa片 | 永久免费观看国产裸体美女 | 成人一区二区免费视频 | 亚洲人成影院在线观看 | 亚洲国产成人a精品不卡在线 | 精品无人国产偷自产在线 | 久久综合狠狠综合久久综合88 | 97久久精品无码一区二区 | 日韩成人一区二区三区在线观看 | 高潮毛片无遮挡高清免费 | 国产成人一区二区三区别 | 国产精品毛多多水多 | 国产两女互慰高潮视频在线观看 | 网友自拍区视频精品 | 亚洲色在线无码国产精品不卡 | 欧美激情一区二区三区成人 | 中文字幕人成乱码熟女app | 18禁黄网站男男禁片免费观看 | 中文字幕乱码亚洲无线三区 | 欧洲精品码一区二区三区免费看 | 欧美性色19p | 狠狠亚洲超碰狼人久久 | 国产亚洲精品久久久久久久 | 无套内谢老熟女 | 久久久国产精品无码免费专区 | 综合人妻久久一区二区精品 | 国产激情艳情在线看视频 | 久久zyz资源站无码中文动漫 | 国产精品a成v人在线播放 | 精品 日韩 国产 欧美 视频 | 久久久久久亚洲精品a片成人 | 精品国产福利一区二区 | 国产免费久久精品国产传媒 | 国产乱人无码伦av在线a | 自拍偷自拍亚洲精品10p | 巨爆乳无码视频在线观看 | 精品乱子伦一区二区三区 | 亚洲精品无码国产 | 强辱丰满人妻hd中文字幕 | 一本无码人妻在中文字幕免费 | 亚洲经典千人经典日产 | 人人妻人人藻人人爽欧美一区 | 精品久久综合1区2区3区激情 | 国产精品va在线观看无码 | 国产成人精品必看 | 永久黄网站色视频免费直播 | 日本精品少妇一区二区三区 | 欧美高清在线精品一区 | 熟女俱乐部五十路六十路av | 午夜福利试看120秒体验区 | 性色av无码免费一区二区三区 | 扒开双腿吃奶呻吟做受视频 | 夜夜夜高潮夜夜爽夜夜爰爰 | 夜精品a片一区二区三区无码白浆 | 乱人伦人妻中文字幕无码久久网 | 日本精品人妻无码77777 天堂一区人妻无码 | 午夜精品久久久久久久久 | 麻豆av传媒蜜桃天美传媒 | 成人性做爰aaa片免费看不忠 | 久久久婷婷五月亚洲97号色 | 一本一道久久综合久久 | 水蜜桃av无码 | 国内丰满熟女出轨videos | 久久97精品久久久久久久不卡 | 麻豆国产人妻欲求不满谁演的 | 日本精品人妻无码免费大全 | 国产成人精品视频ⅴa片软件竹菊 | 少妇性俱乐部纵欲狂欢电影 | 久久久久久久人妻无码中文字幕爆 | 亚洲爆乳精品无码一区二区三区 | 97夜夜澡人人双人人人喊 | 欧美freesex黑人又粗又大 | 欧美丰满熟妇xxxx | 久久人人爽人人爽人人片av高清 | 亚洲中文字幕成人无码 | 18禁黄网站男男禁片免费观看 | 久久精品国产99久久6动漫 | 久久久久久九九精品久 | 亚洲人成无码网www | 少妇性l交大片欧洲热妇乱xxx | 无码人妻精品一区二区三区不卡 | 亚洲人成网站免费播放 | 久久99精品久久久久久动态图 | 国産精品久久久久久久 | 亚洲无人区一区二区三区 | 亚洲精品国产a久久久久久 | 国产精品第一国产精品 | 久久久精品成人免费观看 | 精品无码国产自产拍在线观看蜜 | 亚洲狠狠婷婷综合久久 | 乌克兰少妇性做爰 | 色综合久久久无码网中文 | 成人一在线视频日韩国产 | 荫蒂被男人添的好舒服爽免费视频 | 99久久婷婷国产综合精品青草免费 | 男女爱爱好爽视频免费看 | 亚洲七七久久桃花影院 | 自拍偷自拍亚洲精品10p | 国产做国产爱免费视频 | aⅴ亚洲 日韩 色 图网站 播放 | 撕开奶罩揉吮奶头视频 | 欧美精品一区二区精品久久 | 免费国产成人高清在线观看网站 | 波多野结衣 黑人 | 亚洲一区二区三区偷拍女厕 | 色欲av亚洲一区无码少妇 | 国产午夜福利亚洲第一 | 午夜福利不卡在线视频 | 激情综合激情五月俺也去 | 亚洲精品国偷拍自产在线观看蜜桃 | 色诱久久久久综合网ywww | 人人澡人人妻人人爽人人蜜桃 | 亚洲日韩乱码中文无码蜜桃臀网站 | 女高中生第一次破苞av | 牲欲强的熟妇农村老妇女视频 | 精品偷自拍另类在线观看 | 激情内射亚州一区二区三区爱妻 | 88国产精品欧美一区二区三区 | 伊人色综合久久天天小片 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 精品人妻中文字幕有码在线 | 一本加勒比波多野结衣 | 久久综合九色综合97网 | 国产av无码专区亚洲a∨毛片 | 国产av一区二区三区最新精品 | 中文字幕人妻无码一夲道 | 欧美自拍另类欧美综合图片区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 5858s亚洲色大成网站www | 少妇愉情理伦片bd | 精品国产精品久久一区免费式 | 国产精品多人p群无码 | 久久国产36精品色熟妇 | 欧美怡红院免费全部视频 | 天堂在线观看www | 少妇性俱乐部纵欲狂欢电影 | 国产乱人偷精品人妻a片 | 狠狠色欧美亚洲狠狠色www | 捆绑白丝粉色jk震动捧喷白浆 | 国产精品久久久久9999小说 | 99久久婷婷国产综合精品青草免费 | 午夜丰满少妇性开放视频 | 亚洲精品欧美二区三区中文字幕 | 中文字幕无码免费久久9一区9 | 精品国产一区av天美传媒 | 国产成人人人97超碰超爽8 | 好屌草这里只有精品 | 国产亚洲精品久久久久久久久动漫 | 国产偷国产偷精品高清尤物 | 中文字幕人妻无码一区二区三区 | 国产又爽又黄又刺激的视频 | 一本久久a久久精品vr综合 | 国产suv精品一区二区五 | 国产做国产爱免费视频 | 国产一区二区不卡老阿姨 | 亚洲国产精品毛片av不卡在线 | 色五月五月丁香亚洲综合网 | 国产人妻人伦精品1国产丝袜 | 国产精品香蕉在线观看 | 久久精品无码一区二区三区 | 欧美精品在线观看 | 亚洲国产一区二区三区在线观看 | 暴力强奷在线播放无码 | 无码国产色欲xxxxx视频 | 18精品久久久无码午夜福利 | 2020久久超碰国产精品最新 | 国产又粗又硬又大爽黄老大爷视 | 99麻豆久久久国产精品免费 | 日本爽爽爽爽爽爽在线观看免 | 亚洲色大成网站www国产 | 欧美熟妇另类久久久久久多毛 | 国产午夜福利100集发布 | 日本大香伊一区二区三区 | 亚洲成a人片在线观看无码 | 国产精品内射视频免费 | 亚洲精品国偷拍自产在线麻豆 | 亚洲精品一区二区三区婷婷月 | 麻豆蜜桃av蜜臀av色欲av | 精品久久8x国产免费观看 | 欧美成人免费全部网站 | 国产成人综合美国十次 | 丰满人妻精品国产99aⅴ | 欧美第一黄网免费网站 | 国产亚洲精品久久久久久国模美 | 国产精品久久久一区二区三区 | 国产成人精品必看 | 中文字幕+乱码+中文字幕一区 | 中文字幕人成乱码熟女app | 精品偷自拍另类在线观看 | 4hu四虎永久在线观看 | 国产成人精品必看 | 久久久久se色偷偷亚洲精品av | 国产国语老龄妇女a片 | 中文字幕乱码人妻二区三区 | 亚洲自偷精品视频自拍 | 久久99精品久久久久婷婷 | 欧美 日韩 亚洲 在线 | 色综合天天综合狠狠爱 | 亚洲精品久久久久中文第一幕 | 国产无套内射久久久国产 | 国产va免费精品观看 | 人人爽人人澡人人人妻 | 男女爱爱好爽视频免费看 | 欧美怡红院免费全部视频 | 熟妇激情内射com | 人妻尝试又大又粗久久 | 亚洲精品成a人在线观看 | 精品国产精品久久一区免费式 | 国产无遮挡吃胸膜奶免费看 | 国产人妻久久精品二区三区老狼 | 无码人妻丰满熟妇区五十路百度 | 亚洲国产精品久久久久久 | 久久精品99久久香蕉国产色戒 | 亚洲va欧美va天堂v国产综合 | 亚洲第一网站男人都懂 | 水蜜桃亚洲一二三四在线 | 亚洲热妇无码av在线播放 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产精品对白交换视频 | 国产成人精品一区二区在线小狼 | 宝宝好涨水快流出来免费视频 | 国产婷婷色一区二区三区在线 | 内射爽无广熟女亚洲 | 成熟女人特级毛片www免费 | 亚洲の无码国产の无码影院 | 在线观看国产一区二区三区 | 少妇无套内谢久久久久 | 老子影院午夜精品无码 | 亚洲成av人片在线观看无码不卡 | 日韩人妻系列无码专区 | 久久99精品久久久久久动态图 | 日本乱人伦片中文三区 | 亚洲精品国产品国语在线观看 | 天天av天天av天天透 | 国产乱人伦偷精品视频 | 领导边摸边吃奶边做爽在线观看 | 精品久久综合1区2区3区激情 | 国产亚洲精品久久久久久国模美 | 欧美亚洲日韩国产人成在线播放 | 日日噜噜噜噜夜夜爽亚洲精品 | 伊人久久大香线蕉午夜 | 日韩人妻系列无码专区 | 黑人巨大精品欧美黑寡妇 | 红桃av一区二区三区在线无码av | 亚洲毛片av日韩av无码 | 国产亚洲精品久久久久久国模美 | 天天爽夜夜爽夜夜爽 | 亚欧洲精品在线视频免费观看 | 台湾无码一区二区 | 骚片av蜜桃精品一区 | 国产超碰人人爽人人做人人添 | 99精品视频在线观看免费 | 亚洲va欧美va天堂v国产综合 | 亚洲午夜久久久影院 | 性欧美videos高清精品 | 18禁止看的免费污网站 | 欧美人妻一区二区三区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产无av码在线观看 | 日产国产精品亚洲系列 | 久久午夜无码鲁丝片秋霞 | 欧美日韩视频无码一区二区三 | av小次郎收藏 | 国精品人妻无码一区二区三区蜜柚 | 樱花草在线社区www | 中文亚洲成a人片在线观看 | 亚洲一区二区三区四区 | 荫蒂被男人添的好舒服爽免费视频 | 狠狠综合久久久久综合网 | 高潮毛片无遮挡高清免费 | 色欲av亚洲一区无码少妇 | 亚洲综合另类小说色区 | 中国女人内谢69xxxx | 伊人久久婷婷五月综合97色 | 牛和人交xxxx欧美 | 日欧一片内射va在线影院 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 俺去俺来也在线www色官网 | 国产97人人超碰caoprom | 亚洲中文字幕久久无码 | 内射巨臀欧美在线视频 | 亚洲日本va午夜在线电影 | 亚洲色偷偷偷综合网 | 免费男性肉肉影院 | 欧美人与动性行为视频 | 漂亮人妻洗澡被公强 日日躁 | 西西人体www44rt大胆高清 | 小鲜肉自慰网站xnxx | 在线天堂新版最新版在线8 | 国产sm调教视频在线观看 | 久久综合香蕉国产蜜臀av | 亚洲欧美日韩国产精品一区二区 | 一本无码人妻在中文字幕免费 | 欧美熟妇另类久久久久久不卡 | а天堂中文在线官网 | 亚洲色在线无码国产精品不卡 | 亚洲国产精品毛片av不卡在线 | 婷婷色婷婷开心五月四房播播 | 久久久av男人的天堂 | 亚洲日本va午夜在线电影 | 高清国产亚洲精品自在久久 | 欧美放荡的少妇 | 九九综合va免费看 | 性色av无码免费一区二区三区 | 一个人看的www免费视频在线观看 | 亚洲精品欧美二区三区中文字幕 | 欧美大屁股xxxxhd黑色 | 伊人久久婷婷五月综合97色 | 日本护士xxxxhd少妇 | 鲁一鲁av2019在线 | 2020久久香蕉国产线看观看 | 午夜精品一区二区三区在线观看 | 国产一区二区三区精品视频 | 中文字幕精品av一区二区五区 | 欧美国产亚洲日韩在线二区 | 极品嫩模高潮叫床 | 疯狂三人交性欧美 | 午夜精品一区二区三区的区别 | 无码播放一区二区三区 | 人妻少妇精品视频专区 | 亚洲日本va午夜在线电影 | 欧洲极品少妇 | 国产精品鲁鲁鲁 | 正在播放老肥熟妇露脸 | 老头边吃奶边弄进去呻吟 | 国产三级精品三级男人的天堂 | 成熟人妻av无码专区 | 成 人 免费观看网站 | 永久免费观看美女裸体的网站 | 色婷婷综合中文久久一本 | 人人妻人人澡人人爽精品欧美 | 亚洲高清偷拍一区二区三区 | 九月婷婷人人澡人人添人人爽 | 精品国精品国产自在久国产87 | 在线观看欧美一区二区三区 | 麻豆精品国产精华精华液好用吗 | 精品偷拍一区二区三区在线看 | 久久精品国产99久久6动漫 | 国产成人无码区免费内射一片色欲 | 久久久久久av无码免费看大片 | 四虎永久在线精品免费网址 | 成人一区二区免费视频 | 日本在线高清不卡免费播放 | 综合激情五月综合激情五月激情1 | 欧美肥老太牲交大战 | 成人无码影片精品久久久 | 国产欧美熟妇另类久久久 | 欧美35页视频在线观看 | 国产人妻大战黑人第1集 | 婷婷五月综合激情中文字幕 | 国产av剧情md精品麻豆 | 大肉大捧一进一出视频出来呀 | 日韩亚洲欧美中文高清在线 | 图片小说视频一区二区 | 伊人久久婷婷五月综合97色 | 国产真实伦对白全集 | 俄罗斯老熟妇色xxxx | 少妇的肉体aa片免费 | 欧美刺激性大交 | 伊人久久大香线蕉亚洲 | 性啪啪chinese东北女人 | 少妇性俱乐部纵欲狂欢电影 | 亚洲国产高清在线观看视频 | 人人澡人人透人人爽 | 久久精品人妻少妇一区二区三区 | 久久99精品国产.久久久久 | 亚洲区欧美区综合区自拍区 | 欧美亚洲国产一区二区三区 | 97色伦图片97综合影院 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲国产精品无码久久久久高潮 | 久久精品一区二区三区四区 | 成人免费视频视频在线观看 免费 | 又色又爽又黄的美女裸体网站 | 欧美丰满熟妇xxxx | 国产熟妇另类久久久久 | 久久久久免费看成人影片 | www国产精品内射老师 | 欧美人与善在线com | 色诱久久久久综合网ywww | 亚洲人亚洲人成电影网站色 | 色婷婷av一区二区三区之红樱桃 | 欧美兽交xxxx×视频 | 中文字幕+乱码+中文字幕一区 | 久久精品人人做人人综合 | 乱人伦人妻中文字幕无码 | 中文字幕色婷婷在线视频 | 国产内射爽爽大片视频社区在线 | 亚洲精品中文字幕 | 午夜理论片yy44880影院 | 欧美野外疯狂做受xxxx高潮 | 欧美日韩在线亚洲综合国产人 | 成年美女黄网站色大免费全看 | 日日摸日日碰夜夜爽av | 人妻少妇被猛烈进入中文字幕 | 丰满少妇弄高潮了www | 亚洲高清偷拍一区二区三区 | 国产尤物精品视频 | 色婷婷av一区二区三区之红樱桃 | 日日麻批免费40分钟无码 | 夜夜高潮次次欢爽av女 | 高潮喷水的毛片 | 又粗又大又硬毛片免费看 | 无码av最新清无码专区吞精 | 亚洲精品无码国产 | 一本大道伊人av久久综合 | 丰满岳乱妇在线观看中字无码 | 两性色午夜视频免费播放 | 东京热无码av男人的天堂 | 中文字幕无码日韩专区 | 欧美精品一区二区精品久久 | 成人免费视频视频在线观看 免费 | 免费无码一区二区三区蜜桃大 | 亚洲色欲色欲欲www在线 | 中文字幕无线码免费人妻 | 精品偷自拍另类在线观看 | 99精品视频在线观看免费 | 国产 浪潮av性色四虎 | 国产色xx群视频射精 | 国产色精品久久人妻 | www国产亚洲精品久久网站 | 狠狠cao日日穞夜夜穞av | 天干天干啦夜天干天2017 | 免费人成在线视频无码 | 亚洲精品一区二区三区婷婷月 | 日本一卡二卡不卡视频查询 | 亚洲成色www久久网站 | 精品成人av一区二区三区 | 国产激情艳情在线看视频 | 欧美精品一区二区精品久久 | 午夜无码人妻av大片色欲 | 日日天干夜夜狠狠爱 | 国产va免费精品观看 | 超碰97人人做人人爱少妇 | 亚洲精品鲁一鲁一区二区三区 | 亚洲一区av无码专区在线观看 | 中文无码精品a∨在线观看不卡 | 国产办公室秘书无码精品99 | 久久久久99精品成人片 | 国产精品久久国产三级国 | 欧美精品一区二区精品久久 | 草草网站影院白丝内射 | 久青草影院在线观看国产 | 76少妇精品导航 | 综合网日日天干夜夜久久 | 亚洲综合精品香蕉久久网 | 久久综合网欧美色妞网 | 久在线观看福利视频 | 免费人成在线视频无码 | 色一情一乱一伦 | 大肉大捧一进一出好爽视频 | 午夜成人1000部免费视频 | 久久午夜无码鲁丝片秋霞 | 永久免费观看国产裸体美女 | 久久久精品国产sm最大网站 | 一区二区三区乱码在线 | 欧洲 | 国产内射老熟女aaaa | 亚洲色欲久久久综合网东京热 | 一本久道久久综合婷婷五月 | 亚洲第一网站男人都懂 | 夜先锋av资源网站 | 1000部啪啪未满十八勿入下载 | 97色伦图片97综合影院 | 亚洲の无码国产の无码步美 | 精品偷自拍另类在线观看 | 国产精品久久国产精品99 | 美女张开腿让人桶 | 水蜜桃亚洲一二三四在线 | 乱码av麻豆丝袜熟女系列 | 国产乱子伦视频在线播放 | 大乳丰满人妻中文字幕日本 | 人妻人人添人妻人人爱 | 亚洲精品一区二区三区大桥未久 | 日韩视频 中文字幕 视频一区 | 国产性生交xxxxx无码 | 国产高清av在线播放 | 中文亚洲成a人片在线观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 国内精品人妻无码久久久影院 | 伦伦影院午夜理论片 | 国产亚av手机在线观看 | 97无码免费人妻超级碰碰夜夜 | 色欲人妻aaaaaaa无码 | 免费国产黄网站在线观看 | 欧美日韩一区二区综合 | 嫩b人妻精品一区二区三区 | 成人三级无码视频在线观看 | 久久久久国色av免费观看性色 | 亚洲aⅴ无码成人网站国产app | 欧美人与动性行为视频 | yw尤物av无码国产在线观看 | 日韩精品无码一本二本三本色 | 无码精品国产va在线观看dvd | 77777熟女视频在线观看 а天堂中文在线官网 | 国产成人久久精品流白浆 | 精品国产成人一区二区三区 | 中文字幕无码人妻少妇免费 | 日日干夜夜干 | 亚洲成a人片在线观看无码3d | 久久97精品久久久久久久不卡 | 亚洲自偷自偷在线制服 | 国产网红无码精品视频 | 日日躁夜夜躁狠狠躁 | 国产人成高清在线视频99最全资源 | 精品人人妻人人澡人人爽人人 | 国产亚洲人成a在线v网站 | 国产精品亚洲综合色区韩国 | 妺妺窝人体色www婷婷 | 国产精品-区区久久久狼 | 亚洲国产精品久久久久久 | 欧美日本精品一区二区三区 | 亚洲第一无码av无码专区 | 欧美国产日产一区二区 | 日日摸天天摸爽爽狠狠97 | 亚洲色偷偷男人的天堂 | 狂野欧美性猛xxxx乱大交 | 久久婷婷五月综合色国产香蕉 | 曰韩无码二三区中文字幕 | 日韩在线不卡免费视频一区 | 午夜精品久久久久久久 | 无码人妻少妇伦在线电影 | 免费国产成人高清在线观看网站 | 偷窥村妇洗澡毛毛多 | 狠狠躁日日躁夜夜躁2020 | 3d动漫精品啪啪一区二区中 | 98国产精品综合一区二区三区 | 人人妻人人澡人人爽欧美一区九九 | 亚洲精品久久久久久久久久久 | 永久免费精品精品永久-夜色 | 无码帝国www无码专区色综合 | 婷婷丁香六月激情综合啪 | 亚洲日韩av一区二区三区四区 | 强开小婷嫩苞又嫩又紧视频 | 一二三四社区在线中文视频 | 丰满岳乱妇在线观看中字无码 | 色综合久久中文娱乐网 | 少妇一晚三次一区二区三区 | 久久精品女人天堂av免费观看 | 两性色午夜免费视频 | 成人无码精品1区2区3区免费看 | 300部国产真实乱 | 久久综合网欧美色妞网 | 特大黑人娇小亚洲女 | 一本无码人妻在中文字幕免费 | 人妻天天爽夜夜爽一区二区 | 无码吃奶揉捏奶头高潮视频 | 亚洲综合无码一区二区三区 | 欧美 亚洲 国产 另类 | 无码免费一区二区三区 | 国产香蕉尹人综合在线观看 | 久久综合九色综合欧美狠狠 | 日本va欧美va欧美va精品 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 成人一在线视频日韩国产 | 亚洲精品一区二区三区婷婷月 | 国产精品美女久久久网av | 欧美激情内射喷水高潮 | 老熟女乱子伦 | 亚洲综合久久一区二区 | 人妻尝试又大又粗久久 | 国产亚洲精品精品国产亚洲综合 | 色妞www精品免费视频 | 国产精品无码久久av | 99国产欧美久久久精品 | 乱人伦人妻中文字幕无码久久网 | 国产黑色丝袜在线播放 | 亚洲爆乳大丰满无码专区 | aⅴ亚洲 日韩 色 图网站 播放 | 久久 国产 尿 小便 嘘嘘 | 国内精品久久毛片一区二区 | 麻豆成人精品国产免费 | 高潮毛片无遮挡高清免费 | 久久综合给久久狠狠97色 | 无码纯肉视频在线观看 | 国产人成高清在线视频99最全资源 | 天海翼激烈高潮到腰振不止 | 无码一区二区三区在线 | 日日碰狠狠躁久久躁蜜桃 | 最近免费中文字幕中文高清百度 | 内射白嫩少妇超碰 | 亚洲乱亚洲乱妇50p | 欧美精品免费观看二区 | 在线成人www免费观看视频 | 高中生自慰www网站 | 亚洲男人av香蕉爽爽爽爽 | 亚洲国产欧美在线成人 | 国精品人妻无码一区二区三区蜜柚 | 激情五月综合色婷婷一区二区 | 国产精品va在线观看无码 | 欧美xxxx黑人又粗又长 | 丰满少妇人妻久久久久久 | 亚洲s码欧洲m码国产av | 久久亚洲中文字幕精品一区 | 久久久久成人精品免费播放动漫 | 国模大胆一区二区三区 | 人妻少妇被猛烈进入中文字幕 | 强开小婷嫩苞又嫩又紧视频 | 噜噜噜亚洲色成人网站 | 亚洲精品美女久久久久久久 | 人妻无码久久精品人妻 | 强奷人妻日本中文字幕 | 欧美性生交活xxxxxdddd | √天堂资源地址中文在线 | 国产亚洲视频中文字幕97精品 | 久久午夜无码鲁丝片午夜精品 | 亚洲春色在线视频 | 亚洲国精产品一二二线 | 四虎国产精品一区二区 | 人人澡人摸人人添 | 亚洲午夜福利在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 人人妻在人人 | 国产无遮挡又黄又爽免费视频 | 99久久精品国产一区二区蜜芽 | 国产熟妇另类久久久久 | 亚洲毛片av日韩av无码 | 精品国产一区二区三区四区在线看 | 精品无码成人片一区二区98 | 国模大胆一区二区三区 | 日本又色又爽又黄的a片18禁 | 中国女人内谢69xxxx | √天堂中文官网8在线 | 国产特级毛片aaaaaa高潮流水 | 日韩精品乱码av一区二区 | 亚洲综合久久一区二区 | 成人av无码一区二区三区 | 日日碰狠狠躁久久躁蜜桃 | 97久久精品无码一区二区 | 未满成年国产在线观看 | 亚洲色偷偷男人的天堂 | 综合网日日天干夜夜久久 | 乱码午夜-极国产极内射 | 国产午夜福利亚洲第一 | 国产真人无遮挡作爱免费视频 | 国产精品美女久久久久av爽李琼 | 久久亚洲日韩精品一区二区三区 | 亚洲区小说区激情区图片区 | 初尝人妻少妇中文字幕 | 熟妇人妻中文av无码 | 成人一区二区免费视频 | 国产亚洲精品精品国产亚洲综合 | 2019午夜福利不卡片在线 | 日韩精品无码一区二区中文字幕 | 久久99精品国产麻豆蜜芽 | 内射后入在线观看一区 | 国产偷抇久久精品a片69 | 国产色视频一区二区三区 | 久久综合九色综合欧美狠狠 | 高潮毛片无遮挡高清免费 | 国产九九九九九九九a片 | 欧美日本日韩 | 亚洲爆乳无码专区 | 久久无码专区国产精品s | 国产精品视频免费播放 | 欧美成人高清在线播放 | 亚洲精品久久久久avwww潮水 | 人人妻人人澡人人爽精品欧美 | 亚洲精品成人福利网站 | 中文字幕人妻丝袜二区 | 亚洲大尺度无码无码专区 | 全黄性性激高免费视频 | 国产成人久久精品流白浆 | 欧美午夜特黄aaaaaa片 | 国产农村乱对白刺激视频 | 国产一区二区三区日韩精品 | 女人被男人爽到呻吟的视频 | 亚洲综合另类小说色区 | 国产一区二区三区日韩精品 | 国产精品无码一区二区桃花视频 | 成人免费视频视频在线观看 免费 | 免费看男女做好爽好硬视频 | 国产手机在线αⅴ片无码观看 | 国产卡一卡二卡三 | 精品欧美一区二区三区久久久 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产免费久久久久久无码 | 成 人 网 站国产免费观看 | 国产一区二区三区影院 | 老司机亚洲精品影院无码 | 最新国产乱人伦偷精品免费网站 | 亚洲中文字幕在线观看 | 亚洲色欲久久久综合网东京热 | 亚洲国产成人av在线观看 | 日本xxxx色视频在线观看免费 | 熟妇女人妻丰满少妇中文字幕 | 狠狠色噜噜狠狠狠7777奇米 | 激情爆乳一区二区三区 | 成人一在线视频日韩国产 | 国产美女极度色诱视频www | 久久久久久亚洲精品a片成人 | 无码人妻av免费一区二区三区 | 欧美野外疯狂做受xxxx高潮 | 中文字幕无码日韩专区 | 无码播放一区二区三区 | 永久免费观看美女裸体的网站 | 亚洲精品国产品国语在线观看 | 亚洲色大成网站www国产 | 四虎永久在线精品免费网址 | 久久www免费人成人片 | 国产在线一区二区三区四区五区 | 亚洲色偷偷偷综合网 | 丰腴饱满的极品熟妇 | 亚洲爆乳大丰满无码专区 | 男女下面进入的视频免费午夜 | 精品久久久无码人妻字幂 | 国产精品久久久久7777 | 中文字幕久久久久人妻 | 亚洲日韩av片在线观看 | 中文字幕乱码亚洲无线三区 | 亚洲人成网站免费播放 | 国产精品久久久久久亚洲影视内衣 | 日本一卡二卡不卡视频查询 | 国产成人精品优优av | 亚洲国产一区二区三区在线观看 | 久久熟妇人妻午夜寂寞影院 | 国产精品久久久久久亚洲影视内衣 | 装睡被陌生人摸出水好爽 | 图片区 小说区 区 亚洲五月 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲国产精品一区二区第一页 | 亚洲欧洲中文日韩av乱码 | 亚洲中文字幕在线观看 | 成人免费视频视频在线观看 免费 | 性做久久久久久久久 | 国产午夜无码视频在线观看 | 在线观看国产一区二区三区 | 亚洲成a人片在线观看无码 | 人人妻人人澡人人爽精品欧美 | 丰满人妻翻云覆雨呻吟视频 | 婷婷综合久久中文字幕蜜桃三电影 | 西西人体www44rt大胆高清 | 全球成人中文在线 | 国产特级毛片aaaaaa高潮流水 | 日本精品人妻无码77777 天堂一区人妻无码 | 日本va欧美va欧美va精品 | 久久久精品456亚洲影院 | 又湿又紧又大又爽a视频国产 | 九九在线中文字幕无码 | 欧美人与禽猛交狂配 | 麻豆成人精品国产免费 | 国产av一区二区精品久久凹凸 | 蜜臀aⅴ国产精品久久久国产老师 | 俺去俺来也在线www色官网 | 免费中文字幕日韩欧美 | 免费中文字幕日韩欧美 | 午夜精品一区二区三区的区别 | 天天躁夜夜躁狠狠是什么心态 | 亚洲欧美中文字幕5发布 | 东京热男人av天堂 | 玩弄人妻少妇500系列视频 | 国产av无码专区亚洲a∨毛片 | 久久精品国产精品国产精品污 | 国产精品美女久久久久av爽李琼 | 欧美人与动性行为视频 | 日本熟妇大屁股人妻 | 少妇久久久久久人妻无码 | 国产成人精品视频ⅴa片软件竹菊 | a片免费视频在线观看 | 国产高清av在线播放 | 好屌草这里只有精品 | 国产亚洲精品久久久久久 | 麻豆果冻传媒2021精品传媒一区下载 | 小泽玛莉亚一区二区视频在线 | 国产精品久久久午夜夜伦鲁鲁 | √天堂中文官网8在线 | 成人一区二区免费视频 | 国内精品人妻无码久久久影院蜜桃 | 草草网站影院白丝内射 | 又大又硬又爽免费视频 | 国产无遮挡又黄又爽免费视频 | 中文字幕av伊人av无码av | 国产精品无码一区二区桃花视频 | 久久久久久a亚洲欧洲av冫 | 中文字幕人妻无码一夲道 | 国产精品国产三级国产专播 | 国内精品久久久久久中文字幕 | 中文字幕人妻丝袜二区 | 又大又黄又粗又爽的免费视频 | 亚洲欧美日韩综合久久久 | 强辱丰满人妻hd中文字幕 | 欧洲熟妇精品视频 | 国产免费观看黄av片 | 久久亚洲国产成人精品性色 | 欧美高清在线精品一区 | 日本肉体xxxx裸交 | 少妇高潮一区二区三区99 | 成熟人妻av无码专区 | 午夜无码人妻av大片色欲 | 性色欲情网站iwww九文堂 | 少妇被黑人到高潮喷出白浆 | 色五月丁香五月综合五月 | 荡女精品导航 | 性欧美熟妇videofreesex | 九九综合va免费看 | 午夜熟女插插xx免费视频 | 久久午夜无码鲁丝片 | 扒开双腿疯狂进出爽爽爽视频 | av无码电影一区二区三区 | 亚洲日韩精品欧美一区二区 | 欧美国产日产一区二区 | 久久aⅴ免费观看 | 色综合久久久无码中文字幕 | 精品无人国产偷自产在线 | 偷窥日本少妇撒尿chinese | 日日天日日夜日日摸 | 少妇人妻偷人精品无码视频 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲午夜久久久影院 | 国模大胆一区二区三区 | 国产舌乚八伦偷品w中 | 欧美日韩亚洲国产精品 | 牲欲强的熟妇农村老妇女 | 一本久道高清无码视频 | 久久综合网欧美色妞网 | 欧美日本免费一区二区三区 |