这位胖友,你听说过“镜头恐惧”吗?
包括但不限于,总是尽力躲避镜头,即使拍照也往往表情尴尬,笑不出来。

那感觉,就是人家拍照是回眸一笑百媚生:

我一上相就是“我是谁”、“我在哪”、“我在干什么”灵魂三连。
现在各种算法技术这么发达,就不能我往镜头前一站,相机自动帮我微笑到位吗???

真别说,本老镜头恐惧症患者仔细查了查,发现这事儿还挺靠谱。
比如前面这张阮玲玉露齿而笑的照片,原片其实长这样:

嘴角这么一扬,老照片里的清冷美女,是不是就多了一些鲜活的妩媚温柔?
再看林徽因和她的表姐妹们,微笑加持,少女的天真本性就仿佛透过照片穿越了时代。

关键是,AI这一手微笑P图,着实是P得行云流水不着痕迹。
不仅嘴角上扬,连带苹果肌的变化也刻画到位,细节拉满。

此刻的我只想说:

不过说实话,从技术的角度来看,虽然现在的各种AI“P图”大法百花齐放,真要自己手动实现一个,麻烦事儿属实不少。
以这个“一键微笑”为例,别看只是一个微笑的动作,背后涉及的算法环节就包括:
人脸检测
面部关键点识别
面部属性识别
目标表情驱动
……
而具体到细节,关键的一步,就是要把人脸图像分割成高度精细的语义块,使得图像与像素级语义分割相匹配。

只有经过类似这样的操作,才能让表情编辑与人脸本身的状态相贴合,达到真实自然的效果。
还有一重难点在于数据集。
一键微笑背后的算法模型最终效果好不好,很大程度上依赖于人脸数据集的构建。
数据集中包含的人脸越多越丰富,AI算法就能学到越多的人脸特征,提高输出结果的精准度。但人脸数据集的获取又往往涉及到用户隐私等多种问题,较难采集。

但桥豆麻袋,我也不是在为难各位攻城狮,因为这事儿啊,也不是没有现成的捷径可以走。
开头的这么一套AI“魔法”,其实就是我最近了解到的华为HMS Core提供的AI“一键微笑”功能。
所谓HMS Core,官方说法是华为终端云服务(HUAWEI Mobile Services)开放能力合集。
简单翻译一下,就是一个给移动端开发者们提供各种App基础应用服务,以及图形、媒体、AI等一系列算法能力的平台。
其中媒体领域的视频编辑服务(Video Editor Kit)提供了专属滤镜、AI着色、人物追踪等多种AI能力。而一键微笑能力正是来自于此Kit能力。
对于开发者们而言,这便意味着,不用费力调教模型,仅需几行代码,简单接入华为HMS Core开放的SDK,就能低门槛地复制同款AI“微笑魔法”。
可以看到,基于面部识别算法以及数据集的优化,与FaceApp等相比,Video Editor Kit的微笑处理偏合理含蓄,微笑自然且不会改变原本人脸的合理结构。

HMS Core研发团队依托自研的人脸生成模型,结合算法利用部分真实人脸图片,生成大量的虚拟人脸图片来训练微笑模型,比如可以基于数千张具有肖像权的人脸图片,生成百万张虚拟人脸数据集。然后再利用自研算法模型,从人脸数据集中生成了“开心数据对”,也就是一系列的笑脸。最终,从中选出更符合原图人脸面部状态、更自然合理的微笑。
Video Editor Kit的“一键微笑”功能近期会在华为开发者联盟官网上线,有兴趣的小伙伴可以尝试下~
除了赋予照片中人自然微笑的能力,Video Editor Kit在处理老照片时,还展示了另一重AI能力:AI着色。
与此前火爆外网、成为老照片修复界标杆的MyHeritage相比,来自华为的AI着色风格强调的不是“复古感”,而是更贴近真实生活。

据了解,Video Editor Kit的AI着色是通过设计轻量算法模型、构建百万数据集,和优化调整训练方式,来让照片着色更自然。
另外,相对而言,Video Editor Kit的AI着色赋予老照片的色彩饱和度更低一些,更便于后期处理。
复杂算法一个SDK就搞定,应用开发超简单
这里咱们就以AI着色为例,看看在自己App中集成HMS Core的AI能力,需要经过哪些步骤。
首先,你需要在华为开发者联盟网站上完成实名注册。
第二步就到了集成HMS Core视频编辑服务(Video Editor Kit)的视频编辑原子能力SDK。该SDK不仅提供导入、编辑、渲染、导出、媒体资源管理等一站式视频编辑能力,还涵盖了多个AI算法能力接口,可根据业务场景灵活选择。
在快速集成SDK之后,只需要增加几行代码就可以调用AI着色能力,轻松实现图片和视频处理的AI智能化:

除了详细的开发指南之外,HMS Core官网还提供了Codelabs、服务教程和开发实例,帮助开发者快速集成SDK,进一步降低了应用开发的门槛。
需要说明的是,视频编辑服务(Video Editor Kit)的SDK不仅支持华为手机,也支持非华为设备,具体版本要求如下。

另外小小地提醒一下:人脸算法千万条,安全守法第一条。大胆的想法,还是收一收吧~
降低开发门槛的“基座”
看到这里,你是否有些跃跃欲试了呢?
简单接入SDK即可获得复杂的AI算法能力,对于App的开发者们而言,技术层面的顾虑减少了,自然可以投入更多的精力和时间去丰富创意。
而对于咱们吃瓜群众来说,这也就意味着,你能在HMS Core里找到的开放能力,都能在各种App里,以各种好玩的创意形式直接体验到。
实际上,无论是安卓还是iOS,各自生态内类似的“基座”,如今都已是大势所趋。
谷歌的GMS Core也好,苹果面向开发者的各种Kit也罢,都已证明其在各自生态内,推动中小应用开发者创意落地的价值所在。
而这种应用的繁荣,反过来也进一步为安卓、为iOS获得了更多用户的好评、吸引了更多优秀的开发者。
作为全球Top 3移动应用生态的HMS,同样在这条“基建”之路上探索已久:
在去年HMS Core 6正式发布之时,华为官方的数据就显示,其开放能力已覆盖应用服务、图形、媒体、智能终端、人工智能、安全、连接与通信在内的7个领域,总共70个Kit能力。
截至2022年Q1,HMS生态中的开发者数量,已经超过540万。
可以说,华为搭起了台子让移动应用开发者来唱戏,相当于是在移动应用生态里构建起了一套全新独立的基础设施。
并且不仅面向HarmonyOS,HMS Core也支持安卓和iOS的应用和服务开发。同时也在平板、智慧屏、智能手表及车机等更多智能终端上布局。
更重要的一点是,作为手机软件能力之基,HMS被推至台前,或许也可以看作是华为将多年积累的创新能力宝藏分享给了全球的应用开发者。
你觉得呢?
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在