站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          機(jī)器視覺領(lǐng)域的核心問題之一就是目標(biāo)檢測(cè)(object detection),它的任務(wù)是找出圖像當(dāng)中所有感興趣的目標(biāo)(物體),確定其位置和大小。作為經(jīng)典的目標(biāo)檢測(cè)框架Faster R-CNN,雖然是2015年的論文,但是它至今仍然是許多目標(biāo)檢測(cè)算法的基礎(chǔ),這在飛速發(fā)展的深度學(xué)習(xí)領(lǐng)域十分難得。而在Faster R-CNN的基礎(chǔ)上改進(jìn)的Mask R-CNN在2018年被提出,并斬獲了ICCV2017年的最佳論文。Mask R-CNN可以應(yīng)用到人體姿勢(shì)識(shí)別,并且在實(shí)例分割、目標(biāo)檢測(cè)、人體關(guān)鍵點(diǎn)檢測(cè)三個(gè)任務(wù)都取得了很好的效果。因此,百度深度學(xué)習(xí)框架PaddlePaddle開源了用于目標(biāo)檢測(cè)的RCNN模型,從而可以快速構(gòu)建強(qiáng)大的應(yīng)用,滿足各種場(chǎng)景的應(yīng)用,包括但不僅限于安防監(jiān)控、醫(yī)學(xué)圖像識(shí)別、交通車輛檢測(cè)、信號(hào)燈識(shí)別、食品檢測(cè)等等。

          項(xiàng)目地址:https://github.com/PaddlePaddle/models/blob/v1.3/fluid/PaddleCV/rcnn/README_cn.md

          目標(biāo)檢測(cè)(Object Detection)與實(shí)例分割(Instance Segmentation)

          目標(biāo)檢測(cè)的任務(wù)就是確定圖像當(dāng)中是否有感興趣的目標(biāo)存在,接著對(duì)感興趣的目標(biāo)進(jìn)行精準(zhǔn)定位。當(dāng)下非?;馃岬臒o人駕駛汽車,就非常依賴目標(biāo)檢測(cè)和識(shí)別,這需要非常高的檢測(cè)精度和定位精度。目前,用于目標(biāo)檢測(cè)的方法通常屬于基于機(jī)器學(xué)習(xí)的方法或基于深度學(xué)習(xí)的方法。 對(duì)于機(jī)器學(xué)習(xí)方法,首先使用SIFT、HOG等方法定義特征,然后使用支持向量機(jī)(SVM)、Adaboost等技術(shù)進(jìn)行分類。 對(duì)于深度學(xué)習(xí)方法,深度學(xué)習(xí)技術(shù)能夠在沒有專門定義特征的情況下進(jìn)行端到端目標(biāo)檢測(cè),并且通?;诰矸e神經(jīng)網(wǎng)絡(luò)(CNN)。但是傳統(tǒng)的目標(biāo)檢測(cè)方法有如下幾個(gè)問題:光線變化較快時(shí),算法效果不好;緩慢運(yùn)動(dòng)和背景顏色一致時(shí)不能提取出特征像素點(diǎn);時(shí)間復(fù)雜度高;抗噪性能差。因此,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法得到了廣泛應(yīng)用,該框架包含有Faster R-CNN,Yolo,Mask R-CNN等,圖1和圖2分別顯示的是基于PaddlePaddle深度學(xué)習(xí)框架訓(xùn)練的Faster R-CNN和Mask R-CNN模型對(duì)圖片中的物體進(jìn)行目標(biāo)檢測(cè)。

          從圖1中可以看出,目標(biāo)檢測(cè)主要是檢測(cè)一張圖片中有哪些目標(biāo),并且使用方框表示出來,方框中包含的信息有目標(biāo)所屬類別。圖2與圖1的最大區(qū)別在于,圖2除了把每一個(gè)物體的方框標(biāo)注出來,并且把每個(gè)方框中像素所屬的類別也標(biāo)記了出來。

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          圖1 基于paddlepaddle訓(xùn)練的Faster R-CNN模型預(yù)測(cè)結(jié)果

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          圖2基于paddlepaddle訓(xùn)練的Mask R-CNN模型預(yù)測(cè)結(jié)果

          從R-CNN到Mask R-CNN

          Mask R-CNN是承繼于Faster R-CNN,Mask R-CNN只是在Faster R-CNN上面增加了一個(gè)Mask Prediction Branch(Mask預(yù)測(cè)分支),并且在ROI Pooling的基礎(chǔ)之上提出了ROI Align。所以要想理解Mask R-CNN,就要先熟悉Faster R-CNN。同樣的,F(xiàn)aster R-CNN是承繼于Fast R-CNN,而Fast R-CNN又承繼于R-CNN,因此,為了能讓大家更好的理解基于CNN的目標(biāo)檢測(cè)方法,我們從R-CNN開始切入,一直介紹到Mask R-CNN。

          R-CNN

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Regions with CNN features)使用深度模型來解決目標(biāo)檢測(cè)。

          R-CNN的操作步驟

          Selective search(選擇性搜索):首先對(duì)每一張輸入圖像使用選擇性搜索來選取多個(gè)高質(zhì)量的提議區(qū)域(region proposal),大約提取2000個(gè)左右的提議區(qū)域;

          Resize(圖像尺寸調(diào)整):接著對(duì)每一個(gè)提議區(qū)域,將其縮放(warp)成卷積神經(jīng)網(wǎng)絡(luò)需要的輸入尺寸(277*277);

          特征抽?。哼x取一個(gè)預(yù)先訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò),去掉最后的輸出層來作為特征抽取模塊;

          SVM(類別預(yù)測(cè)):將每一個(gè)提議區(qū)域提出的CNN特征輸入到支持向量機(jī)(SVM)來進(jìn)行物體類別分類。注:這里第 i 個(gè) SVM 用來預(yù)測(cè)樣本是否屬于第 i 類;

          Bounding Box Regression(邊框預(yù)測(cè)):對(duì)于支持向量機(jī)分好類的提議區(qū)域做邊框回歸,訓(xùn)練一個(gè)線性回歸模型來預(yù)測(cè)真實(shí)邊界框,校正原來的建議窗口,生成預(yù)測(cè)窗口坐標(biāo)。

          R-CNN優(yōu)缺點(diǎn)分析

          優(yōu)點(diǎn):R-CNN 對(duì)之前物體識(shí)別算法的主要改進(jìn)是使用了預(yù)先訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)來抽取特征,有效的提升了識(shí)別精度。

          缺點(diǎn):速度慢。對(duì)一張圖像我們可能選出上千個(gè)興趣區(qū)域,這樣導(dǎo)致每張圖像需要對(duì)卷積網(wǎng)絡(luò)做上千次的前向計(jì)算。

          Fast R-CNN

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          R-CNN 的主要性能瓶頸在于需要對(duì)每個(gè)提議區(qū)域(region proposal)獨(dú)立的抽取特征,這會(huì)造成區(qū)域會(huì)有大量重疊,獨(dú)立的特征抽取導(dǎo)致了大量的重復(fù)計(jì)算。因此,F(xiàn)ast R-CNN 對(duì) R-CNN 的一個(gè)主要改進(jìn)在于首先對(duì)整個(gè)圖像進(jìn)行特征抽取,然后再選取提議區(qū)域,從而減少重復(fù)計(jì)算。

          Fast R-CNN 的操作步驟

          Selective Search(選擇性搜索):首先對(duì)每一張輸入圖像使用選擇性搜索(selective search)算法來選取多個(gè)高質(zhì)量的提議區(qū)域(region proposal),大約提取2000個(gè)左右的提議區(qū)域;

          將整張圖片輸入卷積神經(jīng)網(wǎng)絡(luò),對(duì)全圖進(jìn)行特征提取;

          把提議區(qū)域映射到卷積神經(jīng)網(wǎng)絡(luò)的最后一層卷積(feature map)上;

          RoI Pooling:引入了興趣區(qū)域池化層(Region of Interest Pooling)來對(duì)每個(gè)提議區(qū)域提取同樣大小的輸出;

          Softmax:在物體分類時(shí),F(xiàn)ast R-CNN 不再使用多個(gè) SVM,而是像之前圖像分類那樣使用 Softmax 回歸來進(jìn)行多類預(yù)測(cè)。

          Fast R-CNN優(yōu)缺點(diǎn)分析

          優(yōu)點(diǎn):對(duì)整個(gè)圖像進(jìn)行特征抽取,然后再選取提議區(qū)域,從而減少重復(fù)計(jì)算;

          缺點(diǎn):選擇性搜索費(fèi)時(shí);

          缺點(diǎn):不用Resize,不適合求導(dǎo);

          Faster R-CNN

          Faster R-CNN 對(duì) Fast R-CNN 做了進(jìn)一步改進(jìn),它將 Fast R-CNN 中的選擇性搜索替換成區(qū)域提議網(wǎng)絡(luò)(region proposal network)。RPN 以錨框(anchors)為起始點(diǎn),通過一個(gè)小神經(jīng)網(wǎng)絡(luò)來選擇區(qū)域提議。

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          Faster R-CNN整體網(wǎng)絡(luò)可以分為4個(gè)主要內(nèi)容

          基礎(chǔ)卷積層(CNN):作為一種卷積神經(jīng)網(wǎng)絡(luò)目標(biāo)檢測(cè)方法,F(xiàn)aster R-CNN首先使用一組基礎(chǔ)的卷積網(wǎng)絡(luò)提取圖像的特征圖。特征圖被后續(xù)RPN層和全連接層共享。本示例采用ResNet-50作為基礎(chǔ)卷積層。

          區(qū)域生成網(wǎng)絡(luò)(RPN):RPN網(wǎng)絡(luò)用于生成候選區(qū)域(proposals)。該層通過一組固定的尺寸和比例得到一組錨點(diǎn)(anchors), 通過softmax判斷錨點(diǎn)屬于前景或者背景,再利用區(qū)域回歸修正錨點(diǎn)從而獲得精確的候選區(qū)域。

          RoI Pooling:該層收集輸入的特征圖和候選區(qū)域,將候選區(qū)域映射到特征圖中并池化為統(tǒng)一大小的區(qū)域特征圖,送入全連接層判定目標(biāo)類別, 該層可選用RoIPool和RoIAlign兩種方式,在config.py中設(shè)置roi_func。

          檢測(cè)層:利用區(qū)域特征圖計(jì)算候選區(qū)域的類別,同時(shí)再次通過區(qū)域回歸獲得檢測(cè)框最終的精確位置。

          Faster R-CNN優(yōu)缺點(diǎn)分析

          優(yōu)點(diǎn):RPN 通過標(biāo)注來學(xué)習(xí)預(yù)測(cè)跟真實(shí)邊界框更相近的提議區(qū)域,從而減小提議區(qū)域的數(shù)量同時(shí)保證最終模型的預(yù)測(cè)精度。

          缺點(diǎn):無法達(dá)到實(shí)時(shí)目標(biāo)檢測(cè)。

          Mask R-CNN

          Faster R-CNN 在物體檢測(cè)中已達(dá)到非常好的性能,Mask R-CNN在此基礎(chǔ)上更進(jìn)一步:得到像素級(jí)別的檢測(cè)結(jié)果。 對(duì)每一個(gè)目標(biāo)物體,不僅給出其邊界框,并且對(duì)邊界框內(nèi)的各個(gè)像素是否屬于該物體進(jìn)行標(biāo)記。Mask R-CNN同樣為兩階段框架,第一階段掃描圖像生成候選框;第二階段根據(jù)候選框得到分類結(jié)果,邊界框,同時(shí)在原有Faster R-CNN模型基礎(chǔ)上添加分割分支,得到掩碼結(jié)果,實(shí)現(xiàn)了掩碼和類別預(yù)測(cè)關(guān)系的解藕。

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)
        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          圖3 Mask R-CNN網(wǎng)絡(luò)結(jié)構(gòu)泛化圖

          Mask R-CNN的創(chuàng)新點(diǎn)

          解決特征圖與原始圖像上的RoI不對(duì)準(zhǔn)問題:在Faster R-CNN中,沒有設(shè)計(jì)網(wǎng)絡(luò)的輸入和輸出的像素級(jí)別的對(duì)齊機(jī)制(pixel to pixel)。為了解決特征不對(duì)準(zhǔn)的問題,文章作者提出了RoIAlign層來解決這個(gè)問題,它能準(zhǔn)確的保存空間位置,進(jìn)而提高mask的準(zhǔn)確率。

          將掩模預(yù)測(cè)(mask prediction)和分類預(yù)測(cè)(class prediction)拆解:該框架結(jié)構(gòu)對(duì)每個(gè)類別獨(dú)立的預(yù)測(cè)一個(gè)二值mask,不依賴分類(classification)分支的預(yù)測(cè)結(jié)果

          掩模表示(mask representation):有別于類別,框回歸,這幾個(gè)的輸出都可以是一個(gè)向量,但是mask必須要保持一定的空間結(jié)構(gòu)信息,因此作者采用全連接層(FCN)對(duì)每一個(gè)RoI中預(yù)測(cè)一個(gè)m*m的掩模。

          圖4展示了Mask R-CNN在像素級(jí)別的目標(biāo)檢測(cè)結(jié)果:

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          圖4 Mask R-CNN:像素級(jí)別的目標(biāo)檢測(cè)

          基于PaddlePaddle 實(shí)戰(zhàn)

          環(huán)境準(zhǔn)備:需要PaddlePaddle Fluid的v.1.3.0或以上的版本。如果你的運(yùn)行環(huán)境中的PaddlePaddle低于此版本,請(qǐng)根據(jù)安裝文檔中的說明來更新PaddlePaddle。

          數(shù)據(jù)準(zhǔn)備:在MS-COCO數(shù)據(jù)集上進(jìn)行訓(xùn)練,可以通過腳本來直接下載數(shù)據(jù)集:

          cd dataset/coco

          ./download.sh

          數(shù)據(jù)目錄結(jié)構(gòu)如下:

          data/coco/

          ├── annotations

          │ ├── instances_train2014.json

          │ ├── instances_train2017.json

          │ ├── instances_val2014.json

          │ ├── instances_val2017.json

          | …

          ├── train2017

          │ ├── 000000000009.jpg

          │ ├── 000000580008.jpg

          | …

          ├── val2017

          │ ├── 000000000139.jpg

          │ ├── 000000000285.jpg

          | …

          模型訓(xùn)練:

          下載預(yù)訓(xùn)練模型: 本示例提供Resnet-50預(yù)訓(xùn)練模型,該模性轉(zhuǎn)換自Caffe,并對(duì)批標(biāo)準(zhǔn)化層(Batch Normalization Layer)進(jìn)行參數(shù)融合。采用如下命令下載預(yù)訓(xùn)練模型。

          sh ./pretrained/download.sh

          通過初始化pretrained_model 加載預(yù)訓(xùn)練模型。同時(shí)在參數(shù)微調(diào)時(shí)也采用該設(shè)置加載已訓(xùn)練模型。 請(qǐng)?jiān)谟?xùn)練前確認(rèn)預(yù)訓(xùn)練模型下載與加載正確,否則訓(xùn)練過程中損失可能會(huì)出現(xiàn)NAN。

          安裝cocoapi:

          訓(xùn)練前需要首先下載cocoapi:

          git clone https://github.com/cocodataset/cocoapi.git

          cd cocoapi/PythonAPI

          # if cython is not installed

          pip install Cython

          # Install into global site-packages

          make install

          # Alternatively, if you do not have permissions or prefer

          # not to install the COCO API into global site-packages

          python2 setup.py install –user

          數(shù)據(jù)準(zhǔn)備完畢后,可以通過如下的方式啟動(dòng)訓(xùn)練:

          #Faster RCNN

          python train.py

          –model_save_dir=output/

          –pretrained_model=${path_to_pretrain_model}

          –data_dir=${path_to_data}

          –MASK_ON=False

          #Mask RCNN

          python train.py

          –model_save_dir=output/

          –pretrained_model=${path_to_pretrain_model}

          –data_dir=${path_to_data}

          –MASK_ON=True

          通過設(shè)置export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7指定8卡GPU訓(xùn)練。

          通過設(shè)置MASK_ON選擇Faster RCNN和Mask RCNN模型。

          可選參數(shù)見:

          python train.py –help

          數(shù)據(jù)讀取器說明:

          數(shù)據(jù)讀取器定義在reader.py中。所有圖像將短邊等比例縮放至scales,若長邊大于max_size, 則再次將長邊等比例縮放至max_size。在訓(xùn)練階段,對(duì)圖像采用水平翻轉(zhuǎn)。支持將同一個(gè)batch內(nèi)的圖像padding為相同尺寸。

          模型設(shè)置:

          分別使用RoIAlign和RoIPool兩種方法。

          訓(xùn)練過程pre_nms=12000, post_nms=2000,測(cè)試過程pre_nms=6000, post_nms=1000。nms閾值為0.7。

          RPN網(wǎng)絡(luò)得到labels的過程中,fg_fraction=0.25,fg_thresh=0.5,bg_thresh_hi=0.5,bg_thresh_lo=0.0

          RPN選擇anchor時(shí),rpn_fg_fraction=0.5,rpn_positive_overlap=0.7,rpn_negative_overlap=0.3

          訓(xùn)練策略

          采用momentum優(yōu)化算法訓(xùn)練,momentum=0.9。

          權(quán)重衰減系數(shù)為0.0001,前500輪學(xué)習(xí)率從0.00333線性增加至0.01。在120000,160000輪時(shí)使用0.1,0.01乘子進(jìn)行學(xué)習(xí)率衰減,最大訓(xùn)練180000輪。同時(shí)我們也提供了2x模型,該模型采用更多的迭代輪數(shù)進(jìn)行訓(xùn)練,訓(xùn)練360000輪,學(xué)習(xí)率在240000,320000輪衰減,其他參數(shù)不變,訓(xùn)練最大輪數(shù)和學(xué)習(xí)率策略可以在config.py中對(duì)max_iter和lr_steps進(jìn)行設(shè)置。

          非基礎(chǔ)卷積層卷積bias學(xué)習(xí)率為整體學(xué)習(xí)率2倍。

          基礎(chǔ)卷積層中,affine_layers參數(shù)不更新,res2層參數(shù)不更新。

          模型評(píng)估:

          模型評(píng)估是指對(duì)訓(xùn)練完畢的模型評(píng)估各類性能指標(biāo)。本示例采用COCO官方評(píng)估。eval_coco_map.py是評(píng)估模塊的主要執(zhí)行程序,調(diào)用示例如下:

          #Faster RCNN

          python eval_coco_map.py

          –dataset=coco2017

          –pretrained_model=${path_to_trained_model}

          –MASK_ON=False

          #Mask RCNN

          python eval_coco_map.py

          –dataset=coco2017

          –pretrained_model=${path_to_trained_model}

          –MASK_ON=True

          通過設(shè)置–pretrained_model=${path_to_trained_model}指定訓(xùn)練好的模型,注意不是初始化的模型。

          通過設(shè)置export CUDA_VISIBLE_DEVICES=0指定單卡GPU評(píng)估。

          通過設(shè)置MASK_ON選擇Faster RCNN和Mask RCNN模型。

          模型精度:

          下表為模型評(píng)估結(jié)果:

          #Faster RCNN:

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          End2End Faster R-CNN: 使用RoIPool,不對(duì)圖像做填充處理。

          End2End Faster R-CNN RoIAlign 1x: 使用RoIAlign,不對(duì)圖像做填充處理。

          End2End Faster R-CNN RoIAlign 2x: 使用RoIAlign,不對(duì)圖像做填充處理。訓(xùn)練360000輪,學(xué)習(xí)率在240000,320000輪衰減。

          #Mask RCNN:

        經(jīng)典目標(biāo)檢測(cè)方法Faster R-CNN和Mask R-CNN|基于PaddlePaddle深度學(xué)習(xí)平臺(tái)的實(shí)戰(zhàn)

          End2End Mask R-CNN: 使用RoIAlign,不對(duì)圖像做填充處理。

          模型推斷:

          模型推斷可以獲取圖像中的物體及其對(duì)應(yīng)的類別,infer.py是主要執(zhí)行程序,調(diào)用示例如下:

          python infer.py

          –pretrained_model=${path_to_trained_model}

          –image_path=dataset/coco/val2017/000000000139.jpg

          –draw_threshold=0.6

          注意,請(qǐng)正確設(shè)置模型路徑${path_to_trained_model}和預(yù)測(cè)圖片路徑。默認(rèn)使用GPU設(shè)備,也可通過設(shè)置–use_gpu=False使用CPU設(shè)備。可通過設(shè)置draw_threshold調(diào)節(jié)得分閾值控制檢測(cè)框的個(gè)數(shù)。

          傳送門:

          PaddlePaddle Github: https://github.com/PaddlePaddle

          R-CNN in PaddlePaddle Github:https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/rcnn

          Reference:

          Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmentation.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.

          https://arxiv.org/abs/1311.2524

          Girshick, Ross. “Fast r-cnn.” Proceedings of the IEEE international conference on computer vision. 2015.

          https://arxiv.org/abs/1504.08083

          Ren, Shaoqing, et al. “Faster r-cnn: Towards real-time object detection with region proposal networks.” Advances in neural information processing systems. 2015.

          https://arxiv.org/abs/1506.01497

          He, Kaiming, et al. “Mask r-cnn.” Proceedings of the IEEE international conference on computer vision. 2017.

          https://arxiv.org/abs/1703.06870

        特別提醒:本網(wǎng)內(nèi)容轉(zhuǎn)載自其他媒體,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。本站不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。如若本網(wǎng)有任何內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系我們,本站將會(huì)在24小時(shí)內(nèi)處理完畢。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 欧美成人精品欧美一级乱黄一区二区精品在线| 午夜一级日韩精品制服诱惑我们这边 | 在线精品亚洲一区二区三区| 一区二区精品在线| 精品久久久久久亚洲精品| 免费人欧美日韩在线精品| 青青草国产精品久久久久| 999国内精品永久免费观看| 亚洲AV无码成人精品区在线观看| 久久精品国产亚洲7777| 中文字幕亚洲综合精品一区| HEYZO无码综合国产精品| 亚洲AV成人无码久久精品老人| 久久亚洲av无码精品浪潮| 99久久精品国产综合一区| 欧美日韩精品一区二区在线播放| 国产精品福利自产拍在线观看| 亚洲国产精品一区第二页| 无码精品人妻一区| 久久久人妻精品无码一区| 国精品产露脸自拍| 国产亚洲精品无码拍拍拍色欲| 国产成人亚洲精品91专区手机| 亚洲国产综合91精品麻豆| 亚洲欧美日韩精品久久| 欧美国产日韩精品| 九九精品成人免费国产片| 国产成人精品日本亚洲直接| 999精品视频这里只有精品| 国产精品无圣光一区二区| 99久久99这里只有免费费精品| 国产精品vⅰdeoxxxx国产| 99久久er这里只有精品18| 国产日韩精品在线| 精品免费视在线观看| 91精品观看91久久久久久| 国产午夜精品久久久久九九| 久草热8精品视频在线观看| 欧美精品亚洲人成在线观看| 日韩一区二区精品观看| 婷婷成人国产精品|