精华内容
下载资源
问答
  • 很多人可能不知道,「行为分析」四个字的分量已经代表了近两年一些高速成长的公司对数据分析需求的精细化程度,同时,它也催生出了新一代的数据分析工具和分析方法。过去,所有人都在关注PV、UV、跳出率、访问深度、...

    很多人可能不知道,「行为分析」四个字的分量已经代表了近两年一些高速成长的公司对数据分析需求的精细化程度,同时,它也催生出了新一代的数据分析工具和分析方法。过去,所有人都在关注PV、UV、跳出率、访问深度、停留时长,还有很多人始终放不下的热力图等,总体来说,这些指标都属于统计指标,反映的都是产品总体情况,数据的价值除了反映现状,还有更重要的是应用。统计是数据汇总整理的结果,没有分析,怎能拿来指导业务增长呢?

    当然,可能指导过。比如一款阅读产品,通过文章详情页的停留时长可以判断用户对文章的喜好程度,但是,他可能在滑动屏幕看文章、可能在评论区输入一段评论,当然,也可能没看文章却登录了诸葛io的官网看当天的实时数据(此处为硬广)。所以比起用户在该页面所花时间的汇总,用户是否是在看文章还是在评论以及评论的内容是什么对我们更有指导意义。

    技术在发展,时代在召唤,所以,行为分析,你需要了解并且知道如何应用。

    一、什么是用户行为分析

    一口气说:基于用户在互联网产品上的行为以及行为背后的人发生的时间频次等维度深度还原用户使用场景并且可以指导业务增长。

    慢点说:对用户模型做关键补充。通过行为数据的补充,构建出精细、完整的用户画像。传统统计工具的数据背后没有人,所以也谈不上用户模型(画像),一个完整、多维、精确的用户画像=用户行为数据+用户属性数据

    二、用户行为分析在应用中的价值

    关于影响数据结果和判断的三个维度:

    1. product-market fit(PMF:产品-市场契合点)

    意思是产品符合市场需求。比如你做了个社区电商平台,拿一个demo产品投向市场,可能这个阶段不会看有多少收入,而是看来了多少人,有多少人看了商品链接,有多少人真正支付了,这个阶段用户的认可可能对你是否决定做这个项目、判断这个项目是否有市场更有决定性因素;

    2. 用户来源

    这点是说用户质量。所有的产品核心人群都不是面向所有人的(至少一开始不是),一定有他的核心人群,所以用户来源渠道的质量就决定了数据结果的好坏,可能会影响你对项目、对产品的判断和决策;

    3. 产品本身

    第三点落脚到产品上了。产品承载着你的商业模式,产品本身的功能设计、用户体验、迭代以及运营策略等都会影响数据、影响留存、影响项目的生死。

    基于以上理解,我们看行为分析的重要性,基于行为分析,需要让CEO对产品所切入的市场判断更准确,让市场推广人员精细化评估渠道质量,让产品设计人员准确评估用户行为路径转化、产品改版优良、某一新功能对产品的影响几何,让运营人员做精准营销并且评估营销结果等。

    所以,价值在哪儿呢?罗列4点

    1、自定义留存分析

    从前:我们通常会认定一个用户只要打开APP就算当天的一个活跃用户,今天新增的用户只要明天启动一次APP就认为是一个留存用户;

    现在:基于用户行为,我们可以做精细化留存评估。根据产品特性自定义用户留存,比如一个阅读类产品,用户打开APP后有没有去浏览或是查看一篇文章,我们可以把今天来了查看了至少一篇文章的用户算作今天的一个活跃;

    意义:留存是反映任何一款产品健康度的高级指标,无论是运营好坏、产品功能设计如何,最终都可以通过留存衡量整体的情况,贴合产品业务本身去衡量留存,精细化评估产品健康度,让留存数据更有价值和指导意义。

    2、精细化渠道质量评估

    从前:流量时代,评估渠道带来了多少访问人数,注册人数。

    现在:人口红利期已过,产品推广渠道在增多,产品越来越垂直,加上同质化竞争直接导致获客成本变高,无论从市场执行人员的角度还是公司角度,都在评估ROI,除了看流量,更需要看质量。如何评估质量,需要基于用户行为并且贴合业务去评估,一款理财产品,通过不同渠道带来的用户,真正查看了理财产品详情的有多少,真正投资成功的又有多少,哪个渠道用户又有邀请行为,最后留存最高的是哪个渠道,再结合渠道投入,计算ROI。

    意义:降低渠道成本,提升渠道转化。

    3、产品分析(路径转化/漏斗分析、找到产品改进关键点、找到促进核心转化的相关因素、Aha moment等)

    路径转化/漏斗分析:关注核心转化,比如注册转化、购买转化,从而优化流失节点,优化行为路径设计;

    找到产品改进关键点:用数据量化产品核心功能,让产品迭代排期更科学,部门配合更高效;

    找到促进核心转化的相关因素:挖掘促进用户触发核心行为的关键行为,比如可促进用户实现购买的某些因素,找到相关行为做优化或运营激励;

    Aha moment(惊艳一刻):快速执行,超出用户预期,让产品指数级增长。

    4、精准营销(用户分群、用户分层、活动质量评估)

    从前:面向所有用户或者基于用户属性维度做营销、做服务。属性包括:注册账号、手机号、性别、年龄、地域、积分和一些标签。

    现在:属性+行为,无限接近真实用户。通过用户点击查看商品详情、搜索行为、点击关注某款理财产品的关注按钮、购买了个东西等等这些行为以及行为触发的人、时间、频次知道用户最近在关注什么、对哪一类商品感兴趣、对哪一类文章感兴趣、哪种理财偏好。

    意义:用行为维度和属性维度共同去定位用户在产品的生命周期以及真实生活场景中的角色。营销更精准,用户体验更佳。

    以上4点,每一点都可以再展开来说,说价值、说方法、说案例,篇幅有限,日子还长,慢慢聊~


    本文作者:诸葛io 韩重明

    来源:51CTO

    展开全文
  • 谢邀,首先要抱歉一下我的回答给不了你一个具体的数值,原因下面会说,但如果你按着方法做的话自己...“一般网站转化率多少正常的”分析这个问题时,首先我们需要知道这个转化率代表着,为什么要关心这个数据、它...

    谢邀,首先要抱歉一下我的回答给不了你一个具体的数值,原因下面会说,但如果你按着方法做的话自己是可以算出来的。

    回归正题:

    首先说教一下,很多事情我们都不能孤立的去看它,尤其是涉及到数据方面的问题更不能孤立的去根据某一个数值就去解答什么,数据是会骗人的,所以一定要把前置条件先设置好,这样讨论才有意义。

    “一般网站转化率多少是正常的”分析这个问题时,首先我们需要知道这个转化率代表着,为什么要关心这个数据、它最终的目的是什么,你的目的是什么?

    拿我们之前做的这个项目来举例吧,这样可能更直观一点:

    我们之前做过一个关于婚纱摄影的O2O项目,定位是:婚纱摄影平台。

    我们的优势:1.价格低(相对传统的影楼拍婚纱);

    2.拍的好;

    3.可以根据自己的故事拍摄属于自己的婚纱照(这里是对比传统影楼流水线化拍摄而言的);

    说这些只是想说明我们这个项目是一个全新的项目、一个颠覆传统的影楼的项目,一个之前没有人做过的项目。

    很巧的是我们在刚推广这个项目的时候也遇到类似的问题,我们当时的情况时,网站刚上线需要去做推广。

    推广的目的:1.告诉用户,hi,这边有一个好玩的且牛B的拍婚纱的地方噢,要想拍婚纱照都来找我们吧;

    2.想通过来的用户检验网站整体的路径是否是流畅,有没有哪些环节是卡到用户;

    于是我们就在各大渠道投放,一段时间之后用户来、订单来了,问题也来了。

    当时的情况时,因为网站上线一段时间之后准备拿A轮,但拿A轮需要不错的数据给投资人看。

    投资人需要确定:1.你这个网站整体的流程是通的;

    2.你获得用户的成本是低于传统影楼的;

    3.你的模式是可以复制的;

    然后我们的问题就来了,什么叫TM不错的数据呢?什么又叫做网站整体的流程是跑通的呢?

    最后我们归结出的以下三个问题:1.网站的转化率多少是正常的呢?

    2.一个渠道带来多少UV是正常的呢?

    3.我们网站流量保持在多大的量网站就算是存活了呢?

    一度找不到答案,到处问人,后来是和一位做数据分析的朋友聊天时说到这事,他就问你们推广的预算是多少,我当时想都没想就来了一句:

    我们没有预算,我们的预算就是越少越好。

    然后就这个问题我们争执起来了,后来就不了了知但我一直在想为什么他一直说预算很重要的事;

    后来我苦思冥想之下终于得出了结论,也找到那三个问题的答案了;1.网站的转化率多少是正常的呢?

    2.一个渠道带来多少UV是正常的呢?

    3.我们网站流量保持在多大的量网站就算是存活了呢?

    这三个问题,看似不难就是一个数据的问题但是你去问100个人可能会有100个答案,我们当时也是一直陷于问题本身中,如果以目的为导向跳出来看的话,这三个问题都是为了回答:

    我们的商业模式是可行的,我们的模式就是比传统影楼的模式好。

    如果退到这个层面上再看的话,何为一个商业模式比另一模式好?

    撇开那些给用户带来的价值更大、体验更好什么的不谈,最简单的公式:

    同等条件下获取用户的成本低的,光这一点就够了;

    对于我们来说就是获取用户的成本要低于传统影楼,那到底低到什么样的数值对是合适的呢?如,现在传统影楼获得用户的成本是1000,那我们是900?800?还是700呢?这个数值如何得出。

    如果要得出这个数据,就需要知道获得用户成本的高与低意味着什么,给个公式吧!

    用户实际拍婚纱照的费用 〉拍婚纱照的成本;

    拍婚纱照的成本构成=摄影师团队费用(化妆师、灯光师、助理)+后期产品费用(相框、相册、桌摆等)+后期修片人员的费用+获取单个人员的成本+其他服务人员的费用;

    因为我们是互联网模式并且是摄影师入驻模式,所以这里的成本没有加房租的费用与人员的费用(这个不展开说)。

    从这个公式中就能得出获取单个人员成本的费用大概是多少,或者说你就能得出在现有行业获得用户成本的基础上你们准备获得一个用户成本上限是多少;

    只要确定了获取一个用户成本的费用之后,回答上面的三个问题就好办了,因为:

    获取用户成本费 = 推广的投入费用 /总的订单量(总的订单量 = 网站总的UV * 网站的转化率);

    这里网站的转化率虽然是一个变量,但是它着随着网站的成熟是趋于一个恒量值的,当然如果大家觉得这样说不靠谱,那可以再乘以一个标准方差;

    那么这个公式就变成了:

    获取用户成本的费用是固定的了,网站的转化率也是固定的了(当然这里都是相对固定,不要抠字眼);剩下的变量就是推广的费用和网站总的UV了;

    即获取用户成本费(C)=推广的投信费用(X)/ 网站总的UV(X)* 网站的转化率(C);

    那下面的问题就筛选渠道了,筛选每个渠道带用户的能力与用户的质量了,如;

    百度搜索投 10000元 带UV 3000 ;微博投 5000 带UV 700 ;微信什么什么。。

    虽然这些数据都是根据各种因素会变化的,但是只要你数据多了,就会对于网站的总的UV来说,它们的占比是不会变化的;对于每个渠道来说它们也是一个恒定的值的,当然会有季节性变化。。但基本上都是+-于某一个值之间,了解统计学的同学都知道这是统计学中的常规形象了;

    那么现在答案就出来了,你拿你们现在渠道的投入费用除以总的订单量看一下你们获取一个用户的成本的成本是多少,如果这个成本是你们能接受的那你们的网站的转化率和渠道带UV的能力就是可以接受的;

    如果你的成本太高,你们接受不了,那你们就要想办法去优化这两个部分:如果有强渠道能力的话那就优化渠道带用户的量,如果渠道带用户的能力不强的话那就优化网站的转化率,两者一起优化当然是更好。。

    所以结论就是,一个网站的转化率是12%或者是30%单看这些数据一点意义都没有,因为你不知道它的投入费用是多少。。

    渠道也是一样,单看它带多少UV也不能说明,需要综合去分析这些数据;

    最后,数据是会骗人的,分析的时候一定要综合去分析。。

    展开全文
  •  我们在前面提到过目前智能技术卡采用的住处传输协议一般T=0协议和T=1协议,如果说这两类协议的COS在实现功能上有什么不同的话,主要就是在传送管理器的实现上有不同。不过,无论采用T=0协议还T=1协议,智能卡...
  • 图1一共射的基本放大电路,一般我们对放大路要掌握些什么内容?(1)分析电路中各元件的作用; (2)解放大电路的放大原理; (3)能分析计算电路的静态工作点; (4)理解静态工作点的设置目的和方法。 以上...
  • 3D人脸重建——PRNet网络输出的理解

    千次阅读 热门讨论 2020-02-06 23:13:06
    前言 之前有款换脸软件不是叫ZAO么...什么是uv贴图? PRNet论文 PRNet代码 本博客主要对PRNet的输出进行理解。 理论简介 这篇博客比较系统的介绍了3D人脸重建的方法,就我个人浅显的理解,分为两个流派:1.通过算...

    前言

    之前有款换脸软件不是叫ZAO么,分析了一下,它的实现原理绝对是3D人脸重建,而非deepfake方法,找了一篇3D重建的论文和源码看看。这里对源码中的部分函数做了自己的理解和改写。

    国际惯例,参考博客:

    什么是uv贴图?

    PRNet论文

    PRNet代码

    本博客主要是对PRNet的输出进行理解。

    理论简介

    这篇博客比较系统的介绍了3D人脸重建的方法,就我个人浅显的理解,分为两个流派:1.通过算法估算3DMM的参数,3DMM的思想是有一个平均脸,基于这个平均脸进行变形,就能得到任意的人脸,算法就需要计算这个变形所需要的参数;2. 直接摆脱平均脸的约束,直接使用神经网络去估算人脸的3D参数。

    PRNet就是属于第二种流派,输入一张图片,直接使用神经网络输出一张称为UV position map的UV位置映射图。本博客就是为了对这个输出进行充分理解。先简短说一下,他的维度是(256,256,3)(256,256,3)的三维矩阵,前面两个维度上输出的纹理图的维度,最后一个维度表示纹理图每个像素在3D空间中的位置信息。

    任何的3D人脸重建,包括3DMM,都需要得到顶点图和纹理图,这个在图形学里面很常见,比如我们看到的游戏角色就包括骨骼信息和纹理信息。

    代码理解

    首先引入必要的库:

    import numpy as np
    import os
    from skimage.transform import estimate_transform, warp
    import cv2
    from predictor import PosPrediction
    import matplotlib.pyplot as plt
    

    这里有个额外的predictor库,是PRNet的网络结构,直接去这里下载。

    还有一个文件夹需要下载,戳这里,这里面定义了UV图的人脸关键点信息uv_kpt_ind,预定义的人脸顶点信息face_ind,三角网格信息triangles。下面会分析他俩的作用。

    人脸裁剪

    因为源码使用dlib检测人脸关键点,其实目的是找到人脸框,然后裁剪人脸。由于在Mac上安装dlib有点难度,而前面的换脸博客刚好玩过用opencv检测人脸关键点。检测人脸框的代码如下:

    ## 预检测人脸框或者关键点,目的是裁剪人脸
    cas = cv2.CascadeClassifier('./Data/cv-data/haarcascade_frontalface_alt2.xml')
    img = plt.imread('./images/zly.jpg')
    img_gray= cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    faces = cas.detectMultiScale(img_gray,2,3,0,(30,30))
    bbox = np.array([faces[0,0],faces[0,1],faces[0,0]+faces[0,2],faces[0,1]+faces[0,3]])
    

    可视化看看:

    plt.imshow(cv2.rectangle(img.copy(),(bbox[0],bbox[1]),(bbox[2],bbox[3]),(0,255,0),2))
    plt.axis('off')
    

    在这里插入图片描述

    裁剪人脸

    left = bbox[0]; top = bbox[1]; right = bbox[2]; bottom = bbox[3]
    old_size = (right - left + bottom - top)/2
    center = np.array([right - (right - left) / 2.0, bottom - (bottom - top) / 2.0])
    size = int(old_size*1.6)
    
    src_pts = np.array([[center[0]-size/2, center[1]-size/2], 
                        [center[0] - size/2, center[1]+size/2], 
                        [center[0]+size/2, center[1]-size/2]])
    DST_PTS = np.array([[0,0], [0,255], [255, 0]]) #图像大小256*256
    tform = estimate_transform('similarity', src_pts, DST_PTS)
    
    img = img/255.
    cropped_img = warp(img, tform.inverse, output_shape=(256, 256))
    

    可视化看看

    plt.imshow(cropped_img)
    plt.axis('off')
    

    在这里插入图片描述

    网络推断

    载入网络结构

    pos_predictor = PosPrediction(256, 256)
    pos_predictor.restore('./Data/net-data/256_256_resfcn256_weight')
    

    直接把裁剪后的图片输入到网络中,推导UV位置映射图

    cropped_pos = pos_predictor.predict(cropped_img) #网络推断
    

    因为这个结果是裁剪过的图的重建,所以在重新调整一下,缩放到之前的图大小:

    #将裁剪图的结果重新调整
    cropped_vertices = np.reshape(cropped_pos, [-1, 3]).T
    z = cropped_vertices[2,:].copy()/tform.params[0,0]
    cropped_vertices[2,:] = 1
    vertices = np.dot(np.linalg.inv(tform.params), cropped_vertices)
    vertices = np.vstack((vertices[:2,:], z))
    pos = np.reshape(vertices.T, [256, 256, 3])
    

    这里不太好可视化,只看看这个深度信息,也就是第三个通道:

    plt.imshow(pos[...,2],cmap='gray')
    plt.axis('off')
    

    在这里插入图片描述

    很明显,这个是能看出来脸部的不同位置,颜色深浅不同,鼻子的高度最高,所以比较白一点。

    人脸关键点

    需要注意的是,论文所生成的所有人脸的texture都符合uv_face.png所有器官位置,比如鼻子一定会在texutre的鼻子那里,不管你是侧脸还是正脸,uv_kpt_ind.txt这里面定义的就是texture的人脸关键点位置,是固定的。

    uv_kpt_ind = np.loadtxt('./Data/uv-data/uv_kpt_ind.txt').astype(np.int32)
    uv_face = plt.imread('./Data/uv-data/uv_face.png')
    plt.imshow(draw_kps(uv_face,uv_kpt_ind.T))
    plt.axis('off')
    

    在这里插入图片描述

    记住,所有的人脸texture都满足这个布局,所有器官一定出现在上图的对应位置。至于怎么获取texture,后面会介绍。

    前面说了,网络输出的UV位置映射图,前面两个(256,256)(256,256)是texture的位置,最后一个维度上texutre在3D图上的位置。所以根据uv_kpt_ind和UV位置映射图能找到人脸图(非纹理图)上的关键点

    def draw_kps(img,kps,point_size=2):
        img = np.array(img*255,np.uint8)
        for i in range(kps.shape[0]):
            cv2.circle(img,(int(kps[i,0]),int(kps[i,1])),point_size,(0,255,0),-1)
        return img
    face_kps = pos[uv_kpt_ind[1,:],uv_kpt_ind[0,:],:]
    

    可视化看看

    plt.imshow(draw_kps(img.copy(),face_kps))
    plt.axis('off')
    

    在这里插入图片描述

    人脸点云

    可视化了人脸关键点,顺带将face_ind里面定义的所有顶点全可视化一下。

    直接从face_ind读到所有需要的顶点信息

    face_ind = np.loadtxt('./Data/uv-data/face_ind.txt').astype(np.int32)
    all_vertices = np.reshape(pos, [256*256, -1])
    vertices = all_vertices[face_ind, :]
    

    根据texture上定义的位置信息,可视化原人脸图信息:

    plt.figure(figsize=(8,8))
    plt.imshow(draw_kps(img.copy(),vertices[:,:2],1))
    plt.axis('off')
    

    在这里插入图片描述

    顺便也可以看看3D图

    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure()
    ax1 = plt.axes(projection='3d')
    ax1.scatter3D(vertices[:,2],vertices[:,0],vertices[:,1], cmap='Blues')  #绘制散点图
    ax1.set_xlabel('X Label') 
    ax1.set_ylabel('Y Label') 
    ax1.set_zlabel('Z Label') 
    

    在这里插入图片描述

    都糊一起了,但是能大概看出来人脸模型。

    提取纹理图

    上面说了,所有的人脸经过网络得到的texture都满足uv_face.png中的器官位置。

    怎么根据UV位置映射图获取texture呢?一个函数remap:

    texture = cv2.remap(img, pos[:,:,:2].astype(np.float32), None, interpolation=cv2.INTER_NEAREST, borderMode=cv2.BORDER_CONSTANT,borderValue=(0))
    

    可视化texture和固定的uv_kpt_ind看看:

    plt.imshow(draw_kps(texture,uv_kpt_ind.T))
    plt.axis('off')
    

    在这里插入图片描述

    因为使用的图片上赵丽颖的正脸,所以侧面的texture不清晰,但是正脸的五官位置的确如所料,在固定的位置上出现。

    渲染纹理图/3D人脸

    能用一句话把纹理图获取到,那么我们就能根据texture和顶点位置将纹理图重建为3D图。原理就是利用triangles.txt定义的网格信息,获取每个网格的颜色,再把颜色贴到对应的3D位置。

    首先从texture中找到每个顶点的肤色:

    #找到每个三角形每个顶点的肤色
    triangles = np.loadtxt('./Data/uv-data/triangles.txt').astype(np.int32)
    all_colors = np.reshape(texture, [256*256, -1])
    colors = all_colors[face_ind, :]
    
    print(vertices.shape) # texutre每个像素对应的3D坐标
    print(triangles.shape) #每个三角网格对应的像素索引
    print(colors.shape) #每个三角形的颜色
    '''
    (43867, 3)
    (86906, 3)
    (43867, 3)
    '''
    

    获取每个三角网格的3D位置和贴图颜色:

    #获取三角形每个顶点的depth,平均值作为三角形高度
    tri_depth = (vertices[triangles[:,0],2 ] + vertices[triangles[:,1],2] + vertices[triangles[:,2],2])/3. 
    #获取三角形每个顶点的color,平均值作为三角形颜色
    tri_tex = (colors[triangles[:,0] ,:] + colors[triangles[:,1],:] + colors[triangles[:,2],:])/3.
    tri_tex = tri_tex*255
    

    接下来对每个三角网格进行贴图,这里和源码不同,我用了opencv的画图函数来填充三角网格的颜色

    img_3D = np.zeros_like(img,dtype=np.uint8)
    for i in range(triangles.shape[0]):
        cnt = np.array([(vertices[triangles[i,0],0],vertices[triangles[i,0],1]),
               (vertices[triangles[i,1],0],vertices[triangles[i,1],1]),
               (vertices[triangles[i,2],0],vertices[triangles[i,2],1])],dtype=np.int32)
        img_3D = cv2.drawContours(img_3D,[cnt],0,tri_tex[i],-1)
    plt.imshow(img_3D/255.0)
    

    在这里插入图片描述

    旋转人脸

    既然我们获取的是3D人脸,当然可以对他进行旋转操作咯,可以绕x、y、z三个坐标轴分别旋转,原理就是旋转所有顶点的定义的3D信息,也就是UV位置映射的最后一个维度定义的坐标。

    通过旋转角度计算旋转矩阵的方法是:

    # 找到旋转矩阵,参考https://github.com/YadiraF/face3d
    def angle2matrix(angles):
        x, y, z = np.deg2rad(angles[0]), np.deg2rad(angles[1]), np.deg2rad(angles[2])
        # x
        Rx=np.array([[1,              0,                0],
                     [0, np.math.cos(x),  -np.math.sin(x)],
                     [0, np.math.sin(x),   np.math.cos(x)]])
        # y
        Ry=np.array([[ np.math.cos(y), 0, np.math.sin(y)],
                     [              0, 1,              0],
                     [-np.math.sin(y), 0, np.math.cos(y)]])
        # z
        Rz=np.array([[np.math.cos(z), -np.math.sin(z), 0],
                     [np.math.sin(z),  np.math.cos(z), 0],
                     [             0,               0, 1]])
    
        R=Rz.dot(Ry.dot(Rx))
        return R.astype(np.float32)
    

    绕垂直方向旋转30度,调用方法就是

    trans_mat = angle2matrix((0,30,0))
    

    旋转顶点位置

    # 旋转坐标
    rotated_vertices = vertices.dot(trans_mat.T)
    

    因为是绕远点旋转,搞不好会旋转出去,所以要矫正一下位置

    # 把图像拉到画布上
    ori_x = np.min(vertices[:,0])
    ori_y = np.min(vertices[:,1])
    rot_x = np.min(rotated_vertices[:,0])
    rot_y = np.min(rotated_vertices[:,1])
    shift_x = ori_x-rot_x
    shift_y = ori_y-rot_y
    rotated_vertices[:,0]=rotated_vertices[:,0]+shift_x
    rotated_vertices[:,1]=rotated_vertices[:,1]+shift_y
    

    老样子把texture可视化:

    img_3D = np.zeros_like(img,dtype=np.uint8)
    mask = np.zeros_like(img,dtype=np.uint8)
    fill_area=0
    for i in range(triangles.shape[0]):
        cnt = np.array([(rotated_vertices[triangles[i,0],0],rotated_vertices[triangles[i,0],1]),
               (rotated_vertices[triangles[i,1],0],rotated_vertices[triangles[i,1],1]),
               (rotated_vertices[triangles[i,2],0],rotated_vertices[triangles[i,2],1])],dtype=np.int32)
        mask = cv2.drawContours(mask,[cnt],0,(255,255,255),-1)
        if(np.sum(mask[...,0])>fill_area):
            fill_area = np.sum(mask[...,0])
            img_3D = cv2.drawContours(img_3D,[cnt],0,tri_tex[i],-1)
    plt.imshow(img_3D)
    

    在这里插入图片描述

    从视觉效果上的确是旋转过了。

    关于换脸的方法、流程和代码可以关注文末的公众号,这里贴一下效果图
    在这里插入图片描述

    后记

    本博客主要是验证了PRNet网络输出的各种信息代表什么意思。

    后面的研究可能会分为:

    • 网络结构的研究
    • 换脸

    当然,博客源码

    链接: https://pan.baidu.com/s/18z2b6Sut6qFecOpGqNc8YA

    提取码: ad77

    对博客内容有兴趣的,可以关注下面公众号,公众号与csdn博客会同步更新自己的学习内容,一个方便电脑看,一个方便手机看
    在这里插入图片描述

    展开全文
  • 常见问题YUV是什么?YUV,是一种颜色编码方法。常使用在各个视频处理组件中。YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。YUV是编译true-color颜色空间(colorspace)的种类,Y'UV,YUV,...

    yuv viewer是yuv数据查看器,能够分析yuv数据,查看H264、H265文件解出来的数据,资源内含一个用于测试的yuv文件。

    常见问题

    YUV是什么?

    YUV,是一种颜色编码方法。常使用在各个视频处理组件中。YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。

    YUV是编译true-color颜色空间(colorspace)的种类,Y'UV,YUV,YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma)。

    Y′UV,YUV,YCbCr,YPbPr所指涉的范围,常有混淆或重叠的情况。从历史的演变来说,其中YUV和Y'UV通常用来编码电视的模拟信号,而YCbCr则是用来描述数字的视频信号,适合视频与图片压缩以及传输,例如MPEG、JPEG。但在现今,YUV通常已经在电脑系统上广泛使用。

    Y'代表明亮度(luma;brightness)而U与V存储色度(色讯;chrominance;color)部分;亮度(luminance)记作Y,而Y'的prime符号记作伽玛校正。

    YUVFormats分成两个格式:

    紧缩格式(packedformats):将Y、U、V值存储成MacroPixels数组,和RGB的存放方式类似。

    平面格式(planarformats):将Y、U、V的三个分量分别存放在不同的矩阵中。

    紧缩格式(packedformat)中的YUV是混合在一起的,对于YUV4:4:4格式而言,用紧缩格式很合适的,因此就有了UYVY、YUYV等。平面格式(planarformats)是指每Y分量,U分量和V分量都是以独立的平面组织的,也就是说所有的U分量必须在Y分量后面,而V分量在所有的U分量后面,此一格式适用于采样(subsample)。平面格式(planarformat)有I420(4:2:0)、YV12、IYUV等。

    展开全文
  • 统计代码第三方数据统计平台提供的嵌入您网站的一串代码字符,嵌入后通过相应技术能够统计您网站的访问量(PV)、访问用户(UV)等关键数据,帮助您分析网站运营效果,调整运营策略。 二.网站站长统计配置方法 CNZZ...
  • 2019数据运营思维导图

    2019-03-29 21:34:09
    每小时注册用户数 用户在什么节点来的多,需要重点监控该时间段app运行 用户画像 概述 是什么,有什么用,怎么做 构建用户画像的核心工作即是给用户贴“标签”,而标签是通过对用户信息分析而来的高度精炼的特征标识...
  • 数据运营思维导图

    2018-04-26 14:24:22
    是什么,有什么用,怎么做 构建用户画像的核心工作即是给用户贴“标签”,而标签是通过对用户信息分析而来的高度精炼的特征标识 作用 精准营销 分析产品潜在用户,针对特定群体利用短信、邮件等方式进行营销 ...
  • 问题是什么规模。 对于自旋1,无法通过任何有限的相互作用调高来提高强耦合尺度(失去扰动的统一性),而对于自旋2,存在威尔逊系数的特殊调适,可以提高该尺度(并享有许多 特殊属性,例如无鬼影)。 在这里,我们...
  • 想象一下自己到超市购物的情况,我们购买某些商品的次数肯定会超过总次数的1%,这些商品可能牛奶、面包、可口可乐或百事可乐什么的。我们甚至相信,虽然我们不购买尿布,但是会有1%的顾客会购买尿布。然而,货架上...
  • 想象一下自己到超市购物的情况,我们购买某些商品的次数肯定会超过总次数的1%,这些商品可能牛奶、面包、可口可乐或百事可乐什么的。我们甚至相信,虽然我们不购买尿布,但是会有1%的顾客会购买尿布。然而,货架上...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

uv是什么分析方法