一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

个性化自动视频裁切的制作方法

2022-04-27 09:41:34 来源:中国专利 TAG:

个性化自动视频裁切
1.相关申请
2.本技术要求于2019年12月13日提交的标题为“personalized automatic video cropping(个性化自动视频裁切)”的美国临时专利申请no.62/948,179的优先权,并且其整体内容通过引用并入本文中。


背景技术:

3.当在设备上查看视频(和图像)时,设备的显示纵横比和/或定向通常可能不匹配媒体的纵横比。结果,媒体通常被上下加框以用于显示(例如,在侧面具有大黑色边框,并且在边框之间具有减小的视频大小或静止图像大小)。在某些情况下,观看者软件应用可以裁切原始媒体以避免上下加框。
4.本文提供的背景技术描述出于大体上呈现本公开的上下文的目的。在本背景技术部分中描述的程度上,当前署名的发明人的作品以及在提交时可能不构成现有技术的描述的各方面既不显式地也不隐式地被认为是本公开的现有技术。


技术实现要素:

5.一些实现方式可以包括方法。该方法可以包括:获得包括多个帧的输入视频,并且确定输入视频的每个帧中的一个或多个候选裁切区域的每帧裁切分值。方法也可以包括使用经训练的机器学习模型来生成用于输入视频的每个帧内的一个或多个候选裁切区域的面部信号,并且基于一个或多个候选裁切区域的面部信号来调整每个每帧裁切分值。在一些实现方式中,面部信号可以指示在候选裁切区域中是否检测到至少一个重要面部。
6.方法还可以包括基于运动成本和用于一个或多个候选裁切区域的经调整的每帧裁切分值来确定表示用于输入视频的裁切区域位置的最小成本路径,并且生成对应于沿着最小成本路径的裁切区域位置的裁切关键帧,其中裁切关键帧包括开始帧、结束帧和裁切区域位置。方法也可以包括输出具有与输入视频的对应的输入纵横比或输入定向不同的输出纵横比或输出定向中的一个或多个的经修改的视频,其中,纵横比或输入定向是在输入视频的捕获期间使用的参数。
7.在一些实现方式中,调整每个每帧裁切分值包括以下中的一个:如果确定面部存在于对应于每帧裁切分值的候选裁切区域中,则将每帧裁切分值增加了第一值;或者如果确定至少一个重要面部存在于对应于每帧裁切分值的候选裁切区域中,则将每帧裁切分值增加了第二值,其中第二值大于第一值。
8.方法也可以包括确定裁切关键帧的质量分值,并且基于质量分值来执行输入视频的自动视频裁切。方法还可以包括确定裁切关键帧的置信度分值,并且基于置信度分值来执行输入视频的自动视频裁切。
9.在一些实现方式中,确定每帧裁切分值包括:针对每个候选裁切区域确定以下中的一个或多个:美学分值、面部分析分值或活动说话者存在。在一些实现方式中,生成裁切关键帧包括在两个关键帧之间内插。在一些实现方式中,内插包括应用贝塞尔样条。
10.在一些实现方式中,生成面部信号包括访问一个或多个个性化参数。在一些实现方式中,一个或多个个性化参数包括用于一个或多个重要面部的面部识别信息。在一些实现方式中,输出经修改的视频包括在显示器上显示经修改的视频。
11.方法也可以包括在获得输入视频之前,在设备处接收视频回放命令,并且响应于接收到视频回放命令,检测设备定向和用于设备的显示纵横比。方法还可以包括基于设备定向和用于设备的显示纵横比来确定裁切区域。
12.一些实现方式可以包括一种非暂时性计算机可读介质,其上存储有软件指令,软件指令在由一个或多个处理器执行时使一个或多个处理器执行操作。操作可以包括获得包括多个帧的输入视频,确定输入视频的每个帧中的一个或多个候选裁切区域的每帧裁切分值,并且使用经训练的机器学习模型来生成用于输入视频的每个帧内的一个或多个候选裁切区域的面部信号。在一些实现方式中,面部信号可以指示在候选裁切区域中是否检测到至少一个重要面部。操作也可以包括基于一个或多个候选裁切区域的面部信号来调整每个每帧裁切分值,并且基于运动成本和用于一个或多个候选裁切区域的经调整的每帧裁切分值来确定表示用于输入视频的裁切区域位置的最小成本路径。
13.操作也可以包括生成对应于沿着最小成本路径的裁切区域位置的裁切关键帧,其中裁切关键帧包括开始帧、结束帧和裁切区域位置,并且输出具有与输入视频的对应的输入纵横比或输入定向不同的输出纵横比或输出定向中的一个或多个的经修改的视频,其中,纵横比或输入定向是在输入视频的捕获期间使用的参数。
14.在一些实现方式中,调整每个每帧裁切分值包括以下中的一个:如果确定面部存在于对应于每帧裁切分值的候选裁切区域中,则将每帧裁切分值增加了第一值;或者如果确定至少一个重要面部存在于对应于每帧裁切分值的候选裁切区域中,则将每帧裁切分值增加了第二值,其中第二值大于第一值。
15.操作还可以包括确定裁切关键帧的质量分值,并且基于质量分值来执行输入视频的自动视频裁切。操作也可以包括确定裁切关键帧的置信度分值,并且基于置信度分值来执行输入视频的自动视频裁切。
16.在一些实现方式中,确定每帧裁切分值包括:针对每个候选裁切区域确定以下中的一个或多个:美学分值、面部分析分值或活动说话者存在。在一些实现方式中,生成裁切关键帧包括在两个关键帧之间内插。在一些实现方式中,内插包括应用贝塞尔样条。在一些实现方式中,生成面部信号包括访问一个或多个个性化参数。
17.一些实现方式可以包括一种系统,包括一个或多个处理器,其耦合到其上存储有软件指令的非暂时性计算机可读介质,软件指令在由一个或多个处理器执行时使一个或多个处理器执行操作。操作可以包括获得包括多个帧的输入视频,确定输入视频的每个帧中的一个或多个候选裁切区域的每帧裁切分值,并且使用经训练的机器学习模型来生成用于输入视频的每个帧内的一个或多个候选裁切区域的面部信号。在一些实现方式中,面部信号可以指示在候选裁切区域中是否检测到至少一个重要面部。操作也可以包括基于一个或多个候选裁切区域的面部信号来调整每个每帧裁切分值,并且基于运动成本和用于一个或多个候选裁切区域的经调整的每帧裁切分值来确定表示用于输入视频的裁切区域位置的最小成本路径。
18.操作也可以包括生成对应于沿着最小成本路径的裁切区域位置的裁切关键帧,其
中裁切关键帧包括开始帧、结束帧和裁切区域位置,并且输出具有与输入视频的对应的输入纵横比或输入定向不同的输出纵横比或输出定向中的一个或多个的经修改的视频,其中,纵横比或输入定向是在输入视频的捕获期间使用的参数。
附图说明
19.图1是可以用于本文描述的一个或多个实现方式的示例网络环境的框图。
20.图2a和2b是风景视频格式和左右加框格式的图。
21.图3a和3b示出根据一些实现方式的水平视频上的裁切矩形和以人像定向所显示的裁切视频。
22.图4是示出根据一些实现方式的自动裁切视频的处理的流程图。
23.图5是根据一些实现方式的自动裁切视频的示例方法的流程图。
24.图6是可以用于本文描述的一个或多个实现方式的示例设备的框图。
25.图7是示出根据一些实现方式的示例自动视频裁切路径的示图。
26.图8a-8c示出根据一些实现方式的裁切区域移动到不同位置的示例视频的图。
具体实施方式
27.本文描述的一些实现方式涉及用于自动裁切视频的方法、系统和计算机可读介质。所描述的实现方式可以使用经训练的机器学习模型利用个性化参数来自动地裁切视频。该模型的训练数据可以包括在用户许可下访问的用于用户的个性化信息。个性化信息可以包括存储在(例如,在设备上的)本地存储中的用于面部的面部识别信息。
28.本文描述的一些实现方式涉及用于自动地执行个性化视频裁切的方法、系统和计算机可读介质。不同的视频平台和递送设备可以具有不同的纵横比,包括4:3(风景)、9:16(人像)和1:1(正方形),其中第一数目是指视频的宽度,而第二数目是指视频的高度。
29.所描述的技术可以基于诸如对用户重要的(例如,基于用户的图像库中的图像/视频而被用户辨识、熟悉或已知的)面部等个性化参数在视频回放时自动地执行个性化视频裁切(例如,裁切以显示面向风景的视频以便以人像或正方形格式显示)而不中断用户。用户可以具有图像和视频库(例如,由图像管理软件应用所存储和管理的图像),该图像和视频库包括由用户捕获的或者以其他方式添加到库的多个图像和/或视频(例如,由其他用户与用户共享的图像)。该库可以在用户设备(例如,智能电话)本地上和/或在服务器(例如,基于云的图像/视频托管服务)上。例如,用户可以使用诸如智能电话、数码相机、可穿戴设备等的一个或多个设备来捕获各个个人的图像和/或视频,并且将这样的图像存储在他们的库中。在一些实现方式中,重要面部还可以包括不在用户的库中但是基于其他图像源——诸如诸如在用户许可下访问的用户的社交图、社交媒体账户、电子邮件账户、用户的电子地址簿——而识别的面部。
30.如果用户拒绝许可访问库或任何其它源,则不访问这些源,并且不执行重要的面部确定。此外,用户可以排除一个或多个面部被辨别和/或被包括作为重要面部。更进一步,可以向用户提供选项(例如,用户界面)以手动地指示重要面部。如本文所使用的术语面部可以指人脸和/或可以使用面部检测技术而检测到的任何其他面部(例如,宠物或其他动物的面部)。
31.一些图像管理应用可以包括在用户许可的情况下启用的功能,以检测图像或视频中的人和/或宠物的面部。如果用户允许,则这样的图像管理应用可以检测用户库中的图像/视频中的面部,并且确定每个面部的出现频率。例如,诸如配偶、兄弟姐妹、父母、密友等的个人的面部可能在用户的库中的图像/视频中以高频率出现,而诸如(例如,在公共场所的)旁观者的其他人可能不经常出现。在一些实现方式中,以高频率出现的面部可以被识别为重要面部。在一些实现方式中,例如,当库使得用户能够给面部贴标签或标记面部时,用户可以指示在他们的库中出现的面部的名称(或其他信息)。在这些实现方式中,用户已经为其提供了姓名或其他信息的面部可以被识别为重要面部。在图像库中检测到的其他面部可以被识别为不重要的。
32.按照各种实现方式,视频裁切和重要面部的确定在客户端设备上本地执行,并且不需要网络连接。所描述的技术使得能够在以不同于视频的纵横比或在不适合于视频被捕获或存储在其中的定向的设备定向(例如,人像对风景)观看视频时实现改进的视频回放体验。所描述的技术可以在回放视频的任何设备(例如,移动设备)上实现。
33.在一些实现方式中,自动视频裁切可以包括三个阶段:每帧裁切得分、时间相干性和运动平滑。每帧裁切得分可以是基于图像的,其可以是有噪声的并且包括各种不同的分值。在一些实现方式中,启发式组合可以用于生成候选裁切区域的单个每帧分值。第二阶段可以包括时间相干性,其可以包括通过空间和时间拟合平滑的最优路径的操作。时间相干性可以包括场景运动的表示。第三阶段可以包括运动平滑和启发式结合。在该阶段中,可以针对可能不是全局易处理的视频的方面执行局部优化。可以应用特定的试探法和规则来处理特定情况。
34.图1示出了可以在本文描述的一些实现方式中使用的示例网络环境100的框图。在一些实现方式中,网络环境100包括一个或多个服务器系统,例如,图1的示例中的服务器系统102。服务器系统102可以与例如网络130通信。服务器系统102可以包括服务器设备104和数据库106或其他存储设备。在一些实现方式中,服务器设备104可以提供视频应用158。
35.网络环境100也可以包括一个或多个客户端设备,例如客户端设备120、122、124和126,其可以经由网络130彼此通信和/或与服务器系统102和/或第二服务器系统140通信。网络130可以是任何类型的通信网络,包括因特网、局域网(lan)、无线网络、交换机或集线器连接等中的一个或多个。
36.为了便于说明,图1示出了用于服务器系统102、服务器设备104、数据库106的一个框,并且示出了用于客户端设备120、122、124和126的四个框。服务器框102、104和106可以表示多个系统、服务器设备和网络数据库,并且这些块框可以以与所示的配置不同的配置来提供。例如,服务器系统102可以表示可以经由网络130与其它服务器系统通信的多个服务器系统。在一些实现方式中,服务器系统102可以包括例如云托管服务器。在一些示例中,数据库106和/或其他存储设备可以被提供在与服务器设备104分离的服务器系统框中,并且可以经由网络130与服务器设备104和其他服务器系统通信。
37.而且,可以存在任何数量的客户端设备。每个客户端设备可以是能够通信的任何类型的电子设备,例如,台式计算机、膝上型计算机、便携式或移动设备、蜂窝电话、智能电话、平板计算机、电视、tv机顶盒或娱乐设备、可穿戴设备(例如,显示眼镜或护目镜、手表、耳机、臂章、珠宝等)、个人数字助理(pda)等。在一些实现方式中,网络环境100可以不具有
所示的所有组件和/或可以具有包括代替或附加于本文所描述的那些的其它类型的元件的其它元件。
38.在各种实现方式中,最终用户u1、u2、u3和u4可以使用相应的客户端设备120、122、124和126与服务器系统102通信和/或彼此通信。在一些示例中,用户u1、u2、u3和u4可以经由在相应客户端设备和/或服务器系统102上运行的应用和/或经由在服务器系统102上实现的网络服务(例如社交网络服务或其他类型的网络服务)彼此交互。例如,相应的客户端设备120、122、124和126可以向和从一个或多个服务器系统——例如服务器系统102——传达数据。
39.在一些实现方式中,服务器系统102可以向客户端设备提供适当的数据,使得每个客户端设备可以接收上传到服务器系统102的所传达的内容或共享内容。在一些示例中,用户u1-u4可以经由音频或视频会议、音频、视频或文本聊天、或其他通信模式或应用进行交互。
40.由服务器系统102实现的网络服务可以包括允许用户执行各种通信、形成链接和关联、上传和发布诸如图像、文本、视频、音频和其他类型的内容之类的共享内容和/或执行其他功能的系统。例如,客户端设备可以显示接收到的数据,诸如发送或流传输到客户端设备并且经由服务器和/或网络服务源自不同客户端设备(或直接来自不同客户端设备)或源自服务器系统和/或网络服务的内容帖子。
41.在一些实现方式中,客户端设备120、122、124和/或126中的任何一个可以提供一个或多个应用。例如,如图1所示,客户端设备120可以提供自动视频裁切应用152。客户端设备122-126还可以提供类似的应用。自动视频裁切应用152可以使用客户端设备120的硬件和/或软件来实现。在不同的实现方式中,自动视频裁切应用152可以是例如在客户端设备120-124中的任一个上执行的独立的客户端应用。自动视频裁切应用152可以提供与视频相关的各种功能,例如,自动裁切视频以从一个纵横比改变到另一个纵横比等。
42.客户端设备120、122、124和/或126上的用户界面可以实现显示用户内容和其他内容,包括图像、视频、数据和其他内容以及通信、设置、通知和其他数据。这样的用户界面可以使用客户端设备上的软件、服务器设备上的软件和/或在服务器设备104上执行的客户端软件和服务器软件的组合来显示。用户界面可以由客户端设备的显示设备——例如,触摸屏或其他显示屏、投影仪等——显示。在一些实现方式中,服务器可以简单地使得用户能够通过网络流传输/下载视频,并且在用户许可的情况下,使得能够上传/存储由用户发送的视频。
43.本文描述的特征的其它实现方式可以使用任何类型的系统和/或服务。例如,代替社交网络服务或除了社交网络服务之外,可以使用其他网络服务(例如,连接到因特网)。任何类型的电子设备都可以利用本文描述的特征。一些实现方式可以在与计算机网络断开连接或间歇地连接到计算机网络的一个或多个客户端或服务器设备上提供本文描述的一个或多个特征。
44.图2a是根据一些实现方式的风景格式的视频的图。图2b是当以其中该视频被左右加框的人像定向在设备上观看时图2a中所示的视频的图。图2a示出了用户设备202以风景模式204显示视频。图2b示出了设备现在处于人像模式并且视频204已经被左右加框206以用于以人像定向显示。如图2b所示,当视频被左右加框以便以人像定向显示时,由视频占据
的设备的显示屏部分实质上更小。
45.图3a是示出根据一些实现方式的水平视频上的裁切矩形的图。图3b是示出根据一些实现方式的以人像定向显示的裁切视频的图。图3a示出了以其中以虚线示出了裁切区域302的风景定向的视频的单个帧。裁切区域302位于x位置304。如下所述,自动裁切过程跨视频的时域生成用于裁切区域的x位置(风景到人像裁切)。更一般地,该过程生成相对于源视频的裁切窗口(x,y,宽度,高度)。
46.图4是示出根据一些实现方式的自动裁切针对用户个性化的视频的示例方法400的流程图。在一些实现方式中,方法400可以例如在如图1所示的服务器系统102上实现。在一些实现方式中,方法400的一些或全部可以在如图1所示的一个或多个客户端设备120、122、124或126上、一个或多个服务器设备上和/或在服务器设备和客户端设备两者上实现。在所描述的示例中,实现系统包括一个或多个数字处理器或处理电路(“处理器”)以及一个或多个存储设备(例如,数据库106或其他存储设备)。在一些实现方式中,一个或多个服务器和/或客户端的不同组件可以执行方法400的不同框或其他部分。在一些示例中,第一设备被描述为执行方法400的框。一些实现方式可以具有由可以向第一设备发送结果或数据的一个或多个其他设备(例如,其他客户端设备或服务器设备)所执行的方法400的一个或多个框。
47.在一些实现方式中,方法400或方法的部分可以由系统自动发起。在一些实现方式中,实现系统是第一设备。例如,可以基于一个或多个特定事件或条件——例如,在客户端设备上回放视频、准备用于从客户端设备上传的视频和/或可以在由方法读取的设置中指定的一个或多个其他条件发生——来执行方法(或其部分)。
48.方法400可以在框402开始。在框402中,检查是否已经获得在方法200的实现方式中使用用户数据的用户同意(例如,用户许可)。例如,用户数据可以包括重要面部和附加用户标准、图像集合中的用户图像(例如,由用户捕获的、由用户上传的、或以其他方式与用户相关联的图像)、关于用户的社交网络和/或联系人的信息、用户特性(身份、姓名、年龄、性别、职业等)、社交和其他类型的动作和活动、日历和约会、内容、评级、以及由用户创建或提交的意见、用户的地理位置、历史用户数据等。框402可以作为自动视频裁切框架层的一部分来执行,使得将仅在框架层获得用于执行自动裁切应用的用户同意时才调用框404及以后的框。如果已经从其中在方法400中可以使用用户数据的相关用户获得了用户同意,则在框404中,确定可以用如针对这些框所描述的用户数据的可能使用来实现本文的方法的框,并且该方法继续到框406。如果尚未获得用户同意,则在框406中确定要在不使用用户数据的情况下实现框,并且该方法继续至框406。在一些实现方式中,如果尚未获得用户同意,则不执行方法400的剩余部分,和/或不执行需要用户数据的特定框。例如,如果用户不提供许可,则跳过框412-414。而且,重要面部的辨别可以基于本地存储的数据并且可以在用户设备上本地执行。用户可以指定特定的重要面部以在任何时候辨别或不辨别、移除指定或停止使用基于重要面部的自动裁切。
49.在框408,获得输入视频。例如,访问存储在用户设备上的存储器中的视频。视频可以包括多个帧。输入视频具有定向(垂直/水平)和纵横比,例如4:3、16:9、18:9等。例如,可以在视频捕获时例如基于捕获视频的设备的相机参数来选择纵横比。框408可以接着是框410。
50.在框410,针对输入视频的每帧的一个或多个候选裁切区域确定每帧裁切分值。候选裁切区域可以是与在其上观看视频的设备的观看定向匹配的区域,并且可以具有与该设备相同的纵横比,使得裁切到该区域的视频实质上占据整个屏幕(或窗口,如果该视频在窗口化用户界面中播放)。例如,如果作为风景(水平尺寸大于垂直尺寸)并且具有4000
×
3000像素的纵横比的输入视频将被显示在2000
×
2000像素的正方形显示器上,则每个候选裁切区域可以是3000
×
3000像素,从而匹配3000像素的尺寸)。可以扩缩3000
×
3000像素的所选择的裁切区域以适合正方形显示,例如,缩小到2000
×
2000像素。选择较高分辨率的裁切区域接着进行缩放可以保留大部分原始内容。或者,可以选择与2000
×
2000像素的显示相匹配的候选裁切区域。
51.裁切分值可以包括一个或多个个体分值。当使用多于一个分值时,可以存在确定如何将个体分值组合成单个分值的试探法。个体分值可以包括美学分值(例如,来自508)、基于面部/人分析的分值(例如,506)和/或主动说话者分析(例如,504)。此外,一些实现方式可以包括基于对象检测、宠物或动物检测、或光学字符辨别(ocr)的一个或多个附加分值。例如,包括如使用对象检测技术所识别的显著对象的裁切区域可以被指派比其中没有检测到显著对象或仅检测到部分对象的区域更高的分值。例如,如果视频描绘了自然场景,则具有诸如树、山或其他对象的显著对象的裁切区域可以被指派比例如,仅包括天空的不具有显著对象的裁切区域更高的分值。
52.在另一示例中,描绘宠物(例如,在用户的个人图像/视频库中被贴标签的、在用户许可下访问的狗、猫或其他宠物动物)或其他动物的裁切区域可以被指派比排除宠物或动物或者仅部分地描绘宠物或动物的区域更高的分值。在又一示例中,包括如使用ocr所辨别的文本的区域可以被指派较高的分值。例如,如果视频包括具有包括文本的标志的店面,则包括标志的裁切区域可以被指派比排除或仅部分地描绘标志的裁切区域更高的分值。每帧裁切分值可以包括候选裁切区域(例如,视频帧中的给定x位置处的裁切矩形)的分值。框410可以接着是框412。
53.在412,生成面部信号并且确定个性化分值。在一些实现方式中,面部信号可以指示是否在候选裁切区域中检测到至少一个重要面部。在一些实现方式中,个性化分值可以包括基于使用面部检测技术来检测帧中的面部并且确定该帧中的面部中的至少一个是否匹配重要面部所确定(例如,如基于诸如用户库中的人的面部的先前视频或照片的用户允许的数据所确定,或者如由诸如查看电子邮件、电话、聊天、视频呼叫等中的用户的社交图联系或通信历史之类的其他用户允许的信号所确定)的重要面部是否存在的分值。可以基于来自机器学习模型的信号来确定个性化分值,该信号表示一个或多个重要面部在候选裁切区域中的程度,该程度可以由机器学习模型来确定。除了确定一个或多个重要面部在候选裁切区域中之外,个性化分值模块还可以确定一个或多个重要面部在候选裁切区域内的位置,例如,面部是否位于候选裁切区域中的中心、是否靠近候选裁切区域的边缘等。框412可以接着是框414。
54.在414,基于面部信号来调整每帧裁切分值。例如,如果在候选裁切区域中检测到面部,则该区域的分值可以提高了第一因子。如果检测到候选裁切区域包括重要面部,则该区域的分值可以提高了大于第一因子的第二因子。
55.在一些实现方式中,可以确定裁切区域与包括面部的边界框的交集。例如,可以利
用面部检测技术来确定边界框。可以基于交集来调整裁切分值。例如,在一些实现方式中,完全交集(其中整个面部存在于裁切区域内)可以接收完全分值提升,而部分面部(其中面部的一部分从裁切区域缺失)可以接收较低分值提升,例如,可以通过交集的面积与面部边界框的面积的比率来加权分值提升。框408可以接着是框416。
56.在416,确定运动成本。在一些实现方式中,运动成本可以是与在给定一个或多个先前时间(例如,视频中的较早时间戳)的潜在裁切路径和视频中存在的运动的情况下在特定时间(例如,视频中的特定时间戳)选择候选裁切区域相关联的成本。在一些实现方式中,运动成本确定可以包括例如使用光流或其他技术来分析裁切区域的帧到帧运动。结果可以被聚类成少量的运动聚类(例如,包括在一组彼此接近的位置中的裁切区域运动的聚类。在一些实现方式中,稀疏光流可以在非纹理区域中更好地执行。运动可以被减少到少量聚类(例如,围绕彼此相对接近的区域运动的聚类)。聚类可以不提供时间相干性。
57.在示例实现方式中,可以基于相对于先前时间的裁切区域的运动与最佳匹配运动聚类的运动的比较来计算运动成本。例如,最佳匹配运动聚类可以是具有裁切区域内的空间质心和与裁切区域的运动最相似的运动向量的聚类。运动成本可以是最佳匹配运动聚类和候选裁切区域的运动之间的速度的绝对差的函数。成本值可以被指配给移动裁切区域并且用于确定运动成本。例如,图8a-8c示出了视频802中的裁切区域804,其中裁切区域802基于本文所述的技术在视频的回放期间移动到不同的位置(例如808和812)。框416可以接着是框418。
58.在418,基于每帧裁切分值和在416确定的运动成本来确定最小成本路径。在一些实现方式中,最小成本路径可以包括基于裁切分值获得候选裁切区域并且执行最小成本路径寻找操作,其可以包括用于移动裁切区域的成本(例如,移动裁切区域的成本可以基于裁切区域从帧到帧被连续地移动的距离或者在帧和后续帧之间的距离)。通过求解最小成本路径来找到最小成本路径。图7示出了表示最小成本路径和绘制成曲线图的其它因素的示例图700,其中y轴702是视频内的裁切区域的x位置,并且x轴是时间。一些实现方式可以包括其中从输入视频内的裁切区域位置中移除离群点以平滑裁切区域的路径并且移除不连续性的离群点移除。这可能是最小成本路径的副产品。框418可以接着是框420。
59.在420,生成裁切关键帧。裁切关键帧可以包括起始帧和结束帧以及在输入视频内的裁切区域x位置。例如,可以对于具有30fps的帧速率的视频以5帧每秒(fps)执行裁切路径生成。在此示例中,关键帧可以以5fps生成,并且诸如贝塞尔样条等内插技术可以用于以视频的30fps的全帧率生成平滑内插。例如,可以存在如图8a-8c所示的视频的三个关键帧部分,其中每个裁切关键帧包括在不同x位置的裁切区域。框420可以接着是框422。
60.在422,基于输入视频和裁切关键帧来输出裁切视频。例如,裁切视频可以显示在用户设备的显示器上。在另一示例中,可以将裁切视频上传到视频共享站点等。裁切视频可以具有与输入视频的纵横比或定向不同的纵横比或定向。
61.在一些实现方式中,代替裁切视频或除了包括裁切视频之外,输出可以包括裁切关键帧和路径。例如,裁切关键帧和路径可以与视频相关联地存储,例如,作为视频元数据。当观看者应用启动视频的回放时,可以确定与观看者应用纵横比或定向(其可以基于在其上查看视频的设备)相匹配的裁切关键帧和路径,并且将其提供给观看者应用。观看者应用可以利用裁切关键帧和路径来在回放期间裁切视频。这种实现方式消除了当在辨别裁切关
键帧和路径的观看者应用中观看视频时生成单独的视频资产(其匹配观看者应用)的需要,并且可以在回放时利用该信息来裁切视频。
62.方法400的各个框可以被组合、分割成多个框、或者并行执行。例如,可以组合框406和408。在一些实现方式中,可以以不同的顺序来执行这些框。例如,框404-408和框412-414可以并行执行。
63.方法400或其部分可以使用附加输入(例如,附加视频)重复任意次数。方法400可以在特定用户许可的情况下实现。例如,可以提供视频回放用户界面,其使得用户能够指定是否启用自动个性化视频裁切。可以向用户提供在回放时执行自动个性化视频裁切可以利用使用(例如存储在用户设备上的)个性化参数执行面部识别的信息,并且向用户提供完全禁用自动个性化视频裁切的选项。
64.可以完全在正在回放或上传视频的客户端设备上执行方法400,包括在特定用户许可情况下的面部检测和重要面部确定。此外,面部可以是人或其他(例如,动物或宠物)。进一步,在设备上执行自动个性化视频裁切的技术益处在于,所描述的方法不需要客户端设备具有活跃的因特网连接,从而即使在设备未连接到因特网时也允许自动视频裁切。进一步,由于该方法本地执行,因此不消耗网络资源。更进一步地,没有用户数据被发送到服务器或其他第三方设备。因此,所描述的技术可以解决以与捕获视频的纵横比或定向不同的纵横比或定向的视频回放的问题,其中以不需要共享用户数据的方式利用个性化参数的益处。
65.在一些实现方式中,在视频的回放期间,可以检测设备的定向或纵横比的改变(例如,当用户在回放期间将设备旋转90度,或者打开可折叠设备以使纵横比加倍时),并且作为响应,可以调整裁切(例如,可以调整裁切区域以适合期望的输出定向和/或纵横比。
66.所描述的技术可有利地生成对用户(例如,正观看所述裁切视频的用户)而个性化的裁切视频。例如,考虑处于风景定向(其中宽度大于高度)的视频,其中在视频的任一侧描绘两个人,例如,第一个人出现在图像的左边缘附近而第二个人被描绘在图像的右边缘附近。当例如在其中屏幕具有小于高度的宽度的智能电话或其他设备上以人像定向观看这样的视频时,常规的非个性化裁切可以产生描绘两个人中的一个的裁切区域,该裁切区域独立于观看用户而被选择。相反,如本文所描述的个性化裁切可以自动地选择(例如具有重要面部的)特定人作为视频的焦点,并且选择描绘该人的裁切区域。例如,可以理解,不同的观看者可能发现视频中描绘的人是重要的,并且因此,不同观看者的裁切区域可能不同。更一般地,当视频描绘多个对象时,根据本文描述的技术,针对不同观看者的裁切区域可以被个性化,使得感兴趣的主体(例如,重要面部、宠物等)被保留在裁切视频中。
67.图5是根据一些实现方式的用于自动裁切视频的示例模块500的图。在502获得视频。初始每帧得分可以使用活动说话者分析模块504、人/面部分析模块506或美学得分模块508来完成。个性化分值组合模块512基于个性化参数来生成包括个性化值的分值。组合的个性化分值可以包括来自504-508的个体分值,其与基于包括可以在视频中拍摄的重要面部的识别和/或其他标准的个人标准510的分值组合。个性化分值可以包括来自被训练为在图像中辨别用户的重要面部的机器学习模型的值,该模型可以提供在候选裁切区域内的重要面部的指示。重要面部的指示可以包括在裁切区域中识别的每个重要面部的位置。重要面部可以包括用户过去使用设备拍摄了其视频或照片的面部;作为以下各项中的至少一项
的面部:发生至少阈值次数;出现在用户的库的至少阈值比例中,例如,在库中的图像和视频的至少5%中);以至少阈值频率出现(例如,对于图像/视频在库中的大多数年份,每年至少一次);等。
68.与个性化分值组合512并行地,可以执行运动分析514和/或运动和加速度成本计算516。运动成本计算516和个性化分值组合512的输出可以由最小成本路径寻找518使用。最小成本路径寻找518的输出可进一步利用局部优化和试探法520处理,并且然后用于裁切关键帧522。最小成本路径寻找518的输出还可以用于计算质量或置信度分值524。
69.质量或置信度分值可以用于确定是自动裁切视频还是不裁切视频。例如,一些视频不能被很好地裁切成人像。具有指示视频不能被很好地裁切的质量或置信度度量可以向系统指示不尝试视频裁切,并且可以替代地退回到以上下加框格式显示视频。在另一示例中,在视频中可以存在多于一个重要面部,并且可以布置面部使得裁切将从视频中裁切一个或多个重要面部。这可以是不执行自动视频裁切操作的另一种情况。
70.一些实现方式可以包括用于确定在哪里定位裁切区域的附加输入信号。附加输入信号可以包括以下中的一个或多个:视频显著性(例如,不仅仅是美学)、面部质量、感兴趣的对象(例如,人、动物等)或个性化信号(例如,重要面部)。在一些实现方式中,系统可以尝试使用检测跟随人的相机、谁正在看相机、相机的持续时间等中的一个或多个来以编程方式确定视频中谁是重要的。
71.一些实现方式可以包括用于平滑相机加速度的例程。一些实现方式可以包括关键帧插值以使用贝塞尔样条。在一些实现方式中,系统可以控制相机速度的改变。
72.图6是可以用于实现本文描述的一个或多个特征的示例设备600的框图。在一个示例中,设备600可以用于实现客户端设备,例如图1所示的任何客户端设备115。或者,设备600可以实现服务器设备,例如服务器104。在一些实现方式中,设备600可以用于实现客户端设备、服务器设备或客户端和服务器设备两者。设备600可以是任何合适的计算机系统、服务器或如上所述的其他电子或硬件设备。
73.本文描述的一个或多个方法可以在独立程序中运行,该独立程序可以在任何类型的计算设备上执行,作为在任何类型的计算设备上执行的另一程序的一部分,或者作为移动应用(“app”)或在移动计算设备(例如,蜂窝电话、智能电话、平板计算机、可穿戴设备(腕表、臂带、珠宝、头饰、虚拟现实护目镜或眼镜、增强现实护目镜或眼镜、头戴式显示器等)、膝上型计算机等)上执行的移动app的一部分。
74.在一些实现方式中,设备600包括处理器602、存储器604和输入/输出(i/o)接口606。处理器602可以是一个或多个处理器和/或处理电路,以执行程序代码并且控制设备600的基本操作。“处理器”包括处理数据、信号或其它信息的任何合适的硬件系统、机构或组件。处理器可以包括一种系统,该系统具有包括一个或多个核心(例如,单核、双核或多核配置)的通用中央处理单元(cpu)、多处理单元(例如,多处理器配置)、图形处理单元(gpu)、现场可编程门阵列(fpga)、专用集成电路(asic)、复杂可编程逻辑器件(cpld)、用于实现功能的专用电路、用于实现基于神经网络模型的处理的专用处理器、神经电路、针对矩阵计算(例如,矩阵乘法)优化的处理器、或其他系统。在一些实现方式中,处理器602可以包括实现神经网络处理的一个或多个协处理器。在一些实现方式中,处理器602可以是处理数据以产生概率输出的处理器,例如,由处理器602产生的输出可能是不精确的或者可能在预期输出
的范围内是准确的。处理不需要限于特定地理位置或具有时间限制。例如,处理器可以“实时”、“离线”、以“批处理模式”等执行其功能。处理的部分可以由不同(或相同)的处理系统在不同时间和不同位置执行。计算机可以是与存储器通信的任何处理器。
75.存储器604通常设置在设备600中以供处理器602访问,并且可以为适于存储供处理器执行的指令且与处理器602分离放置和/或与其集成在一起的任何合适的处理器可读存储媒体,例如随机存取存储器(ram)、只读存储器(rom)、电可擦除只读存储器(eeprom)、快闪存储器等。存储器604可以存储由处理器602在服务器设备600上操作的软件,包括操作系统608、机器学习应用630、其他应用612和应用数据614。其他应用612可以包括诸如视频裁切应用、数据显示引擎、web托管引擎、图像显示引擎、通知引擎、社交网络引擎等的应用。在一些实现方式中,机器学习应用630和/或其他应用612可以包括使得处理器602能够执行本文描述的功能的指令,例如,图4和图5的方法中的一些或全部。
76.其他应用612可以包括例如视频应用、媒体显示应用、通信应用、web托管引擎或应用、地图绘制应用、媒体共享应用等。本文公开的一个或多个方法可以在若干环境和平台中操作,例如作为可以在任何类型的计算设备上运行的独立计算机程序、作为在移动计算设备上运行的移动应用(“app”)等。
77.在各种实现方式中,机器学习应用可以利用贝叶斯分类器、支持向量机、神经网络或其他学习技术。在一些实现方式中,机器学习应用630可以包括经训练的模型634、推断引擎636和数据632。在一些实现方式中,数据632可以包括训练数据,例如,用于生成经训练的模型634的数据。例如,训练数据可以包括在用户许可下访问的任何类型的数据,诸如用户在用户设备上拍摄的图片或视频、用户设备上的照片或视频中描绘的人的面部标识信息等。当经训练的模型634是生成面部信号的模型时,训练数据可以包括图片、视频和相关联的元数据。
78.可以从例如,特别地被标记用于训练的数据储存库、被提供用作机器学习的训练数据的许可的数据等的任何源获得训练数据。在一个或多个用户允许使用其相应的用户数据来训练机器学习模型——例如经训练的模型634——的实现方式中,训练数据可包括这样的用户数据。
79.在一些实现方式中,训练数据可以包括出于训练的目的而生成的合成数据,诸如不基于用户输入或在正被训练的上下文中的活动的数据,例如,从视频生成的数据。在一些实现方式中,机器学习应用630排除数据632。例如,在这些实现方式中,经训练的模型634可以例如在不同的设备上生成,并且被提供作为机器学习应用630的一部分。在各种实现方式中,经训练的模型634可以被提供作为包括模型结构或形式以及相关联的权重的数据文件。推断引擎636可以读取用于经训练的模型634的数据文件,并且基于在经训练的模型634中指定的模型结构或形式来实现具有节点连接性、层和权重的神经网络。
80.在一些实现方式中,经训练的模型634可以包括一个或多个模型形式或结构。例如,模型形式或结构可以包括任何类型的神经网络,诸如线性网络、实现多个层(例如,输入层和输出层之间的“隐藏层”,其中每一层是线性网络)的深度神经网络、卷积神经网络(例如,将输入数据划分或分割成多个部分或图块、使用一个或多个神经网络层单独地处理每个图块、以及聚集来自每个图块的处理的结果的网络)、序列到序列神经网络(例如,将诸如句子中的词、视频中的帧等序列数据作为输入并且产生结果序列作为输出的网络)等。模型
形式或结构可以指定各种节点以及将节点组织成层之间的连通性。
81.例如,第一层(例如,输入层)的节点可以接收数据作为输入数据632或应用数据614。例如,当经训练的模型634生成面部信号时,输入数据可以包括由用户设备捕获的照片或视频。随后的中间层可以接收根据在模型形式或结构中指定的每个连接性的前一层的节点的输出作为输入。这些层也可以被称为隐藏层或潜在层。
82.最终层(例如,输出层)产生机器学习应用的输出。例如,输出可以是重要面部是否存在于一个或多个视频帧中的指示。在一些实现方式中,模型形式或结构也指定每一层中的节点的数量和/或类型。
83.在不同的实现方式中,经训练的模型634可以包括根据模型结构或形式被排列成层的多个节点。在一些实现方式中,节点可以是不具有存储器的计算节点,例如,被配置为处理一个输入单元以产生一个输出单元。由节点执行的计算可以包括例如将多个节点输入中的每一个乘以权重,获得加权和,并且利用偏置或截距值调整加权和以产生节点输出。在一些实现方式中,由节点执行的计算也可以包括将阶跃/激活函数应用于经调整的加权和。在一些实现方式中,阶跃/激活函数可以是非线性函数。在各种实现方式中,这样的计算可以包括诸如矩阵乘法的运算。在一些实现方式中,可以并行地执行由多个节点进行的计算,例如,使用多核处理器的多个处理器核心、使用gpu的个别处理单元或专用神经电路。在一些实现方式中,节点可以包括存储器,例如,可以能够存储和使用一个或多个较早的输入来处理后续输入。例如,具有存储器的节点可以包括长短期存储器(lstm)节点。lstm节点可以使用存储器来维持“状态”,该状态允许节点像有限状态机(fsm)一样工作。具有这种节点的模型在处理序列数据——例如句子或段落中的词、视频、语音或其他音频中的帧等——时可能是有用的。
84.在一些实现方式中,经训练的模型634可以包括各个节点的权重。例如,模型可以作为被组织成由模型形式或结构指定的层的多个节点来启动。在初始化时,可以将相应的权重应用于根据模型形式而连接的每对节点之间的连接,例如神经网络的连续层中的节点。例如,可以随机地指派相应的权重,或者将相应的权重初始化为默认值。然后,可以例如使用数据632来训练模型以产生结果。
85.例如,训练可以包括应用监督学习技术。在监督学习中,训练数据可以包括多个输入(照片或视频)和针对每个输入(例如,一个或多个重要面部的存在等)的对应的预期输出。基于模型的输出与预期输出的比较,例如以增加模型在被提供类似输入时产生预期输出的概率的方式自动调整权重的值。
86.在一些实现方式中,训练可以包括应用无监督学习技术。在无监督学习中,可以仅提供输入数据,并且可以训练模型以区分数据,例如,将输入数据聚类成多个组,其中,每个组包括以某种方式类似的输入数据,例如,具有在照片或视频帧中存在的类似的重要面部。例如,可以训练模型以将包含重要面部的视频帧或裁切矩形与包含不重要的面部的视频帧或裁切矩形或不包含面部的帧区分开。
87.在一些实现方式中,无监督学习可以用于产生知识表示,例如,其可以由机器学习应用630使用。例如,无监督学习可以用于产生如上参考图4和5所述利用的个性化参数信号。在各种实现方式中,经训练的模型包括对应于模型结构的一组权重。在省略数据632的实现方式中,机器学习应用630可以包括基于例如由机器学习应用630的开发者、由第三方
等进行的先前训练的训练模型634。在一些实现方式中,经训练的模型634可以包括例如从提供权重的服务器下载的一组固定权重。
88.机器学习应用630还包括推断引擎636。推断引擎636被配置成将经训练的模型634应用于诸如应用数据614之类的数据以提供推断。在一些实现方式中,推断引擎636可以包括要由处理器602执行的软件代码。在一些实现方式中,推断引擎636可以指定允许处理器602应用经训练的模型的电路配置(例如,用于可编程处理器、用于现场可编程门阵列(fpga)等)。在一些实现方式中,推断引擎636可以包括软件指令、硬件指令或组合。在一些实现方式中,推断引擎636可以提供应用编程接口(api),该api可以由操作系统608和/或其他应用612使用以调用推断引擎636,例如以将经训练的模型634应用于应用数据614来生成推断。例如,对于重要面部模型的推断可以是例如基于与具有一个或多个重要面部的先前捕获的照片或视频的比较的对视频帧或裁切矩形的分类。
89.机器学习应用630可以提供若干技术优点。例如,当基于无监督学习生成经训练的模型634时,经训练的模型634可以由推断引擎636应用以根据输入数据(例如,应用数据614)产生知识表示(例如,数值表示)。例如,被训练来生成面部信号的模型可以产生具有比输入音频记录(例如,1mb)更小的数据大小(例如,1kb)的调用的表示。在一些实现方式中,这些表示可以有助于减少用于生成输出(例如,标签、分类等)的处理成本(例如,计算成本、存储器使用等)。
90.在一些实现方式中,这些表示可以被提供作为从推断引擎636的输出产生输出的不同机器学习应用的输入。在一些实现方式中,由机器学习应用630生成的知识表示可以被提供给例如通过网络进行进一步处理的不同设备。例如,使用参考图4或5所描述的技术生成的面部信号可以被提供给客户端设备,以用于使用个性化参数的自动视频裁切,如参考图4或5所述。在这样的实现方式中,提供知识表示而不是重要面部的照片或视频可以提供技术益处,例如利用降低的成本实现更快的数据传输。在另一示例中,被训练为对重要面部进行聚类的模型可以从输入照片或视频产生聚类。聚类可以适合于进一步处理(例如,确定重要面部是否存在于视频帧或裁切矩形中等),而无需访问原始照片或视频,并且因此节省计算成本。
91.在一些实现方式中,机器学习应用630可以以离线方式实现。在这些实现方式中,经训练的模型634可以在第一阶段生成并且作为机器学习应用630的一部分来提供。在一些实现方式中,机器学习应用630可以以在线方式实现。例如,在这样的实现方式中,调用机器学习应用630的应用(例如,操作系统608、一个或多个其他应用612)可以利用由机器学习应用630产生的推断,例如,向用户提供推断,并且可以生成系统日志(例如,如果用户允许,则用户基于推断采取动作;或者如果被用作用于进一步处理的输入,则进一步处理的结果)。系统日志可以周期性地——例如每小时、每月、每季度等——产生,并且可以在用户许可的情况下使用,以更新经训练的模型634,例如更新经训练的模型634的重要面部数据。
92.在一些实现方式中,机器学习应用630可以以能够适应于机器学习应用630在其上执行的设备600的特定配置的方式实现。例如,机器学习应用630可以确定利用例如处理器602的可用计算资源的计算图。例如,机器学习应用630可以确定处理器602包括具有特定数量的gpu核(例如,1000)的gpu,并且相应地实现推断引擎(例如,作为1000个单独的进程或线程)。
93.在一些实现方式中,机器学习应用630可以实现经训练的模型的集合。例如,经训练的模型634可以包括各自适用于相同输入数据的多个经训练的模型。在这些实现方式中,机器学习应用630可以例如基于可用计算资源、利用先前推断的成功率等来选择特定的经训练的模型。在一些实现方式中,机器学习应用630可以执行推断引擎636,使得应用多个经训练的模型。在这些实现方式中,机器学习应用630可以例如使用对来自应用每个经训练的模型的各个输出进行得分的投票技术,或者通过选择一个或多个特定输出来组合来自应用各个模型的输出。进一步,在这些实现方式中,机器学习应用可以应用用于应用个体经训练的模型的时间阈值(例如,0.5ms),并且仅利用在时间阈值内可用的那些个体输出。在时间阈值内没有接收到的输出可以不被利用,例如被丢弃。例如,当存在例如由操作系统608或一个或多个应用612在调用机器学习应用时指定的时间限制时,这样的方法可以是合适的,例如基于是否检测到一个或多个重要面部以及其他个性化标准来自动地裁切视频。
94.在不同的实现方式中,机器学习应用630可以产生不同类型的输出。例如,机器学习应用630可以提供表示或聚类(例如,输入数据的数字表示)、标签(例如,用于包括图像、文档、音频记录等的输入数据)等。在一些实现方式中,机器学习模型630可以基于由调用应用——例如操作系统608或一个或多个应用612——所指定的格式来产生输出。
95.存储器604中的任何软件可以可替代地被存储在任何其他合适的存储位置或计算机可读介质上。另外,存储器604(和/或其他连接的存储设备)可以存储一个或多个消息、一个或多个分类法、电子百科全书、词典、辞典、知识库、消息数据、语法、面部标识符(例如,重要面部)和/或在本文描述的特征中使用的其他指令和数据。存储器604和任何其它类型的存储(磁盘、光盘、磁带或其它有形介质)可以被认为是“存储”或“存储设备”。
96.i/o接口606可以提供使设备600能够与其它系统和设备对接的功能。所对接的设备可以被包括作为设备600的一部分,或者可以是分离的并且与设备600通信。例如,网络通信设备、存储设备(例如,存储器和/或数据库106)和输入/输出设备可以经由i/o接口606通信。在一些实现方式中,i/o接口可以连接到接口设备,诸如输入设备(键盘、定点设备、触摸屏、麦克风、相机、扫描仪、传感器等)和/或输出设备(显示设备、扬声器设备、打印机、电机等)。i/o接口606还可以包括电话接口,例如,用于将设备600耦合到蜂窝网络或其它电话网络。
97.可以连接到i/o接口606的接口设备的一些示例可以包括可以用于显示内容——例如图像、视频和/或如本文所述的输出应用的用户界面——的一个或多个显示设备620。显示设备620可以经由本地连接(例如,显示总线)和/或经由联网连接而连接到设备600,并且可以是任何合适的显示设备。显示设备620可以包括任何合适的显示设备,诸如lcd、led或等离子显示屏、crt、电视、监视器、触摸屏、3d显示屏或其它视觉显示设备。例如,显示设备620可以是在移动设备上设置的平面显示屏、在护目镜或头戴式设备中设置的多个显示屏、或用于计算机设备的监视器屏幕。
98.为了便于说明,图6示出了用于处理器602、存储器604、i/o接口606和软件框608、612和630中的每一个的一个框。这些框可以表示一个或多个处理器或处理电路、操作系统、存储器、i/o接口、应用和/或软件模块。在其他实现方式中,设备600可以不具有所示的所有组件和/或可以具有其他元件,包括代替或除了本文所示的那些元件之外的其他类型的元件。虽然一些组件被描述为执行如本文的一些实现方式中所描述的框和操作,但是环境
100、设备600、类似系统或与这样的系统相关联的任何合适的一个或多个处理器的任何合适的组件或组件的组合可以执行所描述的框和操作。
99.本文描述的方法可以通过可以在计算机上执行的计算机程序指令或代码来实现。例如,代码可以由一个或多个数字处理器(例如,微处理器或其他处理电路)实现,并且可以被存储在计算机程序产品上,计算机程序产品包括非暂时性计算机可读介质(例如,存储介质),诸如磁、光、电磁或半导体存储介质,包括半导体或固态存储器、磁带、可移除计算机盘、随机存取存储器(ram)、只读存储器(rom)、快闪存储器、硬磁盘、光盘、固态存储器驱动器等。程序指令还可以被包含在电子信号中,并且作为电子信号提供,例如以从服务器(例如,分布式系统和/或云计算系统)递送的软件即服务(saas)的形式。或者,可以在硬件(逻辑门等)中或在硬件和软件的组合中实现一个或多个方法。示例硬件可以是可编程处理器(例如,现场可编程门阵列(fpga)、复杂可编程逻辑器件)、通用处理器、图形处理器、专用集成电路(asic)等。一个或多个方法可以作为在系统上运行的应用的一部分或组件来执行,或者作为与其它应用和操作系统结合运行的应用或软件来执行。
100.尽管已经关于其特定实现方式描述了本说明书,但是这些特定实现方式仅仅是说明性的,而不是限制性的。在示例中图示的概念可以应用于其他示例和实现方式。
101.在本文讨论的某些实现方式可以收集或使用关于用户的个人信息(例如,用户数据、面部辨别数据、关于用户的社交网络的信息、用户在该位置的位置和时间、用户的生物特征信息、用户的活动和人口统计信息)的情况下,向用户提供一个或多个机会来控制是否收集信息、是否存储个人信息、是否使用个人信息以及如何收集、存储和使用关于用户的信息。也就是说,本文讨论的系统和方法特别地在从相关用户接收到明确的授权时收集、存储和/或使用用户个人信息来这样做。例如,向用户提供对程序或特征是否收集关于该特定用户或与该程序或特征相关的其他用户的用户信息的控制。向要收集其个人信息的每个用户呈现一个或多个选项,以允许控制与该用户相关的信息收集,提供关于是否收集信息以及关于要收集信息的哪些部分的许可或授权。例如,可以通过通信网络向用户提供一个或多个这样的控制选项。另外,某些数据可以在其被存储或使用之前以一种或多种方式被处理,使得个人可识别信息被移除。作为一个示例,可以处理用户的身份,使得不能确定个人可识别信息。作为另一示例,用户设备的地理位置可以被推广到更大的区域,使得用户的特定位置不能被确定。
102.注意,如本领域技术人员所知,本公开中描述的功能框、操作、特征、方法、设备和系统可以集成或划分为系统、设备和功能框的不同组合。任何合适的编程语言和编程技术可以用于实现特定实现方式的例程。可以采用不同的编程技术,例如过程的或面向对象的。例程可以在单个处理设备或多个处理器上执行。尽管步骤、操作或计算可以以特定顺序呈现,但是在不同的特定实现方式中可以改变顺序。在一些实现方式中,在本说明书中被示为顺序的多个步骤或操作可以同时执行。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献