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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

3DMM-Fitting_Pytorch代码阅读

發(fā)布時(shí)間:2023/12/20 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3DMM-Fitting_Pytorch代码阅读 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

convert_bfm_data.py

(transfer original BFM09 to our face model)
Scipy是世界上著名的Python開源科學(xué)計(jì)算庫,建立在Numpy之上。它增加的功能包括數(shù)值積分、最優(yōu)化、統(tǒng)計(jì)和一些專用函數(shù)。 SciPy函數(shù)庫在NumPy庫的基礎(chǔ)上增加了眾多的數(shù)學(xué)、科學(xué)以及工程計(jì)算中常用的庫函數(shù)。例如線性代數(shù)、常微分方程數(shù)值求解、信號(hào)處理、圖像處理、稀疏矩陣等等。

BFM模型介紹官網(wǎng)


01_MorphableModel.mat(數(shù)據(jù)主體)
BFM模型由53490個(gè)3D頂點(diǎn)構(gòu)成。也就是其shape/texture的數(shù)據(jù)長(zhǎng)度為160470(53490*3),因?yàn)槠渑帕蟹绞饺缦?#xff1a;

shape: x_1, y_1, z_1, x_2, y_2, z_2, ..., x_{53490}, y_{53490}, z_{53490} texture: r_1, g_1, b_1, r_2, g_2, b_2, ..., r_{53490}, g_{53490}, b_{53490}


segbin:是segment binary,用熱點(diǎn)法標(biāo)注屬于面部哪一部分。
不同恒等式的面可以由199個(gè)主分量組成線性組合。

% Generate a random head alpha = randn(msz.n_shape_dim, 1); beta = randn(msz.n_tex_dim, 1); shape = coef2object( alpha, model.shapeMU, model.shapePC, model.shapeEV ); tex = coef2object( beta, model.texMU, model.texPC, model.texEV ); 模型的使用步驟: 加載模型 -> 形成一個(gè)隨機(jī)的頭 -> 渲染它 -> 保存成相應(yīng)的格式

為了增加模型的靈活性,我們獨(dú)立處理面部的四個(gè)部分。每個(gè)部分定義在一個(gè)掩碼(每個(gè)頂點(diǎn)索引)中。(對(duì)應(yīng)09_mask)

基本原理

目標(biāo)shape或者texture都可以通過如下式子得到:
obj = average + pc * (coeficient .* pcVariance)
其中系數(shù)(coeficient)是變量,其余均是數(shù)據(jù)庫里的常量,其是一個(gè)199維(對(duì)應(yīng)199個(gè)PC)的向量。
BFM數(shù)據(jù)集的使用可以參照該博客:BFM使用 - 獲取平均臉模型的68個(gè)特征點(diǎn)坐標(biāo)

將臉部模型裁剪對(duì)齊臉部地標(biāo),其中只包含35709個(gè)頂點(diǎn)。

from scipy.io import loadmat,savemat import numpy as np from array import array# load expression basis def LoadExpBasis():n_vertex = 53215 #標(biāo)準(zhǔn)的bfm模型包含頂點(diǎn)個(gè)數(shù)為53490個(gè).#表情系數(shù)(來自Exp_Pca.bin)只針對(duì)53215個(gè)頂點(diǎn)有參數(shù)#不含脖子的模型頂點(diǎn)個(gè)數(shù)為35709個(gè).Expbin = open('BFM/Exp_Pca.bin','rb')#這里使用的是Exp_Pca.bin(表情基)文件里的表情系數(shù), 這個(gè)表情系數(shù)是從 Facewarehouse 數(shù)據(jù)集中提取的,為29維,形狀參數(shù)為199維.exp_dim = array('i')#[python3.9新特性](https://docs.python.org/3/library/array.html) 'i'表示signed intexp_dim.fromfile(Expbin,1)#array.fromfile(f, n) Read n items (as machine values) from the file object f and append them to the end of the array.expMU = array('f') #floatexpPC = array('f')expMU.fromfile(Expbin,3*n_vertex)expPC.fromfile(Expbin,3*exp_dim[0]*n_vertex)expPC = np.array(expPC)expPC = np.reshape(expPC,[exp_dim[0],-1])expPC = np.transpose(expPC)expEV = np.loadtxt('BFM/std_exp.txt')return expPC,expEV# transfer original BFM09 to our face model def transferBFM09():original_BFM = loadmat('BFM/01_MorphableModel.mat')shapePC = original_BFM['shapePC'] # shape basisshapeEV = original_BFM['shapeEV'] # corresponding eigen valueshapeMU = original_BFM['shapeMU'] # mean facetexPC = original_BFM['texPC'] # texture basistexEV = original_BFM['texEV'] # eigen valuetexMU = original_BFM['texMU'] # mean texture#上面都是保存一些BFM形狀和紋理屬性expPC,expEV = LoadExpBasis()#保存BFM文件的表情屬性# transfer BFM09 to our face modelidBase = shapePC*np.reshape(shapeEV,[-1,199])idBase = idBase/1e5 # unify the scale to decimeteridBase = idBase[:,:80] # use only first 80 basisexBase = expPC*np.reshape(expEV,[-1,79])exBase = exBase/1e5 # unify the scale to decimeterexBase = exBase[:,:64] # use only first 64 basistexBase = texPC*np.reshape(texEV,[-1,199])texBase = texBase[:,:80] # use only first 80 basis# our face model is cropped align face landmarks which contains only 35709 vertex.# original BFM09 contains 53490 vertex, and expression basis provided by JuYong contains 53215 vertex.# thus we select corresponding vertex to get our face model.index_exp = loadmat('BFM/BFM_front_idx.mat')index_exp = index_exp['idx'].astype(np.int32) - 1 #starts from 0 (to 53215)index_shape = loadmat('BFM/BFM_exp_idx.mat')index_shape = index_shape['trimIndex'].astype(np.int32) - 1 #starts from 0 (to 53490)index_shape = index_shape[index_exp]idBase = np.reshape(idBase,[-1,3,80])idBase = idBase[index_shape,:,:]idBase = np.reshape(idBase,[-1,80])texBase = np.reshape(texBase,[-1,3,80])texBase = texBase[index_shape,:,:]texBase = np.reshape(texBase,[-1,80])exBase = np.reshape(exBase,[-1,3,64])exBase = exBase[index_exp,:,:]exBase = np.reshape(exBase,[-1,64])meanshape = np.reshape(shapeMU,[-1,3])/1e5meanshape = meanshape[index_shape,:]meanshape = np.reshape(meanshape,[1,-1])meantex = np.reshape(texMU,[-1,3])meantex = meantex[index_shape,:]meantex = np.reshape(meantex,[1,-1])# other info contains triangles, region used for computing photometric loss,# region used for skin texture regularization, and 68 landmarks index etc.other_info = loadmat('BFM/facemodel_info.mat')frontmask2_idx = other_info['frontmask2_idx']skinmask = other_info['skinmask']keypoints = other_info['keypoints']point_buf = other_info['point_buf']tri = other_info['tri']tri_mask2 = other_info['tri_mask2']# save our face modelsavemat('BFM/BFM_model_front.mat',{'meanshape':meanshape,'meantex':meantex,'idBase':idBase,'exBase':exBase,'texBase':texBase,'tri':tri,'point_buf':point_buf,'tri_mask2':tri_mask2\,'keypoints':keypoints,'frontmask2_idx':frontmask2_idx,'skinmask':skinmask})if __name__ == '__main__':transferBFM09()

fit.py

face_alignment庫

這篇講解很好
根據(jù)這里的源碼,可以看到get_landmarks_from_image函數(shù)的返回值。

def get_landmarks_from_image(self, image_or_path, detected_faces=None, return_bboxes=False,return_landmark_score=False):"""Predict the landmarks for each face present in the image.This function predicts a set of 68 2D or 3D images, one for each image present.If detect_faces is None the method will also run a face detector.Arguments:image_or_path {string or numpy.array or torch.tensor} -- The input image or path to it.Keyword Arguments:detected_faces {list of numpy.array} -- list of bounding boxes, one for each face foundin the image (default: {None})return_bboxes {boolean} -- If True, return the face bounding boxes in addition to the keypoints.return_landmark_score {boolean} -- If True, return the keypoint scores along with the keypoints.Return:result:1. if both return_bboxes and return_landmark_score are False, result will be:landmark2. Otherwise, result will be one of the following, depending on the actual value of return_* arguments.(landmark, landmark_score, detected_face)(landmark, None, detected_face)(landmark, landmark_score, None )"""

fit.py里面的代碼

#圖片的寬和高的獲取 h,w = orig_img.shape[:2] # 結(jié)合代碼可以看到,代碼這里的返回值為landmark tmp_lms = fa.get_landmarks_from_image(orig_img) #但這里得到是兩個(gè)array,第二個(gè)也沒用過,就暫時(shí)不探究了。 第一個(gè)array的數(shù)據(jù)就是landmark點(diǎn)坐標(biāo),但是其是68*3的一個(gè)而且向量,對(duì)于第三列是什么我也還是不太清楚,前兩列就是橫縱坐標(biāo)了。

單獨(dú)運(yùn)行這行代碼時(shí)報(bào)錯(cuò)

lms = fa.get_landmarks_from_image(orig_img)[0] print(lms[:,0])

TypeError: list indices must be integers or slices, not tuple
因?yàn)榱斜砜梢源娣挪煌愋偷臄?shù)據(jù),因此列表中每個(gè)元素的大小可以相同,也可以不同,也就不支持一次性讀取一列,即使是對(duì)于標(biāo)準(zhǔn)的二維數(shù)字列表。
用列表解析的方法讀取一列:

print( [ x[0] for x in lms ] )

Bounding box Regression bbox 邊框回歸

重新設(shè)置了一下邊框的大小

def pad_bbox(bbox, img_wh, padding_ratio=0.2):x1, y1, x2, y2 = bboxwidth = x2 - x1height = y2 - y1size_bb = int(max(width, height) * (1+padding_ratio))center_x, center_y = (x1 + x2) // 2, (y1 + y2) // 2x1 = max(int(center_x - size_bb // 2), 0)y1 = max(int(center_y - size_bb // 2), 0)size_bb = min(img_wh[0] - x1, size_bb)size_bb = min(img_wh[1] - y1, size_bb)return [x1, y1, x1+size_bb, y1+size_bb]
  • cv2.resize函數(shù)參考這里
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst

參數(shù)說明:
src :需要改變尺寸的圖像
dsize:目標(biāo)圖像大小
dst:目標(biāo)圖像
fx:w方向上的縮放比例
fy:h方向上的縮放比例
interpolation - 插值方法。共有5種:

有三點(diǎn)需要注意:

  • 注意,dsize的形狀是(w,h),而opencv讀取出來的圖像的形狀是(h,w)
  • 當(dāng)參數(shù)dsize不為0時(shí),dst的大小為dsize;否則,由src的大小以及縮放比例fx和fy來決定;可以看出dsize和(fx,fy)兩者不能同時(shí)為0
  • 因?yàn)閐size是沒有默認(rèn)值的,所以必須指定,也即我們使用fx和fy來控制大小的時(shí)候必須設(shè)置dsize=(0,0)
import cv2img=cv2.imread("1.jpg") print(img.shape) #輸出:(1559, 924, 3)img_resize1=cv2.resize(img,dsize=(500,1000),interpolation=cv2.INTER_NEAREST) print(img_resize1.shape) #輸出:(1000, 500, 3)img_resize2=cv2.resize(img_resize1,dsize=(0,0),fx=0.5,fy=0.5,interpolation=cv2.INTER_NEAREST) print(img_resize2.shape) #輸出:(500, 250, 3)

關(guān)于代碼中這一部分的理解,這里出現(xiàn)了[None, …]

lms = lms[:, :2][None, ...] #由(68,2)維的數(shù)據(jù)變成了(1,68,2)的數(shù)據(jù) lms = torch.tensor(lms, dtype=torch.float32).cuda() img_tensor = torch.tensor(cropped_img[None, ...], dtype=torch.float32).cuda()

Python中xx[:,None]是分開切片的意思
a[:,None]相當(dāng)于調(diào)用a.getitem(slice(None, None, None), None)

  • 省略號(hào)表示根據(jù)對(duì)應(yīng)的ndim展開相應(yīng)數(shù)量的冒號(hào),如對(duì)于ndim=3,以下兩句等價(jià)
arr[..., 0]arr[:, :, 0]

a[None,…]相當(dāng)于調(diào)用a.getitem(None, slice(None, None, None)) (代碼中l(wèi)ms是一個(gè)2維的數(shù)組) 這樣一處理就變成了三維的數(shù)組
python切片的介紹

[:,None]
None表示該維不進(jìn)行切片,而是將該維整體作為數(shù)組元素處理。
所以,[:,None]的效果就是將二維數(shù)組按每行分割,最后形成一個(gè)三維數(shù)組

xx = np.array([[1,2,3],[4,5,6]]) xx[:,None] 輸出: array([[[1, 2, 3]],[[4, 5, 6]]])

load facemodel階段

很多數(shù)據(jù)集都是mat格式的標(biāo)注信息,使用模塊scipy.io的函數(shù)loadmat和savemat可以實(shí)現(xiàn)Python對(duì)mat數(shù)據(jù)的讀寫。

scipy.io.loadmat(file_name, mdict=None, appendmat=True, **kwargs) scipy.io.savemat(file_name, mdict, appendmat=True, format='5', long_field_names=False, do_compression=False, oned_as='row')

計(jì)算機(jī)圖形學(xué)中的基本變換

torch.optim.Adam 方法的使用和參數(shù)的解釋

torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)

參數(shù):

  • params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的dict
  • lr (float, 可選) – 學(xué)習(xí)率(默認(rèn):1e-3)
  • betas (Tuple[float, float], 可選) – 用于計(jì)算梯度以及梯度平方的運(yùn)行平均值的系數(shù)(默認(rèn):0.9,0.999)
  • eps (float, 可選) – 為了增加數(shù)值計(jì)算的穩(wěn)定性而加到分母里的項(xiàng)(默認(rèn):1e-8)
  • weight_decay (float, 可選) – 權(quán)重衰減(L2懲罰)(默認(rèn): 0)
optimizer的方法

基本方法:
zero_grad() :清空所管理參數(shù)的梯度
step() :執(zhí)行一步更新
add_param_group():添加參數(shù)組
state_dict() :獲取優(yōu)化器當(dāng)前狀態(tài)信息字典
load_state_dict() :加載狀態(tài)信息字典
pytorch特性:張量梯度不自動(dòng)清零

sum(1) 求數(shù)組每一行的和,等價(jià)于 sum(axis=1)

tqdm模塊——進(jìn)度條配置

Tqdm 是一個(gè)快速,可擴(kuò)展的Python進(jìn)度條,可以在 Python 長(zhǎng)循環(huán)中添加一個(gè)進(jìn)度提示信息,用戶只需要封裝任意的迭代器 tqdm(iterator)。
總之,它是用來顯示進(jìn)度條的,很漂亮,使用很直觀(在循環(huán)體里邊加個(gè)tqdm),而且基本不影響原程序效率

import time from tqdm import tqdm from tqdm._tqdm import trangefor i in tqdm(range(100)):time.sleep(0.01)

關(guān)于with torch.no_grad():

在使用pytorch時(shí),并不是所有的操作都需要進(jìn)行計(jì)算圖的生成(計(jì)算過程的構(gòu)建,以便梯度反向傳播等操作)。而對(duì)于tensor的計(jì)算操作,默認(rèn)是要進(jìn)行計(jì)算圖的構(gòu)建的,在這種情況下,可以使用 with torch.no_grad():,強(qiáng)制之后的內(nèi)容不進(jìn)行計(jì)算圖構(gòu)建。

model.train() model.eval() with torch.no_grad() 參考這里

with torch.no_grad是指停止自動(dòng)求導(dǎo)
model.train()用于在訓(xùn)練階段
model.eval()用在驗(yàn)證和測(cè)試階段

  • 他們的區(qū)別是對(duì)于Dropout和Batch Normlization層的影響。在train模式下,dropout網(wǎng)絡(luò)層會(huì)按照設(shè)定的參數(shù)p設(shè)置保留激活單元的概率(保留概率=p); batchnorm層會(huì)繼續(xù)計(jì)算數(shù)據(jù)的mean和var等參數(shù)并更新。在val模式下,dropout層會(huì)讓所有的激活單元都通過,而batchnorm層會(huì)停止計(jì)算和更新mean和var,直接使用在訓(xùn)練階段已經(jīng)學(xué)出的mean和var值。

models.py

最最重要的一個(gè)模塊了

pytorch3d Renderer模塊

可區(qū)分渲染通過允許2D圖像像素與場(chǎng)景的3D屬性相關(guān)聯(lián)來彌合2D和3D之間的差距。

例如,根據(jù)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的3D形狀來渲染一個(gè)圖像,其可能使用參考圖像來計(jì)算2D損失。反轉(zhuǎn)渲染步驟意味著我們可以將像素的2D損失與形狀的3D屬性(如網(wǎng)格頂點(diǎn)的位置)聯(lián)系起來,使3D形狀可以在沒有任何明確的3D監(jiān)督的情況下學(xué)習(xí)。

paddle 填補(bǔ) 一般在深度學(xué)習(xí)中都是將其填補(bǔ)成同一長(zhǎng)度的序列

data loading and transformation / loss function / differentiable rendering

支持3d數(shù)據(jù)的異構(gòu)批處理
第二層有力的支持了異構(gòu)批處理
圖卷積


render模塊整體結(jié)構(gòu)官網(wǎng)

Fragments
The rasterizer returns 4 output tensors in a named tuple.

  • pix_to_face: LongTensor of shape (N, image_size, image_size, faces_per_pixel) specifying the indices of the faces (in the packed faces) which overlap each pixel in the image.

  • zbuf: FloatTensor of shape (N, image_size, image_size, faces_per_pixel) giving the z-coordinates of the nearest faces at each pixel in world coordinates, sorted in ascending z-order.

  • bary_coords: FloatTensor of shape (N, image_size, image_size, faces_per_pixel, 3) giving the barycentric coordinates in NDC units of the nearest faces at each pixel, sorted in ascending z-order.

  • pix_dists: FloatTensor of shape (N, image_size, image_size, faces_per_pixel) giving the signed Euclidean distance (in NDC units) in the x/y plane of each point closest to the pixel.

渲染需要在幾個(gè)不同的坐標(biāo)框架之間進(jìn)行轉(zhuǎn)換:世界空間、視圖/攝像機(jī)空間、NDC空間和屏幕空間。在每一步中,重要的是要知道相機(jī)的位置,+X, +Y, +Z軸是如何對(duì)齊的,以及可能的值范圍。下圖概述了PyTorch3D使用的約定。
NDC全稱:Normalized Device Coordinates。

  • Pytorch3D和OpenGL的坐標(biāo)系約定存在差異
get_render函數(shù)
  • 源碼在 renderer/camera_utils.py // eye, at and up vectors represent its position.
    from cameras import look_at_view_transform
    eye, at, up = camera_to_eye_at_up(cam.get_world_to_view_transform())
    R, T = look_at_view_transform(eye=eye, at=at, up=up)
    只要根據(jù)同一個(gè)R T創(chuàng)造出來的相機(jī),其觀察的視角都是一樣的
R, T = look_at_view_transform(10, 0, 0)
  • 源碼在renderer/cameras.py
    znear: near clipping plane of the view frustrum
    zfar: far clipping plane of the view frustrum.
    R: Rotation matrix of shape (N, 3, 3)
    T: T: Translation matrix of shape (N, 3)
    fov: field of view angle of the camera.
    #其原來是OpenGLPerspectiveCameras,現(xiàn)在改成FoVPerspective
    #FoVPerspectiveCameras是一個(gè)類,它存儲(chǔ)一批參數(shù),通過指定視場(chǎng)來生成一批投影矩陣。
    #下面這是初始化一個(gè)類的成員變量
cameras = FoVPerspectiveCameras(device=device, R=R, T=T, znear=0.01, zfar=50, fov=2*np.arctan(self.img_size//2/self.focal)*180./np.pi)
  • 源碼在 renderer/lighting.py
  • PointLights也是一個(gè)類,這里也是初始化一個(gè)類的成員
    ambient_color: RGB color of the ambient component
    diffuse_color: RGB color of the diffuse component
    specular_color: RGB color of the specular component
    location: xyz position of the light.
lights = PointLights(device=device, location=[[0.0, 0.0, 1e5]], ambient_color=[[1, 1, 1]],specular_color=[[0., 0., 0.]], diffuse_color=[[0., 0., 0.]])

源碼在 render/mesh/rasterize_meshes.py

  • blur_radius:范圍[0,2]內(nèi)的浮動(dòng)距離,用于擴(kuò)展面邊界框以進(jìn)行柵格化。設(shè)置模糊半徑會(huì)使形狀周圍的邊緣模糊,而不是硬邊界。設(shè)置為0表示沒有模糊。
  • faces_per_pixel(可選):每個(gè)像素保存的面數(shù),返回z軸上最近的faces_per_pixel點(diǎn)。
  • image_size:要光柵化的輸出圖像的像素大小。在非正方形圖像的情況下,可以選擇為(H, W)的元組。
raster_settings = RasterizationSettings(image_size=self.img_size, #設(shè)置輸出圖像的大小blur_radius=0.0, #因?yàn)橹皇菫榱丝梢暬康亩秩緢D像,所以設(shè)置faces_per_pixel=1 和blur_radius = 0.0faces_per_pixel=1, #set the value of k)

class BlendParams(NamedTuple):
sigma: float = 1e-4
gamma: float = 1e-4
background_color: Union[torch.Tensor, Sequence[float]] = (1.0, 1.0, 1.0)

blend_params = blending.BlendParams(background_color=[0, 0, 0])

最后一步,將前面的參數(shù)組合起來,來初始化一個(gè)render by composing a rasterizer and a shader

renderer = MeshRenderer(rasterizer=MeshRasterizer(cameras=cameras,raster_settings=raster_settings),shader=SoftPhongShader(device=device,cameras=cameras,lights=lights,blend_params=blend_params))
Split_coeff函數(shù)

將傳過來的系數(shù)分別分開,最后分別返回這些系數(shù):
return id_coeff, ex_coeff, tex_coeff, angles, gamma, translation

def Split_coeff(self, coeff):id_coeff = coeff[:, :80] # identity(shape) coeff of dim 80ex_coeff = coeff[:, 80:144] # expression coeff of dim 64tex_coeff = coeff[:, 144:224] # texture(albedo) coeff of dim 80angles = coeff[:, 224:227] # ruler angles(x,y,z) for rotation of dim 3gamma = coeff[:, 227:254] # lighting coeff for 3 channel SH function of dim 27translation = coeff[:, 254:] # translation coeff of dim 3return id_coeff, ex_coeff, tex_coeff, angles, gamma, translation
Shape_formation函數(shù)

只是用了身份和表情參數(shù)
einsum 愛因斯坦求和約定

def Shape_formation(self, id_coeff, ex_coeff):n_b = id_coeff.size(0)# 矩陣乘法face_shape = torch.einsum('ij,aj->ai', self.idBase, id_coeff) + \torch.einsum('ij,aj->ai', self.exBase, ex_coeff) + self.meanshape# 改變其維度face_shape = face_shape.view(n_b, -1, 3)face_shape = face_shape - self.meanshape.view(1, -1, 3).mean(dim=1, keepdim=True)return face_shape
Texture_formation函數(shù)

使用了紋理系數(shù)

def Texture_formation(self, tex_coeff):n_b = tex_coeff.size(0)face_texture = torch.einsum('ij,aj->ai', self.texBase, tex_coeff) + self.meantexface_texture = face_texture.view(n_b, -1, 3)return face_texture
Compute_norm函數(shù)
def Compute_norm(self, face_shape):face_id = self.tri.long() - 1 #tri是triangle三角形 long() 函數(shù)將數(shù)字或字符串轉(zhuǎn)換為一個(gè)長(zhǎng)整型。point_id = self.point_buf.long() - 1 shape = face_shapev1 = shape[:, face_id[:, 0], :]v2 = shape[:, face_id[:, 1], :]v3 = shape[:, face_id[:, 2], :]e1 = v1 - v2e2 = v2 - v3face_norm = e1.cross(e2) #返回兩個(gè)(數(shù)組)向量的叉積。empty = torch.zeros((face_norm.size(0), 1, 3), dtype=face_norm.dtype, device=face_norm.device)face_norm = torch.cat((face_norm, empty), 1) v_norm = face_norm[:, point_id, :].sum(2) #torch.norm()函數(shù)#inputs的一共N維的話對(duì)就這N個(gè)數(shù)據(jù)求p范數(shù)#p指的是求p范數(shù)的p值,函數(shù)默認(rèn)p=2,那么就是求2范數(shù)#inputs3 = inputs.norm(p=2, dim=1, keepdim=False)v_norm = v_norm / v_norm.norm(dim=2).unsqueeze(2) return v_norm

Compute_rotation_matrix

#靜態(tài)方法 #輸入angles 輸出rotation rotXYZ = torch.eye(3).view(1, 3, 3).repeat(n_b * 3, 1, 1).view(3, n_b, 3, 3)

Rigid_transform_block

輸入:face_shape, rotation, translation
輸出:face_shape_t
將臉部旋轉(zhuǎn)之后平移

def Rigid_transform_block(face_shape, rotation, translation):face_shape_r = torch.matmul(face_shape, rotation)face_shape_t = face_shape_r + translation.view(-1, 1, 3)return face_shape_t

Illumination_layer

輸入:face_texture, norm, gamma
輸出:face_color

get_lms

def get_lms(self, face_shape, kp_inds):lms = face_shape[:, kp_inds, :]return lms

Projection_block

輸入:face_shape
輸出:face_projection

pytorch函數(shù)

  • bmm函數(shù)
    • 計(jì)算兩個(gè)tensor的矩陣乘法,torch.bmm(a,b),tensor a 的size為(b,h,w),tensor b的size為(b,w,h),注意兩個(gè)tensor的維度必須為3. 結(jié)果維度為: (b,h,h)
  • permute函數(shù)
    • torch.Tensor.permute (Python method, in torch.Tensor)
    • permute(dims) 將tensor的維度換位
  • clone函數(shù)
    • orch 為了提高速度,向量或是矩陣的賦值是指向同一內(nèi)存的,這不同于 Matlab。如果需要保存舊的tensor即需要開辟新的存儲(chǔ)地址而不是引用,可以用 clone() 進(jìn)行深拷貝
  • stack函數(shù)
    • stack(tensors,dim=0,out=None)
    • dim=0時(shí),將tensor在一維上連接
    • dim=1時(shí),將每個(gè)tensor的第i行按行連接組成一個(gè)新的2維tensor,再將這些新tensor按照dim=0的方式連接。
    • dim=2時(shí),將每個(gè)tensor的第i行轉(zhuǎn)置后按列連接組成一個(gè)新的2維tensor,再將這些新tesnor按照dim=0的方式連接
  • tile函數(shù)
    • tile函數(shù)位于python模塊 numpy.lib.shape_base中,他的功能是重復(fù)某個(gè)數(shù)組。比如tile(A,n),功能是將數(shù)組A重復(fù)n次,構(gòu)成一個(gè)新的數(shù)組
  • clamp函數(shù)
    • torch.clamp(input, min, max, out=None) → Tensor
    • clamp()函數(shù)的功能將輸入input張量每個(gè)元素的值壓縮到區(qū)間 [min,max],并返回結(jié)果到一個(gè)新張量。

TexturesVertex

源代碼位置:renderer/mesh/textures.py
這里也是初始化一個(gè)類的成員

face_color = TexturesVertex(face_color)

Meshes

源代碼位置:structures/meshes.py

def __init__(self,verts=None,faces=None,textures=None,*,verts_normals=None,) -> None: mesh = Meshes(face_shape_t, tri.repeat(batch_num, 1, 1), face_color)

總結(jié)

以上是生活随笔為你收集整理的3DMM-Fitting_Pytorch代码阅读的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

中文字幕你懂的 | 2021国产在线视频 | 成人av免费网站 | 国产在线污 | 国产一二区免费视频 | 成年人在线免费看视频 | 在线黄av| 99在线观看视频 | 亚洲一区二区三区miaa149 | 日本h在线播放 | www.干| 日韩免费看的电影 | 国产二区免费视频 | 日韩欧美在线视频一区二区三区 | 香蕉视频导航 | avsex| 丁香婷婷色 | 午夜性生活片 | 狠狠色狠狠色合久久伊人 | 色婷婷久久久综合中文字幕 | 欧美在线视频精品 | 日韩欧美精品在线观看视频 | 国产精品嫩草69影院 | 97在线超碰 | 久草在线最新免费 | 9幺看片| 丝袜+亚洲+另类+欧美+变态 | 波多野结衣日韩 | 中文字幕黄色网 | 又黄又刺激视频 | 亚洲成人av电影在线 | 天天操天天谢 | 久久久精品 一区二区三区 国产99视频在线观看 | 欧美一级日韩三级 | 精品在线视频播放 | 国产91学生粉嫩喷水 | 日韩免费av在线 | 国产精品国产自产拍高清av | 久久综合中文字幕 | 麻豆视频免费 | 久久免费电影网 | 久草久草在线观看 | 操操碰 | 成人久久18免费网站麻豆 | 亚洲国产中文字幕在线观看 | 免费看的视频 | 91日韩精品 | 国产a视频免费观看 | 成年人视频在线免费 | 国产99久久久精品 | av观看网站 | 久久久国产电影 | 美女搞黄国产视频网站 | 99亚洲精品| 日日操日日操 | 精品国产资源 | 亚洲成色 | 国产a免费 | 夜夜夜精品 | 久久久不卡影院 | 国产成人精品免高潮在线观看 | 91喷水 | 一区二区三区高清在线观看 | 欧美日韩aaaa | 天天射天天做 | 欧美a级一区二区 | 久久久久久激情 | 日韩成人精品在线观看 | 久久久久久网址 | 亚洲精品久久久蜜桃 | 在线亚洲免费视频 | 欧美激情精品久久久久久 | 国产精品毛片一区二区在线看 | 国产欧美最新羞羞视频在线观看 | 国产精品久久久久久久久久久免费 | 色综合久久久久综合 | 成人动态视频 | 久久久久国产一区二区三区 | 久草在线视频新 | 97超碰福利久久精品 | 在线午夜av | 狠狠的操狠狠的干 | 中文字幕在线看视频国产 | 精品国产一区二区在线 | 丁香花中文在线免费观看 | 日韩电影一区二区三区 | 九九免费在线看完整版 | 久久久91精品国产一区二区三区 | 99视频在线免费观看 | 日韩av电影网站在线观看 | www.亚洲精品在线 | 日韩精品视频网站 | 国产精品一区二区av麻豆 | 在线日韩 | 成人午夜电影网站 | 色综合综合 | 亚洲日本va在线观看 | 免费国产亚洲视频 | 欧美日韩国产一区二区三区在线观看 | 亚洲精品美女在线观看 | 夜夜躁狠狠燥 | 在线观看一区 | 奇米影视在线99精品 | 91在线免费视频 | 色狠狠干 | 中文字幕一二三区 | 免费色网站 | 欧美日韩高清国产 | 中文字幕成人一区 | 成年人毛片在线观看 | 亚欧日韩成人h片 | 最近中文国产在线视频 | 狠狠色狠狠色综合日日92 | 最新中文字幕在线播放 | 国产一级片免费观看 | 天天射天 | 狠狠亚洲| 免费在线成人av电影 | 国产精品久久久久久妇 | 狠狠操综合 | 看国产黄色片 | a亚洲视频| 婷五月激情 | 成人app在线播放 | 午夜精品视频免费在线观看 | 97视频资源 | 免费福利片 | 日日精品 | av电影一区二区三区 | 在线日本v二区不卡 | 免费精品在线观看 | 91免费试看 | 黄色软件网站在线观看 | 久久久久亚洲精品成人网小说 | 国产欧美高清 | 国产老太婆免费交性大片 | 免费看毛片在线 | 麻豆国产在线视频 | 激情婷婷综合网 | 亚洲高清久久久 | 中文国产字幕在线观看 | 亚洲天堂网在线视频 | 亚洲综合色激情五月 | 96av麻豆蜜桃一区二区 | 日韩高清国产精品 | 亚洲精品午夜久久久 | 午夜精品久久久久久久99热影院 | 色a网| 国产高潮久久 | 国产精品网红直播 | 天天色天天综合 | 91精品国产一区二区在线观看 | 91一区二区三区久久久久国产乱 | 深夜免费福利在线 | 97视频总站 | a级一a一级在线观看 | 国产精品亚州 | 日韩有色 | 亚洲精品视频在线观看视频 | 免费观看第二部31集 | 三上悠亚一区二区在线观看 | 欧美巨乳波霸 | 日韩精品视频一二三 | 亚洲三级在线播放 | 丝袜美腿在线 | 精品欧美一区二区在线观看 | 99r国产精品 | 亚洲电影av在线 | 一级a毛片高清视频 | 欧美亚洲精品一区 | 亚洲综合成人在线 | 国产免费三级在线观看 | av成人在线观看 | 久草精品国产 | 999超碰| 91精品国产乱码久久 | 欧美伦理一区 | 久久久免费观看完整版 | 国产精品久久久 | www.亚洲黄| 深夜福利视频一区二区 | 国产一区二区三区在线 | 日本久久久影视 | 人人人爽| av网在线观看 | 91成人精品一区在线播放69 | 超碰97网站| 最近中文字幕在线中文高清版 | 最新av免费在线观看 | 国产黄色免费在线观看 | 国产精品精品视频 | 在线观看国产日韩欧美 | 精品欧美在线视频 | 欧美性生活小视频 | 欧美精品一区二区免费 | 国产精品免费久久久久久久久久中文 | 久久国产精品精品国产色婷婷 | 日韩网站在线观看 | av综合 日韩| 亚洲视频免费在线 | 欧美男同视频网站 | 黄色91免费观看 | 国产精品久久久久久久久婷婷 | 日韩电影中文字幕 | 日日操日日插 | 在线观看一区 | 亚洲在线视频播放 | 午夜视频在线网站 | 天天插日日射 | 国产一区二区三区免费在线观看 | 91成人免费观看视频 | 黄色电影在线免费观看 | 国产精品一级在线 | 最新的av网站 | 一区二区三区精品在线视频 | 国内精品久久久久久久久久久 | 中国精品少妇 | 久久视讯 | 国产一区在线视频 | 成年人免费观看国产 | 一区二区 不卡 | 97精品国产97久久久久久春色 | 日一日干一干 | 久久久精品欧美一区二区免费 | 久久天天躁夜夜躁狠狠85麻豆 | 麻豆免费视频观看 | 五月天综合激情网 | 韩国三级一区 | 91精品无人成人www | 久久久久久蜜桃一区二区 | 亚洲精品色| 久久免费黄色 | 免费在线a | 精品视频成人 | 日韩av电影国产 | 一区二区三区在线视频111 | 很黄很黄的网站免费的 | 免费看一级特黄a大片 | 狠狠色丁香婷婷综合基地 | 在线一二三区 | 夜夜躁日日躁狠狠久久88av | 91福利视频久久久久 | 夜夜躁狠狠燥 | 国产不卡在线观看 | 97国产大学生情侣酒店的特点 | 中文av影院| 欧美极度另类性三渗透 | a级国产乱理论片在线观看 伊人宗合网 | 国产欧美综合视频 | 福利视频第一页 | 免费美女久久99 | 国产高清成人 | 成人毛片100免费观看 | 狠狠干我 | 人人看人人做人人澡 | 久久avav | 玖玖精品在线 | 99色视频在线| 国产精品免费久久久久影院仙踪林 | 国产精品免费观看视频 | www黄| 亚洲精品美女在线 | 国产高清黄色 | 欧美 国产 视频 | 黄网站www | 天天骚夜夜操 | 成人免费在线观看入口 | 国产精品久久久久影视 | 日韩综合精品 | 三级毛片视频 | 中文字幕一区二区三区四区在线视频 | 99精品国产99久久久久久福利 | 国产福利a | 色综合久久精品 | 91成人看片| 色婷婷综合久久久中文字幕 | 激情电影在线观看 | 97在线观看视频 | 免费观看视频的网站 | 色 中文字幕 | 久草电影在线观看 | 丁香六月色 | 日本精品视频网站 | 中午字幕在线观看 | 欧美做受xxx | 麻豆免费视频 | 天天艹天天干天天 | 91av官网 | 午夜成人免费影院 | 国产亚洲视频在线观看 | 色综合久久精品 | 一区二区影院 | 国产成人一区二区三区久久精品 | 久久99国产精品免费 | 久久美女电影 | 亚洲一级在线观看 | 中文字幕观看av | 99视频在线免费播放 | 五月婷久久 | 亚洲免费在线观看视频 | 国产999在线 | 国产精品视频在线观看 | 欧美日韩网址 | 一区二区三区四区五区六区 | 91成人免费在线视频 | 国产91在线免费视频 | 激情在线网 | 国产成人精品一区二三区 | 亚洲高清在线精品 | 91在线视频播放 | 美女久久久久久久久久 | 亚洲国产精品999 | 人人看人人草 | 九九视频在线观看视频6 | 在线观看一区二区视频 | 欧美一区二区日韩一区二区 | 久久久国产精品一区二区三区 | 中文字幕av影院 | 97在线观看免费 | 欧洲视频一区 | 综合在线色 | 国产福利中文字幕 | 在线中文字母电影观看 | 狠日日| 欧美日韩国产精品一区 | 国产成人精品一区二区在线观看 | 亚洲国产精品第一区二区 | 久久久999免费视频 日韩网站在线 | 在线看成人 | 久久精品www人人爽人人 | 亚洲成色777777在线观看影院 | 91综合视频在线观看 | 奇米影视8888在线观看大全免费 | 久久影院午夜论 | 久久99热久久99精品 | 免费成人黄色片 | 在线视频你懂 | 中文字幕日韩在线播放 | 久久久久久久久久久高潮一区二区 | 国产老太婆免费交性大片 | 亚洲成人国产 | 久久九九网站 | 亚洲黄色av网址 | 中文字幕在线免费看线人 | 天天综合91 | 欧美贵妇性狂欢 | 四虎www.| 日韩av在线免费看 | 在线观看av网 | 91成人欧美| 在线看成人av | 99国产精品久久久久老师 | 久久 在线 | 狠狠躁夜夜躁人人爽超碰91 | 午夜的福利 | 久久伊人色综合 | 国产对白av | 69国产精品视频 | 中文字幕久久久精品 | 日本护士三级少妇三级999 | 久久久不卡影院 | 日韩精品久久久久久久电影竹菊 | 免费v片 | 国产精品手机视频 | 在线电影a | 日本一区二区三区视频在线播放 | 日韩在线观看中文 | 永久免费的啪啪网站免费观看浪潮 | www.91成人 | 99综合影院在线 | 天天爱天天射 | 成人免费共享视频 | 亚洲蜜桃在线 | 2020天天干夜夜爽 | 久久久久久久国产精品影院 | 日韩中文字幕91 | 日日摸日日添夜夜爽97 | 九九热在线观看视频 | 国产91影视 | 久久er99热精品一区二区 | 久久视频这里有久久精品视频11 | 亚洲最新av在线 | 日日干夜夜爱 | 成人欧美一区二区三区在线观看 | 国产精品99久久久精品 | 中文字幕丝袜一区二区 | 天天看天天干天天操 | 国产成人在线观看免费 | 久久综合欧美 | 国产人成精品一区二区三 | 国产在线观看地址 | 日本在线中文在线 | www.夜夜骑.com| 96国产精品视频 | 国产精品久久婷婷六月丁香 | 久久影院亚洲 | 999成人网| 韩国一区二区三区视频 | 成人av网站在线播放 | 国产一区二区免费看 | 亚州人成在线播放 | 日韩免费观看av | 精品一区av| 日批视频在线观看免费 | 日本黄色免费播放 | 中文字幕高清视频 | 国内视频一区二区 | 久久天天躁狠狠躁夜夜不卡公司 | 在线观看国产www | 久久九九视频 | 亚洲天堂精品视频在线观看 | 青青河边草观看完整版高清 | 在线视频第一页 | 亚洲精品国产片 | 97国产一区二区 | 欧美做受69 | 丁香五香天综合情 | 91在线播| 黄色免费网站下载 | 精品av在线播放 | 欧美一二三视频 | 波多野结衣在线视频免费观看 | 亚洲欧洲成人 | 国产一区二区免费在线观看 | 国产色视频网站2 | 免费的成人av | 伊人五月天 | 狠狠色狠狠色终合网 | 国产精品久久久久久久久久新婚 | 国产在线传媒 | 美女网站一区 | 伊人www22综合色 | 久操视频在线观看 | 免费观看日韩av | 99视频在线免费观看 | 狠狠亚洲 | av片在线看| 青草视频在线 | 国产二区视频在线 | 天天综合网久久综合网 | 成人在线黄色电影 | 97视频在线观看成人 | 91重口视频 | 九九热免费精品视频 | 久久久免费精品国产一区二区 | 日韩激情视频 | 国产成人黄色片 | 亚洲九九爱 | 欧美精品久久久久久久久免 | 欧美aaa大片 | 国产精品免费高清 | 欧美综合色在线图区 | 亚在线播放中文视频 | www.夜色.com | 国产福利一区二区三区在线观看 | 日韩欧美一区二区在线观看 | 久草视频免费看 | 国产区在线看 | 国产福利一区二区三区在线观看 | 婷婷免费视频 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 五月婷色 | 久久精品黄 | 国产手机视频在线 | 亚洲视频大全 | 成人黄色在线播放 | 精品久久久久亚洲 | 91在线看| 色综合天天视频在线观看 | 精品在线观看一区二区 | 999视频在线观看 | 亚洲国产精品va在线看黑人 | 国产精品久久一区二区三区, | 97小视频 | 粉嫩av一区二区三区入口 | 在线观看视频黄色 | 欧美日韩性 | 黄色小网站在线观看 | 一区 在线 影院 | 亚洲天堂精品 | 亚洲黄色免费观看 | 精品在线视频一区 | 日韩免费三区 | 在线欧美国产 | 亚洲精品国偷自产在线99热 | 日韩精品中文字幕在线不卡尤物 | 精品久久亚洲 | 亚洲小视频在线 | 在线观看免费一区 | 久久综合九色综合97_ 久久久 | 国产精品男女 | 国产精品福利视频 | 国产精品久久久久免费观看 | 成人av在线观| 天天爱天天射 | 国产精品免费视频久久久 | 婷婷久久综合网 | 超碰在线色 | 久久99精品国产麻豆宅宅 | 91香蕉视频在线下载 | 天堂av最新网址 | 在线观看亚洲专区 | 久久99国产精品自在自在app | 久99久久 | 亚洲精品视频在线播放 | 999久久久免费视频 午夜国产在线观看 | 欧美精品久久人人躁人人爽 | 欧美精品一区二区性色 | 99久热在线精品 | 日本成人黄色片 | 欧美日本中文字幕 | 九九精品无码 | 中文字幕一区二区三区在线视频 | 91九色在线观看 | 中文字幕一区二区三区久久 | 99色人 | 97碰在线| 中文字幕成人 | 青青河边草观看完整版高清 | 97视频在线播放 | 亚洲japanese制服美女 | 色天天中文 | 亚洲精品久久视频 | 91精品啪在线观看国产线免费 | 免费观看全黄做爰大片国产 | 久久只有精品 | 久久精品欧美视频 | 久久免费毛片视频 | 成人av动漫在线观看 | 日韩欧美一区二区三区黑寡妇 | 久久视频这里只有精品 | 日韩在线| 九九九在线观看 | 日韩99热 | 亚洲视屏一区 | 五月激情五月激情 | 91九色国产蝌蚪 | www色片 | 欧美一级片在线观看视频 | 亚洲专区 国产精品 | 97视频在线观看视频免费视频 | 日韩在线视频精品 | 国产小视频在线观看免费 | av中文字幕在线免费观看 | 欧美极品久久 | 午夜视频久久久 | 亚洲国产精品成人av | 国产在线视频不卡 | 日韩久久精品一区二区 | 久久久精品网站 | 成人永久免费 | 久久综合99 | 在线亚洲人成电影网站色www | 欧美 日韩 性 | 欧美精品一区在线发布 | 婷婷伊人网 | 亚洲精品www. | 夜夜高潮夜夜爽国产伦精品 | 久久精品伊人 | 天堂入口网站 | 久久久久免费观看 | 欧美日韩视频在线观看一区二区 | 久久在线视频精品 | 欧美日韩不卡一区二区三区 | 日本久久成人中文字幕电影 | 国产成人久久久77777 | 91精品无人成人www | 精品亚洲在线 | 成人国产网址 | 日韩av成人免费看 | www.一区二区三区 | 精品国产成人在线影院 | 亚洲日本精品视频 | 香蕉视频在线播放 | 国产日韩欧美在线影视 | 国产精品久久久久一区二区 | 日韩欧美高清视频在线观看 | 日韩高清在线看 | 日本三级吹潮在线 | 亚洲黄色在线免费观看 | 欧美日韩在线看 | 99精品欧美一区二区三区黑人哦 | 亚洲少妇xxxx | 久草精品视频在线观看 | 亚洲精品国产精品久久99 | 最近中文字幕高清字幕在线视频 | 一区二区三区四区五区在线 | 99国内精品| 91精品国产综合久久婷婷香蕉 | 色偷偷88888欧美精品久久 | 免费看污黄网站 | 亚洲欧美精品一区二区 | 久草综合在线观看 | 国产99久久久国产精品 | 日韩av视屏在线观看 | 国产精品午夜av | 国产精品二区三区 | 国产色视频网站2 | 99久久这里有精品 | av韩国在线 | www.日日日.com| 91在线91拍拍在线91 | 精品九九九九 | 91视频91自拍 | 国产91电影在线观看 | 国产亚洲aⅴaaaaaa毛片 | 日本久久综合视频 | 欧美日韩综合在线观看 | 91精品免费在线视频 | 香蕉视频免费在线播放 | 在线看一区 | 一区三区视频 | 狠狠干激情 | 欧美福利片在线观看 | 丁香花中文在线免费观看 | 久草在在线视频 | 亚洲日本色 | 亚洲高清视频在线观看免费 | 久久久久久久久精 | 亚洲第一成网站 | 亚洲免费永久精品国产 | 午夜色婷婷 | 久久伦理网 | 亚洲欧美日韩一二三区 | 91中文在线视频 | 欧美另类人妖 | 成人午夜影视 | 久久永久视频 | 中中文字幕av在线 | 日韩欧美在线中文字幕 | www.av中文字幕.com | 国产精品久久久久久婷婷天堂 | 91av小视频| 亚洲国产精品小视频 | 免费黄色a网站 | 精品在线一区二区 | 国产亚洲人成网站在线观看 | 免费久久99精品国产婷婷六月 | 麻豆影视在线观看 | 天天曰天天曰 | av一级在线 | 国产婷婷精品av在线 | 99精品视频在线观看视频 | 伊人手机在线 | 午夜久久久精品 | 日本精品久久久久中文字幕 | 亚洲专区欧美 | 免费高清在线视频一区· | 夜夜躁日日躁狠狠久久88av | 久久免费国产 | 西西444www大胆高清视频 | 国产中文字幕在线 | 国产美女精品视频免费观看 | 久久夜色精品国产欧美乱极品 | 亚洲四虎在线 | 免费在线观看av网站 | 国产色在线观看 | 超碰人人在线观看 | 国产99久久久精品 | 欧洲精品二区 | 亚洲一区网站 | 久久精品亚洲精品国产欧美 | 欧美精品免费在线观看 | av免费网| av网址最新 | 欧美日韩国产精品久久 | 福利网址在线观看 | 久久精品免费电影 | 久久久私人影院 | 一级黄色片毛片 | 国产亚洲一区二区三区 | 久久精品国产精品亚洲 | 日本三级大片 | 麻豆影视在线观看 | 日日夜夜精品网站 | 麻豆视频免费看 | 五月天丁香亚洲 | 久久99精品波多结衣一区 | 国产精品每日更新 | 九九在线国产视频 | 成人在线视频你懂的 | 欧美成人播放 | 欧美男同视频网站 | 丁香六月五月婷婷 | 久久伊人热 | 午夜精品电影一区二区在线 | 丁香婷婷电影 | 97国产大学生情侣酒店的特点 | 99视频在线免费观看 | 亚洲精品乱码久久久久 | 中国一级片在线观看 | 国产精品久久久久9999 | 国产一级免费电影 | 亚州性色 | 国产系列在线观看 | 欧美精品在线免费 | 国产一区在线精品 | 91人人爽人人爽人人精88v | 日韩a级黄色 | 久久影视中文字幕 | 在线黄色免费 | 久福利 | 国产一区二区高清视频 | 成人在线视频论坛 | 日韩av片无码一区二区不卡电影 | 日韩欧美国产精品 | 91原创在线观看 | 婷婷六月网 | 视频在线一区二区三区 | 日韩影视大全 | 91视频在线免费看 | 射综合网 | 日韩成人免费电影 | 久久涩视频| 免费av在 | 国产理伦在线 | 成人91在线观看 | 免费看av在线 | 九九九热精品免费视频观看网站 | 欧美精品久久久久a | 91麻豆操 | 91精品999| 久久一区二区三区国产精品 | 欧美日韩在线精品一区二区 | 国产精品99精品久久免费 | 免费av小说 | 中文视频在线 | 精品少妇一区二区三区在线 | 欧美一级性生活视频 | 精品在线二区 | 久久久久人人 | 国产麻豆电影 | 久久久99精品免费观看 | 日韩视频免费 | 国产群p| 91av在线播放视频 | 久久久私人影院 | 新版资源中文在线观看 | 久久激情网站 | 日本精品免费看 | 一区二区三区在线视频111 | 久久久久久久久久久成人 | 国产一区二区精 | 国产96在线观看 | 久草视频在线看 | 友田真希av | 在线观看中文字幕dvd播放 | 久久久久久久久久久免费视频 | 久久亚洲二区 | 亚洲精品综合在线 | 黄色片视频免费 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 欧美成人手机版 | 蜜桃视频在线视频 | 欧美精品在线视频 | 超碰人在线 | 91高清完整版在线观看 | 九色福利视频 | 久久视频在线观看 | 久久国产网 | 久久国产成人午夜av影院潦草 | 亚洲国产网址 | www.夜夜操| 免费在线一区二区三区 | 欧美在线一二区 | 中文免费 | 久久系列 | 香蕉网在线观看 | 在线综合 亚洲 欧美在线视频 | www.夜夜爱| 国产99在线免费 | 狠狠久久伊人 | 精品国产伦一区二区三区观看说明 | 国产第一页福利影院 | 一区二区三区高清 | 国产传媒中文字幕 | 日韩精品免费在线观看视频 | 九九免费在线视频 | 婷婷在线视频观看 | 免费看三级黄色片 | 欧美日韩在线视频观看 | 在线观看资源 | 国产精品毛片久久久久久久久久99999999 | 白丝av免费观看 | 黄色av一区二区 | 精品国产乱码久久久久久三级人 | 91麻豆精品国产91久久久无需广告 | 高潮久久久 | 香蕉在线视频观看 | 91传媒免费在线观看 | 日日日操操 | 天天操夜操视频 | 五月天中文在线 | 999免费视频 | 超碰个人在线 | 麻花传媒mv免费观看 | 在线亚洲成人 | 日韩午夜视频在线观看 | 国产精品四虎 | 国产成人香蕉 | 天堂成人在线 | 狠狠色噜噜狠狠狠合久 | 亚洲精品在线播放视频 | 成人h在线播放 | 精品在线观看一区二区 | 久久久久国产精品免费免费搜索 | 亚洲精品国产精品国自产观看浪潮 | 色国产精品 | 波多野结衣一区三区 | 成人久久久精品国产乱码一区二区 | 久久狠狠亚洲综合 | 天堂av免费看 | 国产一区二区久久久 | 91亚洲在线观看 | 久久毛片网站 | 国产一区观看 | 免费99视频 | 国产第一页在线观看 | 国产成人一区二区精品非洲 | 成人97视频 | 美女免费视频网站 | 成人黄色小说在线观看 | 91亚洲精品乱码久久久久久蜜桃 | 国产精品一区二区62 | 国产原厂视频在线观看 | 六月激情丁香 | 欧美日韩亚洲在线 | 美女激情影院 | 亚洲手机av | 三级黄色在线 | 天天天天色射综合 | 久久久免费看视频 | 激情视频一区二区三区 | 韩国av电影在线观看 | 九月婷婷人人澡人人添人人爽 | 中国一级片在线观看 | 中文字幕av免费在线观看 | 丝袜美腿av | 国产视频久久 | 天天操夜夜操国产精品 | 亚洲成aⅴ人片久久青草影院 | 欧美一二三视频 | 亚洲免费国产视频 | 久久久久久久久黄色 | 色婷婷骚婷婷 | 久久这里只有精品视频首页 | 日韩伦理片一区二区三区 | 最近中文字幕mv | 亚洲黄色小说网址 | 黄色aaa级片 | 天堂av网址 | 久久成视频 | 99久久精品一区二区成人 | 91av在线免费视频 | 亚洲精品视频在线免费播放 | a极黄色片| 国内精品久久久久 | 黄色一级大片在线观看 | 99精品99 | 正在播放国产精品 | 成人午夜精品福利免费 | 美女视频黄,久久 | 91理论电影 | 国产免费美女 | 成人av一区二区三区 | 免费成人结看片 | 久久这里精品视频 | 免费人成在线观看 | 奇米影视在线99精品 | 五月天综合色 | 婷婷在线网站 | 爱干视频 | 91av在线免费观看 | 国模精品在线 | 在线日韩精品视频 | 草久电影 | 中文字幕国产一区 | 在线视频电影 | 天天天天爽| 国产精品综合久久久久久 | 色综合久久天天 | 久久午夜精品影院一区 | 国产麻豆精品久久 | 玖玖国产精品视频 | 超碰国产在线观看 | 国产精品福利在线播放 | 久久a国产 | 国产 亚洲 欧美 在线 | 在线国产精品一区 | 91激情小视频 | 天天干天天看 | av中文国产| 97在线超碰| www.成人久久 | 亚洲 欧美 日韩 综合 | 夜夜躁狠狠躁日日躁视频黑人 | 国内视频一区二区 | 日本成人中文字幕在线观看 | 免费看片在线观看 | 国产精品丝袜在线 | 亚洲精品资源在线 | 丁香资源影视免费观看 | 四虎www com | 精品国产诱惑 | 亚洲精品一区二区三区四区高清 | 操操操影院 | 国产一二区视频 | 天天干天天综合 | 亚洲美女视频在线 | 91大神在线观看视频 | 成人av电影免费在线观看 | 亚洲成a人片77777潘金莲 | 日本99干网 | 97视频亚洲| 一级黄色大片 | 中文字幕一区二区在线播放 | 999毛片| 精品国产一区二区三区久久影院 | 少妇精品久久久一区二区免费 | 最近中文字幕大全 | 中日韩在线视频 | 超碰人人99| 黄色软件网站在线观看 | 中文字幕你懂的 | 国产精品理论视频 | 性色av香蕉一区二区 | 亚洲一级电影在线观看 | 国产成人av福利 | 97超视频在线观看 | 亚洲精品久久久蜜桃直播 | 美女久久久久久 | 成人欧美日韩国产 | 婷婷丁香在线观看 | 婷婷综合电影 | 久久久久国产精品免费免费搜索 | .国产精品成人自产拍在线观看6 | 在线观看中文字幕2021 | 99视频精品 | 久久国产精品小视频 | 国产破处在线视频 | 国产精品一区电影 | 精品亚洲va在线va天堂资源站 | 午夜精品一区二区三区在线观看 | 国产午夜一区 | 一区二区丝袜 | 国产一级二级在线播放 | 操老逼免费视频 | av 一区二区三区 | 亚洲视频综合在线 | 欧美精品久久久久久 | 国产精品av免费在线观看 | 丁香电影小说免费视频观看 | 三级黄免费看 | 在线观看视频一区二区 | 久久久av免费 | 人人超在线公开视频 | 亚洲人成人99网站 | 亚洲国产影院av久久久久 | 欧美日韩国产区 | 天天草天天插 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲开心激情 | 973理论片235影院9 | 97av在线视频免费播放 | 国内精品视频在线 | 精品国产视频在线观看 | 天天拍天天色 | 国产伦精品一区二区三区无广告 | 久草久热 | 成年人黄色免费视频 | 亚洲精品理论片 | 特黄免费av| 美女视频永久黄网站免费观看国产 | 日韩免费观看av | 午夜精品视频免费在线观看 | 日韩欧美在线观看一区二区 | 中文在线a天堂 | 在线观看视频一区二区三区 | 日韩av高清 | 国产精品 日韩 欧美 | 久久亚洲美女 | 国产日韩精品一区二区三区 | 黄色网免费 | 国产永久免费高清在线观看视频 | 韩国av免费看 | 9免费视频 | 国产精品资源在线观看 | 五月激情天 | 五月天堂网| 国产中文字幕视频在线观看 | 激情丁香在线 | 国产精品久久电影网 | 99热超碰在线 | 在线免费观看亚洲视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 久草在线资源视频 | 亚洲精品国产精品国自产 | 超碰人人在 |