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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

『跟着雨哥学AI』系列之七:趣味案例——动手制作专属证件照

發(fā)布時間:2023/12/20 ChatGpt 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 『跟着雨哥学AI』系列之七:趣味案例——动手制作专属证件照 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊左上方藍(lán)字關(guān)注我們

課程簡介:

“跟著雨哥學(xué)AI”是百度飛槳開源框架近期針對高層API推出的系列課。本課程由多位資深飛槳工程師精心打造,不僅提供了從數(shù)據(jù)處理、到模型組網(wǎng)、模型訓(xùn)練、模型評估和推理部署全流程講解;還提供了豐富的趣味案例,旨在幫助開發(fā)者更全面清晰地掌握百度飛槳框架的用法,并能夠舉一反三、靈活使用飛槳框架進(jìn)行深度學(xué)習(xí)實踐。

前言:?嗨,同學(xué)們好,我是雨哥,又是一年畢業(yè)季啦,很多同學(xué)今年三月或者六月份就陸陸續(xù)續(xù)從學(xué)校畢業(yè)啦,那么不管是繼續(xù)深造還是著手找工作都需要我們自己提前制備一份充實的簡歷。制備簡歷那就自然少不了一張好看的證件照了,然而每個單位對證件照的要求各不相同,有的需要白底,有的需要紅底,除此之外攝影師的水平也隨心所欲,還不如我們手機(jī)前置攝像頭的自拍。既然如此,那么今天我們就結(jié)合我們之前學(xué)過的理論知識,制作一個專屬證件照吧。

證件照的制作原理?

開始之前同學(xué)們會有幾個疑問,什么是證件照的制作呢?我們該如何去制作證件照呢?

本次的證件照制作是基于我們手機(jī)中普通的正面自拍照片,簡單來說,我們需要制作一個生成證件照的系統(tǒng),輸入一張生活正面自拍照,就會輸出一個白底或者藍(lán)底的證件照。大家是不是已經(jīng)明白了?簡而言之我們的制作的核心工藝在于摳圖,通過一張生活自拍照,我們使用深度學(xué)習(xí)模型去掉我們生活照雜亂的背景,扣出我們的正面自拍,搭配純色背景,就可以快速制作一款令我們滿意的證件照。

By the way,畢竟攝影師是我們自己,拍的丑了也不能打自己~

在計算機(jī)視覺領(lǐng)域,摳圖可以通過圖像分割技術(shù)來實現(xiàn),而圖像分割技術(shù)指的是將數(shù)字圖像細(xì)分為多個圖像子區(qū)域的過程。其實,圖像分割的目的是簡化或改變圖像的表示形式,使得圖像更容易理解和分析。圖像分割通常用于定位圖像中的物體和邊界(線,曲線等)。更精確的說,圖像分割是對圖像中的每個像素加標(biāo)簽的一個過程,這一過程使得具有相同標(biāo)簽的像素具有某種共同視覺特性。

圖像分割的應(yīng)用領(lǐng)域非常多,無人車、地塊檢測、表計識別等等。

證件照的制作流程?

萬變不離其宗,我們需要遵循如下圖所示的框架。從左到右,數(shù)據(jù)集的準(zhǔn)備、數(shù)據(jù)的預(yù)處理及加載、模型組建、模型訓(xùn)練、模型測試以及模型預(yù)測等。本教程將簡要介紹如何通過飛槳開源框架的高層API實現(xiàn)圖像分割技術(shù),實現(xiàn)證件照的制作。?

Note:有同學(xué)問(其實沒同學(xué)問),為什么這個圖要畫成U型啊,很奇怪唉?咳咳,只是單純的為了和下文呼應(yīng)一下,下面介紹我們的嘉賓。

本教程中我們采用了一個在圖像分割領(lǐng)域比較熟知的U-Net網(wǎng)絡(luò)結(jié)構(gòu),是一個基于FCN做改進(jìn)后的一個深度學(xué)習(xí)網(wǎng)絡(luò),包含下采樣(編碼器,特征提取)和上采樣(解碼器,分辨率還原)兩個階段,因模型結(jié)構(gòu)比較像U型而命名為U-Net。模型結(jié)構(gòu)如下圖所示。

Ronneberger O , Fischer P , Brox T . U-Net: Convolutional Networks for Biomedical Image Segmentation[C]// International Conference on Medical Image Computing and Computer-Assisted Intervention. Springer, Cham, 2015.

數(shù)據(jù)集的準(zhǔn)備

我們采用的是AI Studio數(shù)據(jù)集中自帶人像語義分割數(shù)據(jù)集,如圖所示,為人體正面照片。我們首先需要在建立項目的時候添加該數(shù)據(jù)集,然后解壓該數(shù)據(jù)集。

#?解壓該數(shù)據(jù)集 !unzip?-q?-o?/home/aistudio/data/data59640/koto.zip

解壓數(shù)據(jù)集之后,我們可以看到如下的目錄結(jié)構(gòu):

koto/ ├──?imgs │???├──?00003-256.jpg │???├──?...... ├──?annos │???├──?00001-308.png │???├──?...... ├──?labels.txt ├──?train_list.txt └──?valid_list.txt

imgs和annos目錄分別對應(yīng)原圖和標(biāo)簽數(shù)據(jù),train_list.txt和valid_list.txt分別為訓(xùn)練集和驗證集。

數(shù)據(jù)加載

得到數(shù)據(jù)集以后,我們需要進(jìn)行數(shù)據(jù)的加載工作。飛槳(PaddlePaddle)數(shù)據(jù)集加載方案是統(tǒng)一使用Dataset(數(shù)據(jù)集定義) + DataLoader(多進(jìn)程數(shù)據(jù)集加載)。

首先我們先進(jìn)行數(shù)據(jù)集的定義,數(shù)據(jù)集定義主要是實現(xiàn)一個新的Dataset類,繼承父類paddle.io.Dataset,并實現(xiàn)父類中以下兩個抽象方法,__getitem__和__len__:

import?paddle paddle.__version__'2.0.0-rc1'

需要注意的是,這個數(shù)據(jù)集中的標(biāo)簽數(shù)據(jù)為黑白單通道的圖像,每個像素點的值為0-255,根據(jù)任務(wù)需要,我們將其轉(zhuǎn)換為0、1標(biāo)簽,0表示背景,1表示人像。由于數(shù)據(jù)中部分人像為黑色,部分為白色,所以根據(jù)第一個像素點的值決定其背景的顏色,分類討論。

import?io import?numpy?as?np import?matplotlib.pyplot?as?plt from?PIL?import?Image?as?PilImageimport?paddle from?paddle.io?import?Dataset from?paddle.vision.transforms?import?transforms?as?T from?paddle.nn?import?functional?as?FIMAGE_SIZE?=?(384,?384) class?PetDataset(Dataset):"""數(shù)據(jù)集定義"""def?__init__(self,?mode='train'):"""構(gòu)造函數(shù)"""self.image_size?=?IMAGE_SIZEself.mode?=?mode.lower()assert?self.mode?in?['train',?'valid',?'predict'],?\"mode?should?be?'train'?or?'valid'?or?'predict',?but?got?{}".format(self.mode)self.train_images?=?[]self.label_images?=?[]with?open('koto/{}_list.txt'.format(self.mode),?'r')?as?f:for?line?in?f.readlines():image,?label?=?line.strip().split('?')image?=?image.replace('/mnt/d/data/',?'')label?=?label.replace('/mnt/d/data/',?'')self.train_images.append(image)self.label_images.append(label)def?_load_img(self,?path,?color_mode='rgb',?transforms=[]):"""統(tǒng)一的圖像處理接口封裝,用于規(guī)整圖像大小和通道"""with?open(path,?'rb')?as?f:img?=?PilImage.open(io.BytesIO(f.read()))if?color_mode?==?'grayscale':#?if?image?is?not?already?an?8-bit,?16-bit?or?32-bit?grayscale?image#?convert?it?to?an?8-bit?grayscale?image.if?img.mode?not?in?('L',?'I;16',?'I'):img?=?img.convert('L')elif?color_mode?==?'rgba':if?img.mode?!=?'RGBA':img?=?img.convert('RGBA')elif?color_mode?==?'rgb':if?img.mode?!=?'RGB':img?=?img.convert('RGB')else:raise?ValueError('color_mode?must?be?"grayscale",?"rgb",?or?"rgba"')return?T.Compose([T.Resize(self.image_size)]?+?transforms)(img)def?__getitem__(self,?idx):"""返回?image,?label"""train_image?=?self._load_img(self.train_images[idx],transforms=[T.Transpose(),T.Normalize(mean=127.5,?std=127.5)])?#?加載原始圖像label_image?=?self._load_img(self.label_images[idx],color_mode='grayscale',transforms=[T.Grayscale()])?#?加載Label圖像#?返回image,?labeltrain_image?=?np.array(train_image,?dtype='float32')label_image?=?np.array(label_image,?dtype='int64')#?將Label圖像轉(zhuǎn)換為標(biāo)簽,0:背景,1:人像if?label_image[0][0]?==?0:??#?背景黑色,人像白色for?i?in?range(len(label_image)):for?j?in?range(len(label_image[i])):if?label_image[i][j]?>?128:label_image[i][j]?=?1else:label_image[i][j]?=?0else:#?背景白色,人像黑色for?i?in?range(len(label_image)):for?j?in?range(len(label_image[i])):if?label_image[i][j]?<?128:label_image[i][j]?=?1else:label_image[i][j]?=?0return?train_image,?label_imagedef?__len__(self):"""返回數(shù)據(jù)集總數(shù)"""return?len(self.train_images)

模型組建

網(wǎng)絡(luò)結(jié)構(gòu)這里我們用了上節(jié)課講到的U-Net網(wǎng)絡(luò),本節(jié)課就不做過多的贅述了,如果大家想具體了解也可以回顧上節(jié)課的內(nèi)容,『跟著雨哥學(xué)AI』系列06:趣味案例——基于U-Net的寵物圖像分割

定義網(wǎng)絡(luò)結(jié)構(gòu)組建當(dāng)中用到的一些基礎(chǔ)模塊

定義模型所需要用到的深度可分離卷積、編碼器和解碼器。

from?paddle.nn?import?functional?as?F import?numpy?as?np#?深度可分離卷積定義,目標(biāo)減少參數(shù)個數(shù),減少計算量 class?SeparableConv2D(paddle.nn.Layer):def?__init__(self,in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=None,weight_attr=None,bias_attr=None,data_format="NCHW"):super(SeparableConv2D,?self).__init__()self._padding?=?paddingself._stride?=?strideself._dilation?=?dilationself._in_channels?=?in_channelsself._data_format?=?data_format#?第一次卷積參數(shù),沒有偏置參數(shù)filter_shape?=?[in_channels,?1]?+?self.convert_to_list(kernel_size,?2,?'kernel_size')self.weight_conv?=?self.create_parameter(shape=filter_shape,?attr=weight_attr)#?第二次卷積參數(shù)filter_shape?=?[out_channels,?in_channels]?+?self.convert_to_list(1,?2,?'kernel_size')self.weight_pointwise?=?self.create_parameter(shape=filter_shape,?attr=weight_attr)self.bias_pointwise?=?self.create_parameter(shape=[out_channels],attr=bias_attr,is_bias=True)def?convert_to_list(self,?value,?n,?name,?dtype=np.int):if?isinstance(value,?dtype):return?[value,?]?*?nelse:try:value_list?=?list(value)except?TypeError:raise?ValueError("The?"?+?name?+"'s?type?must?be?list?or?tuple.?Received:?"?+?str(value))if?len(value_list)?!=?n:raise?ValueError("The?"?+?name?+?"'s?length?must?be?"?+?str(n)?+".?Received:?"?+?str(value))for?single_value?in?value_list:try:dtype(single_value)except?(ValueError,?TypeError):raise?ValueError("The?"?+?name?+?"'s?type?must?be?a?list?or?tuple?of?"?+?str(n)?+?"?"?+?str(dtype)?+?"?.?Received:?"?+?str(value)?+?"?""including?element?"?+?str(single_value)?+?"?of?type"?+?"?"+?str(type(single_value)))return?value_listdef?forward(self,?inputs):conv_out?=?F.conv2d(inputs,self.weight_conv,padding=self._padding,stride=self._stride,dilation=self._dilation,groups=self._in_channels,data_format=self._data_format)out?=?F.conv2d(conv_out,self.weight_pointwise,bias=self.bias_pointwise,padding=0,stride=1,dilation=1,groups=1,data_format=self._data_format)return?out#?定義下采樣編碼器 class?Encoder(paddle.nn.Layer):def?__init__(self,?in_channels,?out_channels):super(Encoder,?self).__init__()self.relus?=?paddle.nn.LayerList([paddle.nn.ReLU()?for?i?in?range(2)])self.separable_conv_01?=?SeparableConv2D(in_channels,out_channels,kernel_size=3,padding='same')self.bns?=?paddle.nn.LayerList([paddle.nn.BatchNorm2D(out_channels)?for?i?in?range(2)])self.separable_conv_02?=?SeparableConv2D(out_channels,out_channels,kernel_size=3,padding='same')self.pool?=?paddle.nn.MaxPool2D(kernel_size=3,?stride=2,?padding=1)self.residual_conv?=?paddle.nn.Conv2D(in_channels,out_channels,kernel_size=1,stride=2,padding='same')def?forward(self,?inputs):previous_block_activation?=?inputsy?=?self.relus[0](inputs)y?=?self.separable_conv_01(y)y?=?self.bns[0](y)y?=?self.relus[1](y)y?=?self.separable_conv_02(y)y?=?self.bns[1](y)y?=?self.pool(y)residual?=?self.residual_conv(previous_block_activation)y?=?paddle.add(y,?residual)return?y#?定義上采樣解碼器 class?Decoder(paddle.nn.Layer):def?__init__(self,?in_channels,?out_channels):super(Decoder,?self).__init__()self.relus?=?paddle.nn.LayerList([paddle.nn.ReLU()?for?i?in?range(2)])self.conv_transpose_01?=?paddle.nn.Conv2DTranspose(in_channels,out_channels,kernel_size=3,padding=1)self.conv_transpose_02?=?paddle.nn.Conv2DTranspose(out_channels,out_channels,kernel_size=3,padding=1)self.bns?=?paddle.nn.LayerList([paddle.nn.BatchNorm2D(out_channels)?for?i?in?range(2)])self.upsamples?=?paddle.nn.LayerList([paddle.nn.Upsample(scale_factor=2.0)?for?i?in?range(2)])self.residual_conv?=?paddle.nn.Conv2D(in_channels,out_channels,kernel_size=1,padding='same')def?forward(self,?inputs):previous_block_activation?=?inputsy?=?self.relus[0](inputs)y?=?self.conv_transpose_01(y)y?=?self.bns[0](y)y?=?self.relus[1](y)y?=?self.conv_transpose_02(y)y?=?self.bns[1](y)y?=?self.upsamples[0](y)residual?=?self.upsamples[1](previous_block_activation)residual?=?self.residual_conv(residual)y?=?paddle.add(y,?residual)return?y

模型組網(wǎng)

按照U型網(wǎng)絡(luò)結(jié)構(gòu)格式進(jìn)行整體的網(wǎng)絡(luò)結(jié)構(gòu)搭建,三次下采樣,四次上采樣。

class?PetNet(paddle.nn.Layer):def?__init__(self,?num_classes):super(PetNet,?self).__init__()self.conv_1?=?paddle.nn.Conv2D(3,?32,kernel_size=3,stride=2,padding='same')self.bn?=?paddle.nn.BatchNorm2D(32)self.relu?=?paddle.nn.ReLU()in_channels?=?32self.encoders?=?[]self.encoder_list?=?[64,?128,?256]self.decoder_list?=?[256,?128,?64,?32]#?根據(jù)下采樣個數(shù)和配置循環(huán)定義子Layer,避免重復(fù)寫一樣的程序for?out_channels?in?self.encoder_list:block?=?self.add_sublayer('encoder_{}'.format(out_channels),Encoder(in_channels,?out_channels))self.encoders.append(block)in_channels?=?out_channelsself.decoders?=?[]#?根據(jù)上采樣個數(shù)和配置循環(huán)定義子Layer,避免重復(fù)寫一樣的程序for?out_channels?in?self.decoder_list:block?=?self.add_sublayer('decoder_{}'.format(out_channels),Decoder(in_channels,?out_channels))self.decoders.append(block)in_channels?=?out_channelsself.output_conv?=?paddle.nn.Conv2D(in_channels,num_classes,kernel_size=3,padding='same')def?forward(self,?inputs):y?=?self.conv_1(inputs)y?=?self.bn(y)y?=?self.relu(y)for?encoder?in?self.encoders:y?=?encoder(y)for?decoder?in?self.decoders:y?=?decoder(y)y?=?self.output_conv(y)return?y

模型可視化

模型組建完成后,我們可以調(diào)用飛槳提供的summary接口對組建好的模型進(jìn)行可視化,方便進(jìn)行模型結(jié)構(gòu)和參數(shù)信息的查看和確認(rèn)。

num_classes?=?2 model?=?paddle.Model(PetNet(num_classes)) model.summary((-1,?3,?384,384)) -----------------------------------------------------------------------------Layer?(type)????????Input?Shape??????????Output?Shape?????????Param?#???? =============================================================================Conv2D-1???????[[1,?3,?384,?384]]???[1,?32,?192,?192]?????????896??????BatchNorm2D-1???[[1,?32,?192,?192]]???[1,?32,?192,?192]?????????128??????ReLU-1???????[[1,?32,?192,?192]]???[1,?32,?192,?192]??????????0???????ReLU-2???????[[1,?32,?192,?192]]???[1,?32,?192,?192]??????????0??????? SeparableConv2D-1?[[1,?32,?192,?192]]???[1,?64,?192,?192]????????2,400?????BatchNorm2D-2???[[1,?64,?192,?192]]???[1,?64,?192,?192]?????????256??????ReLU-3???????[[1,?64,?192,?192]]???[1,?64,?192,?192]??????????0??????? SeparableConv2D-2?[[1,?64,?192,?192]]???[1,?64,?192,?192]????????4,736?????BatchNorm2D-3???[[1,?64,?192,?192]]???[1,?64,?192,?192]?????????256??????MaxPool2D-1????[[1,?64,?192,?192]]????[1,?64,?96,?96]???????????0???????Conv2D-2??????[[1,?32,?192,?192]]????[1,?64,?96,?96]?????????2,112?????Encoder-1?????[[1,?32,?192,?192]]????[1,?64,?96,?96]???????????0???????ReLU-4????????[[1,?64,?96,?96]]?????[1,?64,?96,?96]???????????0??????? SeparableConv2D-3??[[1,?64,?96,?96]]?????[1,?128,?96,?96]????????8,896?????BatchNorm2D-4????[[1,?128,?96,?96]]????[1,?128,?96,?96]?????????512??????ReLU-5????????[[1,?128,?96,?96]]????[1,?128,?96,?96]??????????0??????? SeparableConv2D-4??[[1,?128,?96,?96]]????[1,?128,?96,?96]???????17,664?????BatchNorm2D-5????[[1,?128,?96,?96]]????[1,?128,?96,?96]?????????512??????MaxPool2D-2?????[[1,?128,?96,?96]]????[1,?128,?48,?48]??????????0???????Conv2D-3???????[[1,?64,?96,?96]]?????[1,?128,?48,?48]????????8,320?????Encoder-2??????[[1,?64,?96,?96]]?????[1,?128,?48,?48]??????????0???????ReLU-6????????[[1,?128,?48,?48]]????[1,?128,?48,?48]??????????0??????? SeparableConv2D-5??[[1,?128,?48,?48]]????[1,?256,?48,?48]???????34,176?????BatchNorm2D-6????[[1,?256,?48,?48]]????[1,?256,?48,?48]????????1,024?????ReLU-7????????[[1,?256,?48,?48]]????[1,?256,?48,?48]??????????0??????? SeparableConv2D-6??[[1,?256,?48,?48]]????[1,?256,?48,?48]???????68,096?????BatchNorm2D-7????[[1,?256,?48,?48]]????[1,?256,?48,?48]????????1,024?????MaxPool2D-3?????[[1,?256,?48,?48]]????[1,?256,?24,?24]??????????0???????Conv2D-4???????[[1,?128,?48,?48]]????[1,?256,?24,?24]???????33,024?????Encoder-3??????[[1,?128,?48,?48]]????[1,?256,?24,?24]??????????0???????ReLU-8????????[[1,?256,?24,?24]]????[1,?256,?24,?24]??????????0??????? Conv2DTranspose-1??[[1,?256,?24,?24]]????[1,?256,?24,?24]???????590,080????BatchNorm2D-8????[[1,?256,?24,?24]]????[1,?256,?24,?24]????????1,024?????ReLU-9????????[[1,?256,?24,?24]]????[1,?256,?24,?24]??????????0??????? Conv2DTranspose-2??[[1,?256,?24,?24]]????[1,?256,?24,?24]???????590,080????BatchNorm2D-9????[[1,?256,?24,?24]]????[1,?256,?24,?24]????????1,024?????Upsample-1??????[[1,?256,?24,?24]]????[1,?256,?48,?48]??????????0???????Upsample-2??????[[1,?256,?24,?24]]????[1,?256,?48,?48]??????????0???????Conv2D-5???????[[1,?256,?48,?48]]????[1,?256,?48,?48]???????65,792?????Decoder-1??????[[1,?256,?24,?24]]????[1,?256,?48,?48]??????????0???????ReLU-10???????[[1,?256,?48,?48]]????[1,?256,?48,?48]??????????0??????? Conv2DTranspose-3??[[1,?256,?48,?48]]????[1,?128,?48,?48]???????295,040????BatchNorm2D-10????[[1,?128,?48,?48]]????[1,?128,?48,?48]?????????512??????ReLU-11???????[[1,?128,?48,?48]]????[1,?128,?48,?48]??????????0??????? Conv2DTranspose-4??[[1,?128,?48,?48]]????[1,?128,?48,?48]???????147,584????BatchNorm2D-11????[[1,?128,?48,?48]]????[1,?128,?48,?48]?????????512??????Upsample-3??????[[1,?128,?48,?48]]????[1,?128,?96,?96]??????????0???????Upsample-4??????[[1,?256,?48,?48]]????[1,?256,?96,?96]??????????0???????Conv2D-6???????[[1,?256,?96,?96]]????[1,?128,?96,?96]???????32,896?????Decoder-2??????[[1,?256,?48,?48]]????[1,?128,?96,?96]??????????0???????ReLU-12???????[[1,?128,?96,?96]]????[1,?128,?96,?96]??????????0??????? Conv2DTranspose-5??[[1,?128,?96,?96]]????[1,?64,?96,?96]????????73,792?????BatchNorm2D-12????[[1,?64,?96,?96]]?????[1,?64,?96,?96]??????????256??????ReLU-13???????[[1,?64,?96,?96]]?????[1,?64,?96,?96]???????????0??????? Conv2DTranspose-6??[[1,?64,?96,?96]]?????[1,?64,?96,?96]????????36,928?????BatchNorm2D-13????[[1,?64,?96,?96]]?????[1,?64,?96,?96]??????????256??????Upsample-5??????[[1,?64,?96,?96]]????[1,?64,?192,?192]??????????0???????Upsample-6??????[[1,?128,?96,?96]]???[1,?128,?192,?192]?????????0???????Conv2D-7??????[[1,?128,?192,?192]]??[1,?64,?192,?192]????????8,256?????Decoder-3??????[[1,?128,?96,?96]]???[1,?64,?192,?192]??????????0???????ReLU-14??????[[1,?64,?192,?192]]???[1,?64,?192,?192]??????????0??????? Conv2DTranspose-7?[[1,?64,?192,?192]]???[1,?32,?192,?192]???????18,464?????BatchNorm2D-14???[[1,?32,?192,?192]]???[1,?32,?192,?192]?????????128??????ReLU-15??????[[1,?32,?192,?192]]???[1,?32,?192,?192]??????????0??????? Conv2DTranspose-8?[[1,?32,?192,?192]]???[1,?32,?192,?192]????????9,248?????BatchNorm2D-15???[[1,?32,?192,?192]]???[1,?32,?192,?192]?????????128??????Upsample-7?????[[1,?32,?192,?192]]???[1,?32,?384,?384]??????????0???????Upsample-8?????[[1,?64,?192,?192]]???[1,?64,?384,?384]??????????0???????Conv2D-8??????[[1,?64,?384,?384]]???[1,?32,?384,?384]????????2,080?????Decoder-4?????[[1,?64,?192,?192]]???[1,?32,?384,?384]??????????0???????Conv2D-9??????[[1,?32,?384,?384]]????[1,?2,?384,?384]?????????578?????? ============================================================================= Total?params:?2,058,690 Trainable?params:?2,051,138 Non-trainable?params:?7,552 ----------------------------------------------------------------------------- Input?size?(MB):?1.69 Forward/backward?pass?size?(MB):?676.12 Params?size?(MB):?7.85 Estimated?Total?Size?(MB):?685.67 -----------------------------------------------------------------------------{'total_params':?2058690,?'trainable_params':?2051138}

定義評估指標(biāo)

由于框架中沒有提供相應(yīng)的評估指標(biāo),所以我們使用前面章節(jié)中講解過的自定義評估指標(biāo)方法,『跟著雨哥學(xué)AI』系列04:詳解飛槳框架高階用法。

IoU(interp over union)指標(biāo)就是大家常說的交并比,通常作為語義分割任務(wù)的標(biāo)準(zhǔn)度量,在做此任務(wù)時我們自定義該指標(biāo)用來衡量模型的預(yù)測效果。?

from?paddle.metric?import?Metric import?numpy?as?npclass?IOU(Metric):def?__init__(self,?name='iou',?*args,?**kwargs):super(IOU,?self).__init__(*args,?**kwargs)self._name?=?nameself.interp?=?0??#?交集self.union?=?0?????????#?并集def?name(self):return?self._namedef?update(self,?preds,?labels):#?在preds第二維上取預(yù)測概率最大的標(biāo)簽序號preds?=?np.argmax(preds,?axis=1)self.interp?=?np.logical_and(labels,?preds)?self.union?=?np.logical_or(labels,?preds)def?accumulate(self):return?np.sum(self.interp)?/?np.sum(self.union)def?reset(self):self.interp?=?0self.union?=?0

模型訓(xùn)練

使用模型代碼進(jìn)行Model實例生成,使用model.prepare接口定義優(yōu)化器、損失函數(shù)和評價指標(biāo)等信息,用于后續(xù)訓(xùn)練使用。在所有初步配置完成后,調(diào)用model.fit接口開啟訓(xùn)練執(zhí)行過程,調(diào)用fit時只需要將前面定義好的訓(xùn)練數(shù)據(jù)集、測試數(shù)據(jù)集、訓(xùn)練輪次(Epoch)和批次大小(batch_size)配置好即可。

在本案例中加入了save_dir和save_freq參數(shù),分別指定模型的存儲路徑和保存的頻率,方便訓(xùn)練過程中斷后可以接著之前的繼續(xù)訓(xùn)練。

另外我們使用了飛槳提供的EarlyStopping接口,當(dāng)驗證集上iou指標(biāo)5輪沒有更高的值時,我們將提前結(jié)束訓(xùn)練過程,并保存最好的模型,存儲名為best_model。

train_dataset?=?PetDataset(mode='train')?#?訓(xùn)練數(shù)據(jù)集 val_dataset?=?PetDataset(mode='valid')?#?驗證數(shù)據(jù)集print('訓(xùn)練集大小:{},?驗證集大小:{}'.format(len(train_dataset),?len(val_dataset))) 訓(xùn)練集大小:5666,?驗證集大小:1416 num_classes?=?2 model?=?paddle.Model(PetNet(num_classes))optim?=?paddle.optimizer.RMSProp(learning_rate=0.001,rho=0.9,momentum=0.0,epsilon=1e-07,centered=False,parameters=model.parameters())model.prepare(optim,?paddle.nn.CrossEntropyLoss(axis=1),?metrics=IOU())callbacks?=?paddle.callbacks.EarlyStopping('iou',mode='max',patience=5,verbose=1,min_delta=0,baseline=None,save_best_model=True)model.fit(train_dataset,val_dataset,epochs=100,batch_size=64,drop_last=True,verbose=1,save_dir='./ckpt/',save_freq=5,log_freq=1,callbacks=[callbacks]) The?loss?value?printed?in?the?log?is?the?current?step,?and?the?metric?is?the?average?value?of?previous?step. Epoch?1/100 step?88/88?[==============================]?-?loss:?1.4115?-?iou:?0.0982?-?8s/step????????? save?checkpoint?at?/home/aistudio/ckpt/0 Eval?begin... The?loss?value?printed?in?the?log?is?the?current?batch,?and?the?metric?is?the?average?value?of?previous?step. step?23/23?[==============================]?-?loss:?0.5246?-?iou:?0.4950?-?7s/step????????? Eval?samples:?1416 Epoch?2/100 step?88/88?[==============================]?-?loss:?0.5149?-?iou:?0.4484?-?8s/step???????? Eval?begin... The?loss?value?printed?in?the?log?is?the?current?batch,?and?the?metric?is?the?average?value?of?previous?step. step?23/23?[==============================]?-?loss:?0.3571?-?iou:?0.4504?-?7s/step????????? Eval?samples:?1416……Epoch?25/100 step?88/88?[==============================]?-?loss:?0.1769?-?iou:?0.8273?-?8s/step???????? Eval?begin... The?loss?value?printed?in?the?log?is?the?current?batch,?and?the?metric?is?the?average?value?of?previous?step. step?23/23?[==============================]?-?loss:?0.0705?-?iou:?0.9176?-?7s/step????????? Eval?samples:?1416 Epoch?26/100 step?88/88?[==============================]?-?loss:?0.1179?-?iou:?0.8665?-?8s/step????????? save?checkpoint?at?/home/aistudio/ckpt/25 Eval?begin... The?loss?value?printed?in?the?log?is?the?current?batch,?and?the?metric?is?the?average?value?of?previous?step. step?23/23?[==============================]?-?loss:?0.0618?-?iou:?0.9094?-?7s/step????????? Eval?samples:?1416 Epoch?26:?Early?stopping. Best?checkpoint?has?been?saved?at?/home/aistudio/ckpt/best_model save?checkpoint?at?/home/aistudio/ckpt/final

模型預(yù)測

模型訓(xùn)練好之后,我們調(diào)用model.load接口下載訓(xùn)練效果最好的模型,然后直接使用model.predict接口來對數(shù)據(jù)集進(jìn)行預(yù)測操作,只需要將預(yù)測數(shù)據(jù)集傳遞到接口內(nèi)即可。

在本例中我們選取valid_list.txt中的任意一條數(shù)據(jù)另外創(chuàng)建了predict_list.txt用于測試。

predict_dataset?=?PetDataset(mode='predict')num_classes?=?2 model?=?paddle.Model(PetNet(num_classes)) #?模型加載 model.load('ckpt/best_model') model.prepare() predict_results?=?model.predict(predict_dataset)Predict?begin... step?1/1?[==============================]?-?283ms/step Predict?samples:?1

預(yù)測結(jié)果可視化

得到預(yù)測結(jié)果之后,我們借助工具將原圖、標(biāo)簽圖和預(yù)測結(jié)果可視化。

import?matplotlib.pyplot?as?plt from?PIL?import?Image?as?PilImage from?paddle.vision.transforms?import?transforms?as?Tplt.figure(figsize=(10,?10))with?open('koto/predict_list.txt',?'r')?as?f:for?line?in?f.readlines():img_path,?label_path?=?line.strip().split('?')img_path?=?img_path.replace('/mnt/d/data/',?'')label_path?=?label_path.replace('/mnt/d/data/',?'')resize_t?=?T.Compose([T.Resize(IMAGE_SIZE)])img?=?resize_t(PilImage.open(img_path))label?=?resize_t(PilImage.open(label_path))img?=?np.array(img).astype('uint8')label?=?np.array(label).astype('uint8')plt.subplot(1,?3,?1)plt.imshow(img)plt.axis('off')plt.title('Input?Image')plt.subplot(1,?3,?2)plt.imshow(label,?cmap='gray')plt.axis('off')plt.title('Label')data?=?predict_results[0][0][0].transpose((1,?2,?0))mask?=?np.argmax(data,?axis=-1)plt.subplot(1,?3,?3)plt.imshow(mask.astype('uint8'),?cmap='gray')plt.axis('off')plt.title('Predict')plt.show() <Figure?size?720x720?with?3?Axes>

制作證件照

我們在得到預(yù)測結(jié)果之后,就可以動手進(jìn)行證件照的制作啦。此處是選用了白色背景,大家可以根據(jù)自己的需要來自定義背景顏色。

#?創(chuàng)建背景圖,此處選用白色背景 bg?=?np.full([384,?384,?3],?255)#?將預(yù)測結(jié)果的單通道擴(kuò)展為RGB三通道 mask_rgb?=?[] for?i?in?range(3):mask_rgb.append(mask)photo_mask?=?np.array(mask_rgb).transpose((1,?2,?0))#?摳背景 photo_bg?=?bg?*?(1?-?photo_mask)#?摳人像 photo_per?=?img?*?photo_mask#?將背景和人像結(jié)合 photo?=?photo_bg?+?photo_perplt.imshow(photo.astype('uint8')) plt.axis('off') plt.show() <Figure?size?432x288?with?1?Axes>

總結(jié)

本節(jié)課和大家一起完成了制作自己的專屬證件照案例,下節(jié)課同學(xué)們想實現(xiàn)什么趣味案例呢?歡迎大家在評論區(qū)告訴我,我們將會在后續(xù)的課程中給大家安排上哈,今天的課程到這里就結(jié)束了,我是雨哥,下節(jié)課再見啦~

歡迎關(guān)注飛槳框架高層API官方賬號:飛槳PaddleHapi

有任何問題可以在本項目中評論或到飛槳Github倉庫提交Issue。

歡迎掃碼加入飛槳框架高層API技術(shù)交流群

回顧往期:

第一篇:『跟著雨哥學(xué)AI』系列:詳解飛槳框架數(shù)據(jù)管道

第二篇:『跟著雨哥學(xué)AI』系列之二:詳解飛槳框架模型組網(wǎng)

第三篇:『跟著雨哥學(xué)AI』系列之三:詳解飛槳框架模型訓(xùn)練

第四篇:『跟著雨哥學(xué)AI』系列之四:詳解飛槳框架高階用法

第五篇:『跟著雨哥學(xué)AI』系列之五:快速上手趣味案例FashionMNIST

第六篇:『跟著雨哥學(xué)AI』系列之六:趣味案例——基于U-Net的寵物圖像分割

如果您想詳細(xì)了解更多飛槳的相關(guān)內(nèi)容,請參閱以下文檔。

·飛槳官網(wǎng)地址·

https://www.paddlepaddle.org.cn/

·飛槳開源框架項目地址·

GitHub: https://github.com/PaddlePaddle/Paddle?

Gitee: https://gitee.com/paddlepaddle/Paddle

????長按上方二維碼立即star!????

飛槳(PaddlePaddle)以百度多年的深度學(xué)習(xí)技術(shù)研究和業(yè)務(wù)應(yīng)用為基礎(chǔ),是中國首個開源開放、技術(shù)領(lǐng)先、功能完備的產(chǎn)業(yè)級深度學(xué)習(xí)平臺,包括飛槳開源平臺和飛槳企業(yè)版。飛槳開源平臺包含核心框架、基礎(chǔ)模型庫、端到端開發(fā)套件與工具組件,持續(xù)開源核心能力,為產(chǎn)業(yè)、學(xué)術(shù)、科研創(chuàng)新提供基礎(chǔ)底座。飛槳企業(yè)版基于飛槳開源平臺,針對企業(yè)級需求增強(qiáng)了相應(yīng)特性,包含零門檻AI開發(fā)平臺EasyDL和全功能AI開發(fā)平臺BML。EasyDL主要面向中小企業(yè),提供零門檻、預(yù)置豐富網(wǎng)絡(luò)和模型、便捷高效的開發(fā)平臺;BML是為大型企業(yè)提供的功能全面、可靈活定制和被深度集成的開發(fā)平臺。

END

總結(jié)

以上是生活随笔為你收集整理的『跟着雨哥学AI』系列之七:趣味案例——动手制作专属证件照的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

中文字幕文字幕一区二区 | 又黄又爽的免费高潮视频 | 四虎国产精品免费 | 成人免费一区二区三区在线观看 | 久久精品草| 天天草综合网 | 在线亚洲免费视频 | 韩国一区在线 | 久久免费高清视频 | 在线视频福利 | 久久久久97国产 | 国产日产精品一区二区三区四区 | 成人免费电影 | 久久亚洲福利视频 | 日日干日日 | 午夜精品一区二区三区可下载 | www.天天草| 91视频这里只有精品 | 日韩视频免费观看高清完整版在线 | av怡红院 | 中文字幕在线观看网站 | 97视频在线看 | 九九热久久久 | 99综合视频 | 波多野结衣在线中文字幕 | 中文字幕在线中文 | 麻豆久久久 | 精品国产伦一区二区三区观看体验 | 九九99| 成人免费xxx在线观看 | 婷婷久月| 国产96av | 欧美男男tv网站 | 免费在线观看一区二区三区 | 91精品国产99久久久久久久 | 亚洲视频中文 | 国产精品成人一区二区 | av电影在线观看完整版一区二区 | 69久久99精品久久久久婷婷 | 欧美日韩中文在线视频 | 精品国产免费人成在线观看 | 91精品国自产在线 | 天天色 天天| 毛片视频电影 | 久久综合九色 | 亚洲精品综合一区二区 | 国产黄色一级大片 | 五月亚洲综合 | 日日操日日操 | 91九色视频国产 | 奇米影视8888在线观看大全免费 | 欧美极品少妇xbxb性爽爽视频 | 婷婷丁香花五月天 | 国产在线高清视频 | 久久激情视频 久久 | 久久亚洲日本 | 天天曰天天曰 | 成人午夜电影在线观看 | 亚洲国产wwwccc36天堂 | 久久视频免费在线观看 | 91免费国产在线观看 | 五月天久久综合 | 久久国产色 | 国产日韩欧美在线看 | 久久综合九九 | 日韩欧美在线中文字幕 | 97精品超碰一区二区三区 | 亚洲欧洲精品一区二区 | 97电影在线| 黄色网在线播放 | 久久99国产精品久久 | 亚洲人成网站精品片在线观看 | 99福利影院 | 国产精品青草综合久久久久99 | 九九九热精品免费视频观看 | a天堂最新版中文在线地址 久久99久久精品国产 | 一本一道波多野毛片中文在线 | 久久久久久久电影 | 天天在线操 | 99精品一区二区 | 国产精品久久久久久久久久久久午夜 | 人人草在线视频 | www.玖玖玖| 中文在线√天堂 | 国产精品免费观看网站 | 日韩av三区 | 成人97人人超碰人人99 | 欧美日bb| 在线观看视频精品 | 午夜精品一区二区三区可下载 | 欧美国产日韩在线观看 | 日韩激情视频在线观看 | 国产免费xvideos视频入口 | 免费观看福利视频 | 亚洲黄色av | 成人免费观看完整版电影 | 高潮久久久久久久久 | 国产永久免费高清在线观看视频 | 色偷偷88888欧美精品久久久 | 丁香视频 | 天天干天天碰 | 日韩欧在线 | 日韩免费看片 | 99亚洲精品| 五月婷婷中文字幕 | 国产精品久久久久久高潮 | 欧美久久久一区二区三区 | 亚洲欧美偷拍另类 | 一本色道久久综合亚洲二区三区 | 日韩精品视频免费在线观看 | 999久久精品| 日本久久久久久久久 | 国产美女精品久久久 | 午夜精品一区二区国产 | 麻豆精品在线视频 | 国产成人精品av在线 | 久艹在线观看视频 | 97超碰在线久草超碰在线观看 | 国产中年夫妇高潮精品视频 | 婷婷免费在线视频 | 91色综合 | 成人播放器| 欧美午夜寂寞影院 | 天天在线视频色 | 99精品久久久 | 国产精品久久久久久欧美 | 人人爽人人澡人人添人人人人 | 色综合久久中文字幕综合网 | 国产视频黄 | 婷婷中文字幕在线观看 | av综合av | 成人欧美一区二区三区黑人麻豆 | 99久久精品久久久久久清纯 | 97爱爱爱 | 久操视频在线免费看 | 人人澡人人舔 | 精品久久久久久久久久久久久 | 久草热久草视频 | 国产成人1区 | av高清不卡 | 久久99操| 久久久久免费精品国产 | 91热精品 | 日韩欧美视频 | 国产精品剧情 | 久久在线视频在线 | 午夜 免费 | 综合久久久久久久久 | 日韩欧美一二三 | 国产无遮挡又黄又爽在线观看 | 蜜桃视频日韩 | 日本精品视频一区二区 | 日韩精品免费专区 | 中文字幕在线视频国产 | 中文字幕乱码电影 | 99久久精品免费看国产免费软件 | 天天激情在线 | 午夜久久网 | 国内精品美女在线观看 | 丁香激情五月 | 免费污片 | 日日插日日干 | 一区二区视频在线观看免费 | 91精品亚洲影视在线观看 | 色五月色开心色婷婷色丁香 | 一区二区三区av在线 | 天天天干 | 波多野结衣在线播放一区 | 国内精品久久久久影院一蜜桃 | 日韩精品在线播放 | 婷婷综合网 | 米奇四色影视 | 综合网欧美| 亚洲精品99久久久久中文字幕 | 国产淫片免费看 | 美女网站视频免费黄 | 狠狠色狠狠综合久久 | 97超碰在线免费 | 国产精品激情偷乱一区二区∴ | 狠狠操狠狠插 | 免费在线视频一区二区 | 久久久久久久18 | 久久国产乱 | 天天操天天干天天操天天干 | 视频一区二区在线 | 婷婷六月天综合 | 日本在线中文在线 | 91在线免费看片 | 亚洲黄色小说网址 | 成人午夜性影院 | 久久综合九色综合97_ 久久久 | 午夜精品影院 | 一区中文字幕电影 | 午夜精品久久久久久久99 | 视频在线观看日韩 | 欧美日视频 | 国产在线观看免 | 久久夜色精品国产欧美乱 | 久久国产精品99久久久久 | 激情九九| 碰碰影院 | 久久精品视频一 | 91高清在线看| 欧美成a人片在线观看久 | 在线99视频 | 国产一级电影在线 | 国内精品久久久久久久久久久 | 91免费版在线观看 | 国产成人精品一区二区三区 | 96国产精品视频 | 亚洲国产成人精品电影在线观看 | 91综合在线| 久久的色 | 亚洲一级影院 | 亚洲精品影院在线观看 | 日韩一区二区三区在线观看 | 成年人免费观看在线视频 | 999久久久久| 日韩精品视频网站 | 亚洲精品成人网 | 久久婷婷一区二区三区 | 超碰在线97国产 | 日韩av一区二区在线播放 | 天天干天天插 | 亚洲人精品午夜 | 国产乱码精品一区二区三区介绍 | 精品久久电影 | 性日韩欧美在线视频 | 日韩免费 | 日韩精品短视频 | 欧美一级艳片视频免费观看 | 丁香影院在线 | av在线影视 | 日本在线精品视频 | 免费在线黄网 | 亚洲网久久 | 日韩午夜网站 | 一级免费黄视频 | 97超碰香蕉 | 日日日天天天 | 日本激情视频中文字幕 | 国产成人在线网站 | 欧美精品色 | av综合在线观看 | 美女国产免费 | 亚洲精品影视 | 日韩中文字幕国产 | 99精品热视频 | 高清不卡一区二区三区 | 国产日韩欧美视频在线观看 | 免费麻豆 | 久久伦理电影网 | 玖玖玖影院| av大全免费在线观看 | 免费福利小视频 | 午夜精品久久久久久久爽 | 亚洲色图激情文学 | 日b视频在线观看网址 | 日韩欧美中文 | 精品久久91 | 亚洲成人欧美 | 中文字幕在线观看日本 | 亚洲丝袜一区 | 国产精品激情偷乱一区二区∴ | 午夜精品久久久99热福利 | 人人舔人人舔 | 97日日| 亚洲 欧洲 国产 精品 | 国产精品美女久久久久久 | 国产精品美女久久久久久久久久久 | 精品久久久久久一区二区里番 | av日韩精品 | 狠狠狠的干 | 特级西西人体444是什么意思 | 精品在线观看一区二区 | 亚洲精品在线免费 | 亚洲 欧洲 国产 日本 综合 | 欧美久久影院 | 久艹视频在线免费观看 | 欧美精品乱码久久久久 | 久久99网| 精品中文字幕在线观看 | 综合色站导航 | 国产精品久免费的黄网站 | 2024国产精品视频 | 欧美a在线看 | 国产精品第十页 | 深爱激情五月综合 | 亚洲精品视频免费在线观看 | 亚洲视频专区在线 | 成年人在线免费看视频 | 久久精品中文字幕一区二区三区 | 最近字幕在线观看第一季 | 久久天天躁狠狠躁亚洲综合公司 | 四虎4hu永久免费 | 国产精品国产三级国产 | 欧美一区免费观看 | 欧美成人精品欧美一级乱黄 | 天天干天天操天天爱 | 在线免费国产视频 | 国产视频综合在线 | 久草在线国产 | 黄色av高清 | 国产97色在线 | 色天天| 国产在线不卡精品 | 手机成人av在线 | 黄色的片子 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 人人爽人人爽人人爽人人爽 | 天天射天天 | 2019av在线视频 | 免费在线视频一区二区 | 99精品一级欧美片免费播放 | 韩国一区二区av | 伊人婷婷在线 | 中文字幕丝袜一区二区 | 狠狠88综合久久久久综合网 | 欧美91成人网 | a天堂最新版中文在线地址 久久99久久精品国产 | 免费网站v | 黄色小说网站在线 | 午夜视频在线观看一区二区三区 | 婷婷综合电影 | 中文字幕一区二区三区四区视频 | 国内精品视频久久 | 麻豆精品传媒视频 | 亚洲精品久久在线 | 日韩精品久久久久 | 免费99精品国产自在在线 | 一区二区在线不卡 | 999热线在线观看 | 99re热精品视频 | 美女免费av | 日本精品久久久久 | 亚洲精品中文字幕在线观看 | 麻豆首页 | 成人免费色 | 最近免费观看的电影完整版 | 亚洲一区二区三区91 | 欧美怡红院视频 | 手机av电影在线观看 | 日韩欧美xxxx | 97在线观看免费视频 | 日韩在线观看你懂的 | 亚洲精品欧美专区 | 在线观看aa | 欧美视频日韩视频 | 91精品久久久久久 | 91精选在线观看 | 国产一级黄大片 | 日日躁夜夜躁aaaaxxxx | 国产精品久久久久久久久久久不卡 | 国产a视频免费观看 | 国产亚洲视频系列 | 国产精品岛国久久久久久久久红粉 | 国产亚洲欧洲 | 二区三区中文字幕 | 亚洲天堂网在线观看视频 | 香蕉成人在线视频 | 亚洲 在线 | 久久久999免费视频 日韩网站在线 | 精品你懂的 | 久久99热这里只有精品 | 99精品在线 | 国产精品一区二区果冻传媒 | 久久久久久久看片 | 久久一区二区三区超碰国产精品 | 狠狠躁天天躁综合网 | 日韩在线观| av在线等 | 国产精品一区二区三区观看 | 久久久久久久久久久久电影 | 天堂黄色片 | 91精品久久久久久久久久久久久 | 97成人精品视频在线观看 | 国产成人精品综合 | 在线精品亚洲一区二区 | 99热最新 | 欧美精品一区二区蜜臀亚洲 | 亚洲电影图片小说 | 91人人人 | 日韩网站在线看片你懂的 | 中文字幕的 | 中文字幕制服丝袜av久久 | 国产在线2020| 81国产精品久久久久久久久久 | 日韩精品在线免费观看 | 少妇bbbb搡bbbb桶| 国产亚洲婷婷免费 | 99九九免费视频 | 亚洲午夜久久久影院 | 91一区二区三区在线观看 | 91麻豆精品国产自产 | 成年人免费在线观看网站 | 黄网站色 | 精品视频999 | 国产一区二区观看 | 一区免费在线 | 九九久久久久久久久激情 | 久久香蕉影视 | 免费观看一级视频 | 最近中文字幕免费视频 | 亚洲涩涩网| 五月激情亚洲 | 久久黄色网| 欧美成人播放 | 亚洲观看黄色网 | 麻豆视频免费播放 | 欧美精彩视频在线观看 | 日韩在线免费视频观看 | 一区二区免费不卡在线 | 人人看97 | 久久精品网| 91成品视频 | 亚洲欧洲久久久 | 在线观看久久 | 久久久久看片 | 黄色成人av网址 | 亚欧日韩av | 免费看v片网站 | 黄色软件在线观看 | 日本天天操 | 日韩av网站在线播放 | 国产精品久久中文字幕 | 婷婷色五 | 免费观看的av网站 | 久久精品网站免费观看 | www久久99| 日本精品一区二区三区在线观看 | 国产欧美中文字幕 | 亚洲永久av | 亚洲精品小视频 | 日韩av电影手机在线观看 | 日韩a级黄色 | 国产中文字幕免费 | 中文字幕亚洲欧美日韩2019 | 99热99| 成年美女黄网站色大片免费看 | 日韩av网站在线播放 | 欧美在线观看视频一区二区三区 | 九九热精品国产 | 欧美久久久久久久久久久 | 精品一区二区免费在线观看 | 久章操| 日韩电影在线观看一区二区三区 | 久久天天躁夜夜躁狠狠85麻豆 | 欧美亚洲xxx| 在线观看网站av | 激情网婷婷 | 国产日韩精品在线观看 | 中文字幕成人在线观看 | 欧美一区日韩精品 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 视频在线观看一区 | 五月激情姐姐 | 久久精品视频免费 | 黄色三级免费网址 | 91色综合 | 国产日韩在线看 | 五月天婷亚洲天综合网精品偷 | 久草视频中文 | 久久电影网站中文字幕 | 在线观看自拍 | 亚洲视频aaa | 日韩激情第一页 | 波多野结衣在线播放一区 | 亚洲高清网站 | 天天操夜夜操天天射 | 久久尤物电影视频在线观看 | 国产精品久久久久久久妇 | 亚洲春色综合另类校园电影 | 国产精品久久久久久久久久久久 | 天天舔天天搞 | 国产网红在线观看 | 97**国产露脸精品国产 | 欧美91精品久久久久国产性生爱 | 青青草国产精品视频 | 国产资源免费 | 99久久www| 亚洲国产精品成人va在线观看 | 国产 成人 久久 | 黄色片免费在线 | 国产一区在线视频 | 911亚洲精品第一 | 国内精品视频久久 | 亚洲欧洲精品久久 | 久久久精品综合 | 国产白浆在线观看 | 最近中文字幕mv | 久久久免费高清视频 | 欧美激情在线看 | 在线视频精品 | 狠狠色狠狠色终合网 | 久久视频99| 免费亚洲精品视频 | 国产免费激情久久 | 很污的网站 | 久艹在线播放 | 91爱爱网址 | 91在线看视频免费 | 成人三级av | 精品久久影院 | 久久99久| 三级黄色网络 | 成人一级免费电影 | 草免费视频 | 天堂av一区二区 | 日本久久不卡视频 | 97超碰人人澡| 亚洲人成网站精品片在线观看 | 一级淫片在线观看 | www.精选视频.com | 99久高清在线观看视频99精品热在线观看视频 | 在线观看资源 | 狠狠躁天天躁 | 日韩在线观看影院 | www.五月激情.com | 亚洲高清视频在线观看免费 | 999在线视频 | 成人av免费网站 | 天天操·夜夜操 | 亚洲在线综合 | 成人中文字幕+乱码+中文字幕 | 中文字幕免费观看视频 | 日日夜夜天天久久 | 亚洲特级片 | 天天插天天| 国产精品乱码高清在线看 | 操操操av| 国产视频不卡一区 | 免费十分钟 | 国产香蕉视频在线播放 | 国产精品美女久久久久久 | 免费一级黄色 | 久久精品爱爱视频 | 992tv在线观看 | 亚洲国产精品成人av | 亚洲天堂网在线视频 | 婷婷六月在线 | 中文字幕一区三区 | av片中文 | 成人高清在线观看 | 欧美国产日韩久久 | 在线观看免费av片 | 日日爱影视 | 成人免费观看av | 美女视频黄免费的久久 | 日韩电影一区二区在线观看 | 嫩草av影院 | 国产精品久久综合 | 嫩草伊人久久精品少妇av | 黄色一级大片免费看 | 最近中文字幕大全中文字幕免费 | www,黄视频| 免费国产在线观看 | 日韩手机在线 | 国产精品一区二区三区在线免费观看 | 成人欧美日韩国产 | 91九色porny蝌蚪视频 | 日韩最新在线视频 | 久久免费av电影 | 国产精品久久久久久吹潮天美传媒 | 国产福利精品在线观看 | 我要色综合天天 | 人人爽人人爽人人爽学生一级 | 久久97精品 | 福利在线看片 | 成人黄色小说网 | 婷婷视频导航 | 97久久精品午夜一区二区 | 天天天操天天天干 | 亚洲免费在线观看视频 | 激情久久久久久久久久久久久久久久 | 伊人超碰在线 | 国产精品第一页在线观看 | 国产精品999久久久 久产久精国产品 | 欧美色精品天天在线观看视频 | 日韩性xxx | 又黄又爽的视频在线观看网站 | 国产区高清在线 | 99热这里| 91热在线| 欧美日韩国产精品一区二区三区 | 五月天六月丁香 | 99久久国产免费免费 | 久久久www成人免费精品张筱雨 | 五月婷婷香蕉 | 99re国产视频 | 中文字幕区| 亚洲天堂精品视频 | 黄色毛片在线 | 国产黄色成人 | 99精品国产免费久久久久久下载 | 日韩欧美电影在线 | 天天透天天插 | 国产精品1区2区 | 国产精品免费在线播放 | www最近高清中文国语在线观看 | 久章草在线观看 | 久久久亚洲麻豆日韩精品一区三区 | 久久国产精品99久久人人澡 | 国产v欧美| 精品在线小视频 | 国产精品亚洲片在线播放 | 99久久精品免费 | 久久久精品高清 | 日本久久久久久 | 中文字幕av全部资源www中文字幕在线观看 | 欧美日韩精品二区第二页 | 国产欧美日韩视频 | 一区二区欧美在线观看 | 日本韩国欧美在线观看 | www.五月天婷婷 | 中文字幕精品三级久久久 | 麻豆视频入口 | 少妇激情久久 | 国产三级久久久 | 成人在线观看资源 | 黄色电影网站在线观看 | 久久手机免费观看 | 国产精品久久久久久麻豆一区 | 欧美综合在线视频 | 久一久久 | 欧美午夜精品久久久久久浪潮 | 日韩欧美一区二区三区视频 | 丁香影院在线 | 欧美 另类 交 | 国产日韩视频在线 | 日韩欧美xxx | 国产一级特黄毛片在线毛片 | 亚洲一区日韩在线 | 久久国产精品影片 | 激情网色 | 精品国产乱码久久久久久浪潮 | 久久成人精品 | 日日干天夜夜 | 亚洲一区在线看 | av国产网站 | 999电影免费在线观看2020 | 九九精品毛片 | 99成人精品 | 九九九九免费视频 | 国产精品久久一区二区无卡 | 国产午夜剧场 | 美女精品网站 | 久久伦理 | 国产99久久精品一区二区永久免费 | 久久精品艹 | 午夜精品一区二区三区视频免费看 | 成人97人人超碰人人99 | 午夜精品一区二区三区免费 | 国产片网站 | 国产一区二区播放 | 成年人黄色在线观看 | 黄在线免费看 | 免费看国产一级片 | 久久人人爽人人爽人人片av免费 | av手机版 | 91精品国产欧美一区二区成人 | 国产精品小视频网站 | 国产真实在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 成人黄色小视频 | 中文字幕亚洲国产 | 国产精品美女久久久久久久久 | 992tv成人免费看片 | 久久免费观看视频 | 久久久在线免费观看 | 国产99中文字幕 | 亚洲va韩国va欧美va精四季 | 成人中心免费视频 | 午夜精品视频一区二区三区在线看 | 色中射| 99久久国产免费看 | 国产免费视频在线 | 婷婷激情站 | 97视频免费在线 | 久久久性| 伊人日日干 | 久久精品99国产精品 | 天天做天天爱天天爽综合网 | 国产永久网站 | 最近字幕在线观看第一季 | 国产精久久久久久妇女av | 中文字幕日韩在线播放 | 国产 在线 高清 精品 | 看全黄大色黄大片 | 精品国产一区二区三区久久久久久 | 日韩一区二区免费视频 | 欧美日韩三级在线观看 | 国产精品一区二区精品视频免费看 | 草久久久久久久 | 亚洲精品国产精品国 | 精品国产三级a∨在线欧美 免费一级片在线观看 | av在线网站免费观看 | 久久成人国产精品一区二区 | 欧洲亚洲精品 | 日韩av资源站 | 欧美一区二区三区不卡 | 国产视频手机在线 | 国产精品午夜在线观看 | 在线亚州| 成人小电影在线看 | 99国产成+人+综合+亚洲 欧美 | 一区二区三区在线影院 | 亚洲精品高清视频 | 国产免费区 | 在线视频欧美日韩 | 91av视频在线播放 | 欧美日韩在线第一页 | 99精品国产一区二区 | 久久男人视频 | 日韩在线不卡视频 | 久久精品一区二区三区四区 | 国产精品一区二区无线 | 成年人视频免费在线 | 日韩理论电影网 | 久久免费观看视频 | 精品成人免费 | 鲁一鲁影院 | 久久资源在线 | 黄色精品久久 | 日韩精品欧美精品 | 天天操天天干天天 | 亚洲精品久久久久中文字幕m男 | 91亚洲网 | 97**国产露脸精品国产 | 国产人成看黄久久久久久久久 | 国产精品一区专区欧美日韩 | 久99久在线 | 中文区中文字幕免费看 | 国产精品资源在线 | 午夜久久福利视频 | 午夜影院日本 | 国产91免费看 | 国产在线成人 | 九九在线精品视频 | 水蜜桃亚洲一二三四在线 | 亚洲1区 在线| 国产精品免费观看视频 | 最近中文字幕免费大全 | av短片在线观看 | 国产精品中文字幕在线播放 | 91精品久| 99久久久精品| 啪啪午夜免费 | 国产精品二区三区 | 麻豆视频免费网站 | 免费福利影院 | 天天爱天天 | 欧美三级高清 | av在线播放不卡 | 激情五月婷婷综合 | 久久精品3 | 摸阴视频| 国产精品美女在线 | 超级av在线 | 免费久久久久久久 | 久久精品视频在线观看 | 精品久久一区二区三区 | 免费中文字幕 | 免费黄色av | 又黄又刺激的网站 | 99精品一区二区 | 开心色激情网 | 欧美精品久久久久久久久老牛影院 | 在线观看国产www | 九九视频免费 | 国产又粗又猛又黄视频 | 国产不卡在线观看视频 | www免费网站在线观看 | 综合色天天 | 免费在线观看毛片网站 | 免费视频久久久久 | 人人爽人人片 | av网址aaa | 国产精品theporn | 九九热免费视频在线观看 | 国产亲近乱来精品 | 久久精品视 | 成人a大片 | 国产自产高清不卡 | 久久综合激情 | 玖玖精品视频 | 99精品久久久久久久久久综合 | 色婷五月 | 欧美精品久久久久久久久老牛影院 | 婷婷网站天天婷婷网站 | 午夜久久网站 | 97日日碰人人模人人澡分享吧 | 久久午夜网 | 午夜色婷婷 | 九九视频免费在线观看 | 成人午夜在线观看 | 国产精国产精品 | 日日操日日插 | 日韩中文字幕第一页 | 区一区二区三区中文字幕 | 在线观看视频中文字幕 | 五月婷婷中文字幕 | 久久精久久精 | 五月婷婷在线观看 | 日韩精品电影在线播放 | 三级小视频在线观看 | 91大片网站 | 久精品视频在线 | 日韩精品黄 | 日韩欧美在线观看 | 国产91在| 九九av| 激情欧美丁香 | 在线国产能看的 | 欧美日韩国产一区二区在线观看 | 福利视频区 | 香蕉视频在线免费 | 欧美精品乱码99久久影院 | 99久久久国产精品免费观看 | 美州a亚洲一视本频v色道 | 久热久草在线 | 久久久久久久99精品免费观看 | av中文资源在线 | 这里只有精品视频在线观看 | 国产日韩精品一区二区 | 天天综合视频在线观看 | 玖玖精品在线 | 91福利在线观看 | 久草视频在线播放 | 国产成人av一区二区三区在线观看 | 狠狠做深爱婷婷综合一区 | 人人澡人 | 久久婷婷视频 | 久久久精品电影 | 日本久久久久久久久久 | 99精品国产免费久久久久久下载 | 色94色欧美| 欧美日韩国产网站 | 成人亚洲精品久久久久 | 免费高清无人区完整版 | 中文字幕在线第一页 | 涩涩成人在线 | 伊人午夜| 国产成人一区二区三区在线观看 | 狠狠色综合网站久久久久久久 | 天天天天天天天天操 | 综合影视 | 91久久精品一区二区三区 | 91麻豆免费版 | 色a网 | 成片视频免费观看 | 最新日韩电影 | 免费观看国产成人 | 国产精品久久久久aaaa | 久久久福利视频 | 91在线精品一区二区 | 91av成人 | 天天操天天摸天天爽 | 日韩二三区 | 国产精品一区在线观看 | 一区二区三区在线观看免费 | 日韩精品一卡 | 国产精品高潮久久av | 草久电影 | 国产成人在线免费观看 | 69久久久| 韩国三级av在线 | 亚洲精品网址在线观看 | 97在线精品国自产拍中文 | 日韩精品短视频 | 91精品资源 | 日韩av在线一区二区 | 日韩一区二区三区免费视频 | 亚洲天堂激情 | 91在线免费播放 | 成人va视频 | 日韩av男人的天堂 | 丁香久久婷婷 | 99精品偷拍视频一区二区三区 | 国内精品久久久久 | 青青射 | 欧美成人猛片 | 国产成人高清av | 国内99视频 | 人人干免费 | 欧美国产日韩一区二区三区 | 久久福利综合 | 国产精品密入口果冻 | 精品国产99国产精品 | 亚洲第一区在线观看 | 看av免费| 久久久久久片 | 五月婷婷狠狠 | 亚洲激情p | 日本中文字幕免费观看 | 国产一级在线 | 狠狠狠狠狠干 | 国产又粗又长的视频 | 日韩在线观看免费 | 天天射天天操天天色 | 国产精品一区二区久久精品爱涩 | 久久人人爽人人爽人人片 | 五月婷婷亚洲 | 亚洲欧美精品一区二区 | av网站在线免费观看 | 黄色网在线免费观看 | 天天干天天操天天 | 久草免费看| 久久久视屏 | 一区二区三区国产欧美 | 国产一二区在线观看 | 免费网址你懂的 | 婷婷在线视频 | 亚洲永久精品视频 | 久久少妇av | 国产高清在线观看av | 成年人视频在线免费 | 成人午夜网 | 国产白浆在线观看 | 国产 视频 高清 免费 | 久久99热久久99精品 | 国产精品免费在线视频 | 免费在线电影网址大全 | 日韩中文在线观看 | 成人丁香花 | 日韩视频在线观看视频 | 天天五月天色 | 亚洲久草网 | 久久手机在线视频 | 亚洲综合色视频在线观看 | 看黄色.com | 日韩二级毛片 | 亚洲性xxxx| 久久久久久久久久久免费av | 色夜影院| 国产一级视频在线免费观看 | 四虎永久免费 | 国内外成人在线 | av免费在线免费观看 | 欧美日韩性视频在线 | 国产日本在线观看 | 欧美日韩亚洲精品在线 | 国产免码va在线观看免费 | 一色av| 久久性生活片 | 国产区欧美 | 国产欧美精品一区二区三区四区 | 国产一区二区免费在线观看 | 一区二区三区免费在线观看视频 | 免费在线观看视频a | 亚洲午夜久久久久久久久电影网 | 久久免费视频在线观看 | 国产精品v欧美精品 | 2024国产精品视频 | 在线观看的a站 | 免费a网址 | 久久手机免费观看 | 日韩性网站 | 亚洲视屏在线播放 | 亚洲欧美乱综合图片区小说区 | 久久精品a| 免费亚洲成人 | 黄色特级片 | 亚洲精品在线观看的 | 91入口在线观看 | 亚洲精品伦理在线 | 国产欧美综合视频 | 在线观看小视频 | 久草视频在线观 | 中文字幕色播 | 日韩一级电影在线观看 | 在线视频一二三 | 久久久精品欧美 | 成人小视频在线观看免费 | 久久视频在线免费观看 | 九色91福利 | 欧美日本三级 | 手机在线日韩视频 | 国产精品日韩在线观看 | 国产小视频在线观看 | 亚洲第五色综合网 | 免费观看性生交大片3 | 日韩在线 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 九九精品视频在线看 | 狠狠伊人 | 黄色免费大片 | 一级片色播影院 | 日韩免费一级电影 | 欧美精品资源 | 99综合视频 | 在线观看免费视频 | 久久99在线 | 中文字幕色网站 | 9在线观看免费高清完整版在线观看明 | 日韩激情视频在线 | 中文字幕在线影院 | 久久亚洲精品国产亚洲老地址 | 日韩精品欧美一区 |