End-to-end 3D face reconstruction with deep neural networks

Abstract 该文不采用利用rgb图和初始化3D面部表情渲染的方式, 是端对端的, 可以避免复杂的3D渲染.我们从两个方面综合DNN,利用多任务损失函数和融合DNN来改善面部表情重构;利用多任务损失函数, 可以将3D人脸重构分为3D人脸重构和3D人脸表情重构两个部分. 由于中性面部形状是类固定的,所以用网络的高层特征表示,而面部表情用低层或中层网络层特征表示。 Method 用一系列的形状和融合形状(blendshape)去表示人脸的3D形状. S = \bar{S} + U_{d} * \alpha_{d} + U_{e} * \alpha_{e},S=S¯+Ud​∗αd​+Ue​∗αe​, 其中S是目标脸, \bar{S}S¯是平均人脸形状, U_{d}Ud​是中性人脸的3D扫描的主成分, \alpha_{d}αd​是识别参数向量(identity parameter vector); U_{e}Ue​ 是有表情的人脸和中性人脸的偏移(offset)所组成的主成分, \alpha_{e}αe​是相对应 的表情参数向量. Network architecture Traning 原始输入的图片经过一个人脸检测器检测出人脸部分, 裁剪的方式为将扩大原始检测框的0.25倍和选择最大的边来裁剪并将图片缩放成180*180.网络的输出包括 identity parameter vector 和 expression parameter vector. Traning data 我们提出用真实的2D数据来初始化网络, 用合成的2D数据来微调络. 我们利用跟Richardson^{[1]}Richardson[1]相似的策略来产生合成的人脸数据来训练我们的神经网络.对于BFM 3D模型我们用[2]提供的形状基和[3, 4]提供的融合形状基. 对于AFM模型, 我们从FRGC2和BU-3DFE数据库中选择203个中性脸用[5]提出的方法去建立形状基, 为了简单起见, 我们不建立blendshape. 总共我们利用BFM和AFM合成了10000张不同的3D人脸. 对于每个人脸我们利用不同的面部姿势, 光照和面部表情合成25张2D图片. Cost functions 损失函数选择训练得到的3D脸和 ground truth 之间的差距. E_{c} = ||U_{c} * \hat{\alpha}_{c} – U_{c} * \alpha_{c}||_{2}^{2}Ec​=∣∣Uc​∗α^c​−Uc​∗αc​∣∣22​ 这里的c \in \{e, d\}c∈{e,d}.

至暗时刻——记某项目的悲惨经历

原文链接: https://segmentfault.com/a/1190000015409500 最近做了个项目,上线之后依次发现了三个线上bug,简直是我入职以来前所未有之事。感觉真的要被开除了。在此还原下整个项目的历程,希望能记录项目管理中失误的点,从而不再次出现错误。 1. 项目背景 1.1 参与者 1.2 项目时间线 4月13日 项目需求预讨论,定下了插件合作方A开发UI渲染,我方提供数据支持和上报的逻辑。 4月17日 决定与广告商C方的应用逻辑,定下了通过referer确定广告来源的方案。 5月25日 A方人员变动,广告被无限期延期,A方同时提出改版广告渲染逻辑,由我方提供广告组件库,全面接盘广告渲染的方案。 5月30日 我方开发完成。A方临时有更高优先级需求,没有时间排期,联调时间被一拖再拖。 6月1日 C方接入联调,发现C方服务器是http链接,referer方案被迫改为url参数方案。C方一直想跑通全链路联调,但是因为广告后台测试服务器不支持外网访问,测试链路一直不通,必须要用截单方式。双方交流困难。 6月7日 AB方初步联调完成,广告初步展示,但是A方还要改造广告相关插入逻辑。另外C方继续沟通缓慢,BC方联调完成,但是BD双方还要联调 6月11日 A方还是没有排期,计划6月15-20日联调 6月15日 AB方联调完成,C方还是开发中 6月20日 BD双方联调完成,约定6月21日上线 6月21日 C方发现在某些机型上返回文案过长会被隐藏,临时修改,导致上线时间改为6月25日 6月25日 A方拖到晚上才上线,而且同时上线了手Q 70%-90%灰度和微信应用直达两个终端两个需求,B方没有意识到这两个需求会产生冲突,上线后手Q流量暴降,线上回退 6月26日 B方紧急修复了手Q逻辑,A方重新上线,上线后发现广告无法点击,经查是CGI跨域,再次回退。 6月27日 发现线上有IOS低版本广告图片展示不出来,经查是css兼容问题,再次上线。 2 项目中出现的问题 产品侧: 多方合作时间点没有把控好,持续时间太长,拖掉了所有buff时间 开发侧: 没有进行全链路测试就匆忙上线了 项目的质量永远是第一位的,上线之后回退还是赶不上时间点。要尽量进行全链路测试,充分明确全链路测试的必要性。 没有进行整体的谨慎的思考,未了解到多端冲突的问题 项目开发前就要仔细考虑会影响的情况,尽管这次手Q和微信的冲突更多的是需要A方的同学提醒。但是最好也能考虑到 项目中的问题没有引起警醒 曾考虑到会有跨域问题,但是没有去确认,也没有及时提醒测试同学注意。而测试同学因为要截单的缘故,在fiddler里设置了跨域头,略过了这个问题。 H5前端的几个经典坑:跨域,缓存和兼容性 把fidder截单加上判断条件,防止其他跨域被忽略。 static function OnBeforeResponse(oSession: Session) { if (m_Hide304s && oSession.responseCode == 304) { oSession["ui-hide"] = "true"; } // 添加跨域条件 if (oSession.host.Contains("news.ssp.qq.com")) { oSession.

国外14亿泄露数据下载及还原

国外14亿泄露数据下载及还原 simeon 2018年6月10日freebuf发布了篇文章《14亿邮箱泄露密码明文信息查询网站惊现网络》(链接地址:http://www.freebuf.com/news/174410.html),声称其泄露的数据可以通过暗网网站(http://dumpedlqezarfife.onion.lu/)进行查询,后续通过网络获取其泄露文件的下载地址,历经千辛万苦,终于将数据下载到本地,通过研究,将其txt文件进行还原处理,并对其进行无效数据处理,去除空密码等操作。 1.1.1数据下载及分析 1.数据下载地址 (1)二进制未压缩41G磁力下载链接地址 magnet:?xt=urn:btih:7ffbcd8cee06aba2ce6561688cf68ce2addca0a3&dn=BreachCompilation&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Fglotorrents.pw%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337 (2)二进制压缩11G磁力下载链接地址 magnet:?xt=urn:btih:09250e1953e5a7fefeaa6206e81d02e53b5b374a&dn=BreachCompilation.tar.bz2&tr=udp://tracker.leechers-paradise.org:6969/announce&tr=udp://tracker.opentrackr.org:1337/announce&tr=udp://tracker.pirateparty.gr:6969&tr=udp://tracker.coppersurfer.tk:6969/announce&tr=udp://tracker.zer0day.to:1337/announce 2.数据库内容 该集合数据库中包含从Bitcoin、Pastebin、LinkedIn、MySpace、Netflix、YouPorn、Last.FM、Zoosk、Badoo、RedBox以及游戏平台(Minecraft和Runescape等)泄漏的数据,以及Anti Public,Exploit.in泄漏的凭证列表 1.1.2数据分析及处理 1.对下载文件进行解压 对breachcompilation.txt.7z进行解压,解压后数据在data目录,它是按照字母进行排序的,在解压根目录存在一些脚本文件,如图1所示,原始文件解压后45G,后面我又对该文件进行压缩处理,节约空间。 图1解压文件 2.使用cat生成文件 使用cat * >alla.txt类似命令,对每一个文件夹进行处理,然后生成多个txt文件。 3.文件格式 通过notepad对该密码文件进行查看,发现数据为邮箱帐号及密码,使用“:”分隔数据字段。 4.创建数据库及表 (1)在mysql中创建数据库14yidata (2)创建数据库表 alla表设置两个字段,email及password。 1.1.3数据库导入处理 1.将txt文件导入到数据库 (1)对a开头的数据进行处理 通过cat对a文件夹进行处理,共生成alla.txt、alla-l.txt及alla-n.txt三个文件夹,其中alla-l.txt及alla-n.txt是因为在a文件夹下存在子文件夹l及n。 (2)执行导入 在Navicat for MySQL中分别执行以下语句进行导入,如图2所示,导入成功后,会显示受影响的行,该数据表示导入了多少条数据。 LOAD DATA LOCAL INFILE “d:/ok/alla.txt” INTO TABLE alla FIELDS TERMINATED BY ‘:’; LOAD DATA LOCAL INFILE “d:/ok/alla-l.txt” INTO TABLE alla FIELDS TERMINATED BY ‘:’; LOAD DATA LOCAL INFILE “d:/ok/alla-n.txt” INTO TABLE alla FIELDS TERMINATED BY ‘:’;

玩转黑苹果-适用机型ACER宏碁 swift3 SF314-52G

机子装上使用了一段时间,觉得各方面都很完美,分享给想要体验苹果mac系统乐趣的果粉们。先上张效果图。 机型是宏碁的 SF314-52G-58ED,第八代CPU,类似的配置都可以试试。先来说说系统的不足: 1、独立显卡、WIFI不能使用,想要连WIFI只能使用外置USB无线网卡或自己更换网卡。 2、USB3.0口左边向下第2个不兼容USB2.0设备。 3、声卡支持外放,但耳机孔不能用,网上有自制声卡驱动的教程,不想折腾了,想要的可以自己写一个。 4、触控板支持的手势很少,没有windows上的很多功能。需要将BIOS中Main栏下的TouchPad标签设置为Basic。 EFI百度云链接: https://pan.baidu.com/s/18huGiBVCi8uagndoWyUxNA 再分享个mac 10.13.3系统的dmg镜像,安装后可直接升级到10.13.5: https://pan.baidu.com/s/1s5-8E5NfzbdHwG73dQGt3Q 安装步骤: 1、使用transmac软件将dmg文件写入到U盘,挂载U盘EFI分区,将EFI文件夹复制到分区内。 2、关机,设置电脑为上一步骤的U盘启动 3、根据提示引导安装,安装时需要格式化整个硬盘,请提前备份好重要数据。 以上步骤如果不清楚自行百度找答案,或在评论区提问。 ——————————————————————EFI 更新2018.08.15———————————————————————— EFI 文件带无线网卡 BCM94352驱动(需自己更换 BCM94352无线网卡): https://pan.baidu.com/s/1EfS7IvOWdinN-vhX5-5cFA 普通 EFI 文件: https://pan.baidu.com/s/1C0QR45Cr3rPxfZOJ9Sumuw 1、解决 USB 口不兼容 Usb2.0问题 2、使用更好的键盘触控板驱动ApplePS2SmartTouchPad.kext,支持更多手势。 3、带无线网卡 BCM94352驱动,需自己更换机内无线网卡,更换后 WIFI 和蓝牙完美。 —————————–EFI更新 2018.09.19——————————— 不带BCM94352驱动版: https://pan.baidu.com/s/1O4vGyXJPx0ErCf2_DdHohQ 1、解决电脑耳机口发出噪音

Silk Road 2 Loses Over $2.6 Million in Bitcoins in Alleged Hack

Dark market web site Silk Road 2 has told customers that all of their bitcoins are gone after a massive hack, in which at least 4,476 bitcoins (worth over $2.6m at current prices) are believed stolen. Organizers at the site are blaming the compromise on the transaction malleability attack in the news this week. “Our initial investigations indicate that a vendor exploited a recently discovered vulnerability in the Bitcoin protocol known as “transaction malleability” to repeatedly withdraw coins from our system until it was completely empty,” said a post from Defcon, one of the site’s moderators, on a forum, located on the Tor network.

【强化学习】DDPG(Deep Deterministic Policy Gradient)算法详解

http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html 引自Reinforcement Learning:An Introduction强化学习名著2018新编版 DPG论文http://www0.cs.ucl.ac.uk/staff/d.silver/web/Applications_files/deterministic-policy-gradients.pdf PolicyGradient论文https://www.ics.uci.edu/~dechter/courses/ics-295/winter-2018/papers/2000-nips12-sutton-mcallester-policy-gradient-methods-for-reinforcement-learning-with-function-approximation.pdf DDPG论文http://www0.cs.ucl.ac.uk/staff/d.silver/web/Applications_files/ddpg.pdf DQN论文http://web.cse.ohio-state.edu/~wang.7642/homepage/files/Peidong_Wang_DQN.pdf 【强化学习】DDPG(Deep Deterministic Policy Gradient)算法详解 之前我们在Actor-Critic上面提到过了DDPG,现在本篇详细讲解,因为Actor-Critic收敛慢的问题所以Deepmind 提出了 Actor Critic 升级版 Deep Deterministic Policy Gradient,后者融合了 DQN 的优势, 解决了收敛难的问题。 1、算法思想 DDPG我们可以拆开来看Deep Deterministic Policy Gradient Deep:首先Deep我们都知道,就是更深层次的网络结构,我们之前在DQN中使用两个网络与经验池的结构,在DDPG中就应用了这种思想。 PolicyGradient:顾名思义就是策略梯度算法,能够在连续的动作空间根据所学习到的策略(动作分布)随机筛选动作 Deterministic : 它的作用就是用来帮助Policy Gradient不让他随机选择,只输出一个动作值 随机性策略, ∑π(a|s)=1 ∑ π ( a | s ) = 1 策略输出的是动作的概率,使用正态分布对动作进行采样选择,即每个动作都有概率被选到;优点,将探索和改进集成到一个策略中;缺点,需要大量训练数据。 确定性策略, π(s)S→A π ( s ) S → A 策略输出即是动作;优点,需要采样的数据少,算法效率高;缺点,无法探索环境。然而因为我们引用了DQN的结构利用offPolicy采样,这样就解决了无法探索环境的问题 从DDPG网络整体上来说:他应用了 Actor-Critic 形式的, 所以也具备策略 Policy 的神经网络 和基于 价值 Value 的神经网络,因为引入了DQN的思想,每种神经网络我们都需要再细分为两个, Policy Gradient 这边,我们有估计网络和现实网络,估计网络用来输出实时的动作, 供 actor 在现实中实行,而现实网络则是用来更新价值网络系统的。再看另一侧价值网络, 我们也有现实网络和估计网络, 他们都在输出这个状态的价值, 而输入端却有不同, 状态现实网络这边会拿着从动作现实网络来的动作加上状态的观测值加以分析,而状态估计网络则是拿着当时 Actor 施加的动作当做输入。 DDPG 在连续动作空间的任务中效果优于DQN而且收敛速度更快,但是不适用于随机环境问题。 2、公式推导 再来啰唆一下前置公式 st

CSDN转发他人的博客的步骤

Author: LiChong0309 Label: Basis of Computer 快捷键 F12 ,找到Elements 找到有article_contents一行右击,选择copy,找到Copy outerHTML 3.打开CSDN的博客编辑器,复制 寻找article_contents的技巧 将鼠标方法其中一个div上,如果能包含全部内容,就说明其中包含了main,然后找到article标签,其中就会有article_content。 如果你是转发别人的blog,请在转发的时候标注为转发,尊重原创,尊重作者。

深度学习从看懂到看开(一)——————-Tensorflow的安装

Tensortflow 简介: TensorFlow是 谷歌基于DistBelief进行研发的第二代 人工智能 学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow可被用于 语音识别或 图像识别等多项机器学习和深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。 一:安装python3 本文的python版本都是python3的,python官方已经宣布在2020年全面停止对Python2的维护更新,所以我们要趁早熟悉并使用python3. 废话不多说,现在我们开始来在ubuntu下安装python3. 系统默认安装Python2 安装Python3的命令 sudo apt-get install python3.6 安装成功后在终端输入 python 如果出现如图所示即安装成功 二:安装anaconda anaconda指的是一个开源的 Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 [1] 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 515 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用 Miniconda这个较小的发行版(仅包含conda和 Python)。 安装了anaconda后可以不用再去网上找各种各样的科学技术包,直接调用anaconda的编译环境就好,方便以后我们使用tensorflow. 下载 官方下载地址: https://www.continuum.io/downloads 所有安装包地址: https://repo.continuum.io/archive/ 安装 安装较为简单,这里参考官方文档:https://docs.continuum.io/anaconda/install/linux.html 在终端中切换到你下载的anaconda文件目录下执行: bash +xxxxxxx(你所下载的anaconda版本).sh 根据提示输入回车 一直输入yes 然后一直回车,它会自动帮你加入到环境变量中和创建文件夹 当出现如下画面即安装完成: 验证annacoda是否安装完成 在终端中输入python出现如下即验证成功 三:安装tensorflow 直接在终端输入命令:pip3 install tensorflow (python3.x的版本,支持CPU) 等待安装jies 验证tensorflow是否安装成功 进入python命令下,测试tensorflow: import tensorflow as tf sess = tf.Session() hello=tf.constant(‘Hello,Tensorflow!’) print(sess.run(hello)) 出现: 即安装成功 四:Pycharm整合tensorflow环境 打开pycharm中的setting

上架应用后google map不显示

上架google play后,打开应用的地图页面,地图只有灰色和底部的Google字样。 以为是网络不好,可是检查了ss和网络,打开google maps也能正常显示。 可能是签名问题,但是又调试下,地图是可以正常显示的。蒙圈了。 调试的时候地图没问题,说明我签名配置了,密钥也是对的。上架后出问题了。 重新检查google play console,在版本管理的子菜单里有个应用签名的选项, 进入一看,google play app signning已启用。看了下详情,大概意思是google会移除你上传的app的签名, 用它生成的签名去重新签名。用第一次你上传app的签名作为验证签名,如果以后发的版本不是你第一次上传的签名,会延签失败。 app做了bugly升级,而bugly版本用的自己的签名上传的。 知道了这些就了解到我的问题了,我的问题是没把google生成的签名去加进google maps密钥管理里。 等我加入后,1分钟不到,再次进入地图界面,地图正常显示出来。 而以后发版也要多注意签名的问题,不要乱去改签名,不然bugly的升级和google play就对不上了。