欢迎光临散文网 会员登陆 & 注册

USB摄像头动作捕捉程序使用说明

2020-06-20 02:20 作者:伴学iclone教学  | 我要投稿

什么是ThreeDPoseTracker

ThreeDPoseTracker是Windows 10的应用程序,它使您可以仅使用USB摄像机或舞蹈视频来捕获运动。如果是笔记本电脑,则使用内置摄像头不需要任何其他设备。但是,它需要一个稍微(漂亮)的强大图形环境。具体来说,我想要GTX1050或更高版本。即使小于此值,我也认为它不会起作用,但是会很慢。

为了更详细地说明该应用程序,我们使用了一种姿势估计模型(主干为ResNet-34),该模型通过机器学习从图像中输出人体的3D关节坐标,并从视频或摄像机图像中计算出关节坐标。进行估算,并根据该值来化身。
最初,我试图累加各种功能,但是由于它处于没有太多保留的状态,因此我停止了在中间编写的代码,只提取了这次可以使用的功能v0总结为.1.0。

操作环境

已确认Windows10 Pro Ver.1909 Core
i7-7700HQ
内存16G
图形卡GTX 1070
可正常工作。
我认为CPU和GPU可能会更弱一些。GTX1060或1050,速度稍慢,但我认为它可以工作。在上述环境中约为20Fps。RTX2070 Super的工作速率约为30 Fps。我们还为没有图形卡的PC提供了低质量模型,该模型需要轻便,但要以估计精度为代价,但要以准确性为代价。您可以感受到气氛。您仍然需要现代的CPU。如果您想尝试,请参阅下面的尝试低质量模型。

安装

让我们立即安装它。从下面的URL下载zip文件。

https://digital-standard.com/threedpose/ThreeDPoseTracker_Win_x64_v0_1_0.zip

下载并解压缩以创建一个名为“ ThreeDPoseTracker_Win_x64_v0_1_0”的文件夹。
由于没有安装文件等,请将该文件夹放置在桌面上或您喜欢的任何位置。
该文件夹中的“ ThreeDPoseTracker.exe”是可执行文件。执行后,将显示Windows保护对话框。
通过单击屏幕上的“详细信息”并单击“运行”按钮来执行。

屏幕说明

启动时,将显示以下屏幕。

首先,让我们继续前进,不要考虑任何事情。请从下面的URL下载示例视频。
https://github.com/digital-standard/ThreeDPoseUnityBarracuda/blob/master/Assets/Video/onegai_darling.mp4

下载后,单击屏幕顶部的“加载电影”,然后将打开文件加载对话框,选择之前下载的onegai_darling.mp4。

片刻之后,将播放一个心愿舞蹈的视频(该视频是* Ako的“ [Akochin]请亲爱的[我试过跳舞] https://www.youtube.com/watch?v=我们在征得本人同意的情况下使用 “ tmsK8985dyk ”视频。请避免二次使用。
并通过此视频,Unity-chan成功开始跳舞,并成功开始。如果到目前为止有错误,Unity-chan无法正常工作,等等,如果PC的规格不足,或者规格应该足够,则需要尝试从Github上的源启动..

功能说明

从这里,我们将解释ThreeDPoseTracker的功能。
下面显示的菜单显示在屏幕顶部。

①输入装置

在此设置输入设备。仅mp4视频文件和USB摄像机可以用作输入。如果在启动应用程序时连接了USB摄像头,则摄像头名称将添加到此下拉菜单的第二个及后续项目中。请注意,即使在应用程序启动后连接了相机,也不会反映出来。有关更多信息,请参阅视频文件和使用USB摄像机中的估计一章。

②应用程序设置(配置)

ThreeDPoseTracker显示一个对话框,用于配置整个应用程序的设置。有关设置的详细信息,请参阅下面的“配置”屏幕。

③头像设置(头像)

使用ThreeDPoseTracker,您可以添加由Vroid Studio创建的VRM文件。您可以从下拉菜单中选择要使用的头像。您还可以设置每个化身的显示大小和显示位置,以及骨骼的显示/不显示。有关详细信息,请参见头像屏幕。

④保存运动(记录BVH)

记录并保存BVH格式的运动数据。FPS在操作过程中显示FPS值,因此在创建运动时请参考该值。

⑤关闭(关闭菜单)

关闭菜单。通过按ESC键或空格键,可以不同地显示已关闭的菜单。
如果在隐藏菜单时单击鼠标左键,相机位置将如下图所示更改(第四次还原)。使用鼠标滚轮进行缩放,然后单击鼠标右键以切换头像。一个小的播放功能已被添加。我认为将来会消失。

视频文件估计

要从电影文件进行估算,请在源设备设置为“电影文件”的情况下单击“加载电影”按钮。当文件选择对话框打开时,选择mp4视频文件。选择后,视频将被加载并自动播放。在视频开始播放和估算开始之间存在一点时间间隔(如果规格不够,可能会花费很长时间)。如果要从视频的开头开始,则必须提前在视频的开头添加空白时间,或者重复播放该视频并从第二次开始使用它。
另外,在电影回放委员会中的“加载电影”按钮旁边显示“暂停”按钮,帧数/总帧数和“跳过”按钮。按下“暂停”按钮可暂停视频。再按一次可恢复。但是,此时,化身开始移动之前会有一个滞后。您可以通过输入帧数并在暂停期间按“跳过”按钮来移动指定的帧。当您按下“暂停”按钮时,播放从该帧开始,但是仍然存在延迟。

使用USB相机

如果在启动应用程序时将USB摄像头连接到PC,则这些摄像头将被添加到源设备的下拉列表中。选择要使用的摄像机,然后单击“启动摄像机”按钮以切换为来自摄像机的输入。如果要切换到其他摄像机或视频,可以再次选择将其更改。但是,如果您做得太多,就会生病。

做出好的估计

不幸的是,它不是可以从任何图像执行完美姿势估计的人。但是,如果在某种程度上满足条件,则可以像在示例影片中那样估计它,并且可以将其用作运动捕捉。我想在这里展示这些条件。

①一个人

只能估计一个主题。越靠近中心,灵敏度越好。以下是肢体,但在下图中显示两个人时,将估计图像左侧的人的姿势。这可能是因为它靠近中心(但并非总是如此)。

此外,在该图像中,在估计右脚方面存在问题。左边的人是主要人物,但是右边的人的右脚则靠近中心。因此,右脚的位置将是右边人的脚。这不是因为当前使用的机器学习(AI)模型正在学习人体的结构(连接),而是仅通过选择看起来像手臂或腿的图像模式即可。采用中心侧的脚。但是,在电影和照相机的情况下,如果它在移动,可能会变得模糊或看不清,并且会受到图像的极大影响。无论如何,单独解决都不会发生这样的问题。

②拍下全身照

无论如何,请确保可以看到整个身体。启动应用程序时,左上角会显示一个白色小窗口(请参见下图)。执行后,背景中显示的一部分视频被剪切并显示在此小窗口中。此处显示的图像将是AI的输入数据。如果整个身体都不适合该图像,则无法正确估计。从样本电影的大小来看,可以将它放大一些,但是当它靠近时,如果举起手,它会伸出来。如果您举起双手并且指尖伸出,则太大了。在很多情况下都没有问题,但是如果结果看起来很激烈,则可以通过稍微降低它或在输入图像尺寸的设置屏幕(稍后描述)上将Source Cut Scale设置为0.9或0.8来改善结果。即使距离较远,也可以根据图像垂直尺寸的50%进行判断。几乎无法估计距离是否比该距离更远(因为距离不在首位的学习数据中,所以无法得知距离)。对于普通相机,必须将其分开2 m或更大。

③简单的背景

希望您理解这一点,但是背景应该很简单。有点凌乱也可以,但是特别是如果这个人后面没有东西,那么准确性会更好。例如,在下图的情况下,无法看到人的右臂。并且在该图像的情况下,杆状物体从肩部伸出。由于看不到右臂,因此我可以主动搜索右臂并判断这是右臂。有东西)。我在上一章中写道,我没有研究身体的连接,但似乎有点担心。另外,即使在脚下或双脚之间有物体,也会有许多错误的识别。

④简单的衣服

您也可以理解这一点,但是最好还是简单一些。我觉得panchi很好,但有些人可能不行。最好穿背景颜色不同的裤子和T恤,这样您就可以清楚地看到自己的身材。牛仔裤也很好。
长裙特别糟糕。我不知道我的脚的位置。此外,除了短裙之外,它很难。只要您面向前方,短裙就可以了,但是如果您打开双腿并转向侧面,则决定会很尴尬。下图显示了人类可以判断左脚和右脚,但是对于机器而言却相当困难。如果双脚进一步张开,会变得很烦人(有些人即使看到也不会知道)。如果在上面穿黑色紧身裤,则很难理解前后关系。黑色紧身裤的水平裙摆是一个恶魔之门。有很多。如果您对左脚和右脚的识别不正确,您的脚会颤动很多,并且外观会很差。
您要面对的是向前还是向后,在很大程度上取决于您是否可以看到自己的脸(这似乎不能仅凭脸来判断)。当一个长发跳舞时,脸通常是隐藏的。这时,如果判断为向后,则该帧的左右将交换,因此化身将是暴力的。另外,如果您在头后部戴上鲜艳的或花哨的帽子,即使您面朝后,也可能被判断为朝前。

⑤关于视频

快速动作和舞蹈的视频意外地模糊,并且没有显示四肢(请参见下图)。即使在某种程度上看不到,我仍在学习估计,但是有一个限制。在体育视频中,您可能看不到几乎所有的手臂动作。在这种情况下,必须事先设计慢速记录。此外,在运动过程中对特殊姿势(例如高脚踢和动作)的识别也相当不准确(尽管其中包括了一些,但也未包含在学习数据中)。
此外,视频将在彩色方面提供更好的效果。如果只有黑白,这是不可避免的(我在工作中对黑白模型进行了重新训练,最好是更准确地学习黑白)。

⑥其他

无法准确估计坐姿,尤其是坐姿,三角坐姿或睡眠姿势。我也不擅长倒立。另外,正如我在上面所写,如果您鞠躬致使看不到自己的脸,您将无法确定其正面和背面,并且会产生暴力。

配置画面

本节介绍用于为整个应用程序进行设置的“配置”屏幕。

   显示源图像
设置是显示还是隐藏作为源设备显示在整个屏幕上的视频以及USB摄像机的图像。

显示输入图像

  • 将输入图像的显示/不显示设置为AI(左上方的小窗口)。

  • 放下跳过
    播放电影时,请跳过打开电影时未处理的帧。如果将其关闭并播放,将播放所有帧,因此,如果处理缓慢,则播放将是慢动作。

  • 电影文件重复播放模式
    播放电影时,如果将其打开,则会重复播放电影。

  • 使用Camaera时的镜像使用
    USB相机时,如果相机的输入打开,则其输入将处于镜像状态。

  • 源剪切比例
    输入图像以源图像图像高度为1的比例剪切。例如,如果视频中的人物太小,请指定1或更大的值以将其放大。

  • 源剪切中心位置
    从以源图像的中心为原点,图像高度为1的比率指定的位置切出输入图像。如果视频的右侧有跳舞的人,请调整位置,使其成为中心。下图显示了为x的移动量指定0.3的情况,它是上图中的放大倍率下的外观差异。想象一下,显示图像的相机以0.3的纵横比向右移动。如果它是负值,它将向左移动,并且Y轴也应如此。

  • 低通滤波器
    这是用于抑制跳跃和水泡的滤波器。如果是高度质量模型,则0到0.2是合适的。越大,变得越平滑,但是延迟和移动变得松散。

  • 训练有素的模型
    选择用于姿势估计的模型。如果规格足够,请选择“高度质量”。如果您更改此项目,请重新启动应用程序。如果规格不足,请参阅下面的“尝试低质量”模型。

  • 恢复设置将
    设置恢复到初始状态。头像设置也将被初始化。请直接退出应用程序。

  • 使用Unity Video Capture启用
    Unity Video Capture。这将使当前显示的屏幕(不包括菜单和设置屏幕)成为USB摄像机的输出,以便可以将其作为其他应用程序(如Zoom(虚拟摄像机))作为摄像机输入来处理。有关详细信息,请参阅使用Unity Capture进行缩放输出。

  • 显示背景
    设置显示还是隐藏应用程序背景图像。默认图像是外国城堡的图像。

  • 背景图像文件
    切换背景图像。如果不存在图像或该项目为空,则将显示默认图像。

  • 背景比例调整
    背景图像的尺寸。由于无法更改图像位置,因此请更改原始图像以调整位置。

  • 背景颜色如果
    隐藏所有源图像,输入图像和背景图像,则它将变为纯色背景。可以使用RGB(0至255)指定背景色。当您不想在绿色背景或背景上放置任何东西时,请使用。

  • 使用VMC协议使用VMC协议
    发送化身骨骼信息和虚拟跟踪器。这是示例代码。不发送混合形状。无法接收VMC协议。它仍然是一个测试实现,但是我已经确认到EVMC4U可以接收数据(实际上,我对此了解不多)。

  • IP
    指定运行VMC协议服务器的PC的IP地址。通常,应保留原样的127.0.0.1。

  • 端口
    指定VMC协议服务器的端口号。我不知道正常数字是多少,但是大概是39539。

  • Rot
    ThreeDPoseTracker的背面朝后旋转180度。通过检查进行180度校正。

  • “确定”,“取消”和“应用”
    对话框是半透明的,并且不通过“应用”按钮关闭屏幕即可反映状态,因此您可以在检查时进行设置。使用“确定”和“应用”按钮保存设置。

尝试低质量模型

如果您的PC没有足够的规格,请使用低质量型号。从“配置”屏幕上的“训练模型”下拉菜单中选择“低质量和更快”,然后重新启动应用程序。 不幸的是,低质量模型在姿势估计方面非常不准确,但是它以高速运行。即使在没有图形卡的PC上也可以使用。但是,除非在某种程度上是新CPU,否则它可能无法工作(如果没有i5-7500的图形卡,则约为12 fps。使用i3或更低版本可能很难运行)。请认为您可以理解它的感觉。实际上,我并没有真正意识到存在各种各样的落后和背景。 相反,在高规格PC上运行低质量模型还为时过早。由于移动也会剧烈,因此请将其设置为低通滤波器的0.5或更大的极值。但是,我认为移动它没有太大意义。此应用程序中使用的模型仍有准确性的空间。特别是,我们希望提高此低质量模型的准确性。


使用Unity Capture进行缩放输出

如果启用Unity Video Capture,则可以将屏幕图像输出到使用相机的应用程序,例如“缩放”。但是,您需要在PC上安装Unity Capture驱动程序。从下面的Github存储库中使用DownloadZip下载zip文件。解压缩后,以管理员权限执行InstallCustomName.bat。您也可以更改相机名称。此应用使用此批处理文件的默认名称Unity Video Capture。
在“缩放”侧,通过将相机设置为Unity Video Capture来显示ThreeDPoseTracker的屏幕。但是,缩放的分布会大大降低图像质量,因此详细的细节将丢失。如果与“缩放”共享屏幕,则将清晰输出图像质量,但将以15 fps的速度输出。
不幸的是,如果启用了Unity Capture且ThreeDPoseTracker窗口返回到后面,则下次激活该窗口时,屏幕将变成白色且稳定。由于操作继续进行,因此分发没有问题,但是您无法更改设置等。请关闭窗口并强制其完成。原因目前未知。从一开始使用OBS可能会更快。
https://github.com/schellingb/UnityCapture

头像

使用ThreeDPoseTracker,您可以切换和操作多个化身。可以通过从头像的下拉菜单中选择头像来进行更改。在初始状态下,将unity-chan和yukihiko-chan(我的真实头像)作为样本包括在内。请不要以违反公共秩序和道德的方式使用它们。

添加头像

ThreeDPoseTracker可以VRM格式添加化身。它主要基于VRoid Studio创建的VRM文件。首先,从下面下载示例Tait.vrm文件。
https://github.com/digital-standard/ThreeDPoseTracker/tree/master/Avatars

下载完成后,单击“添加头像”按钮。显示如下所示的对话框。单击“文件”按钮,然后选择您先前下载的Tait.vrm文件。可以保留其他项目(此屏幕上的项目与下一部分的“头像设置”屏幕相同,因此请参阅该屏幕)。单击“添加”按钮以关闭对话框,并等待一会儿以加载VRM文件并切换化身(这将需要一段时间)。新加载的头像将添加到下拉菜单的最后一行。此后,它将按添加顺序增加,但是如果添加过多,将需要一些时间才能开始。

头像设置

本节介绍可为头像设置的项目。

  • VRM文件
    指定VRM文件所在的文件路径。“文件”按钮打开一个选择对话框。如果在启动时找不到该文件,则不会读取该文件。如果在应用程序运行时对其进行更改,它将反映在应用程序重新启动的地方。

  • 头像名称
    设置在头像下拉菜单中显示的名称。

  • 默认位置
    设置头像的显示位置。例如,如果要在视频中排列舞者和化身,请将X指定为0.8,它将看起来像化身和舞者。

  • 深度比例
    设置前后的移动比例。ThreeDPoseTracker不会告诉您人距相机多远。深度的原点始终是腰部位置和相对值(垂直和水平是图像坐标)。因此,确定是否以从高度计算的速率来回移动,无论距离是远还是近。幸运的是,可以获得3D距离,因此即使身体弯曲,也可以计算出大约的高度。当您跳舞或跳跃时,一个人的身体会伸展很多,但是那一面是粗糙的。.. .. 前后移动不是简单的比例,而是当前的简单比例。您可以在此处更改比例。增大此值将在前后前后稍稍更改该值。

  • 比例
    显示化身的大小。尺寸越大,头像越大。

  • 面部方向
    校正化身的面部方向。在大多数情况下,您只需要微调y。如果您输入一个负值,它应该向上旋转,但不能正常工作。重新启动应用程序后,设置将反映出来。

  • 骨架
    姿势估计AI结果以绿线(Skeleton)显示(严格地不仅限于AI结果)。切换显示/不显示。

  • 默认位置
    设置骨骼的显示位置。

  • 比例
    设置骨架的大小。

  • 删除
    从菜单中删除加载的头像。无法删除unity-chan和yukihiko-chan(下一发行版中可能不包含unity-chan)。

  • “确定”,“取消”和“应用”
    对话框是半透明的,并且不通过“应用”按钮关闭屏幕即可反映状态,因此您可以在检查时进行设置。使用“确定”和“应用”按钮保存设置。

保存动作

可以通过单击菜单中的“记录BVH”按钮以BVH格式保存运动。但是仍然是测试实现。当您单击“ Record BVH”按钮时,显示将变为Recording,并开始记录。再次单击退出,将打开保存对话框。可以使用Blender等将运动文件读取为运动数据。

Yukihiko Aoyagi@yukihiko_a

たまにThreeDPoseでモーションを保存したいと問合せが来るので試してみました(聞かれても全く知らない)。BVH Toolsを使ってBlenderに持って行ってみたけど何とかなるかな。コードちょっと直さなあかんな。

1410:54 PM - Jun 12, 2020Twitter Ads info and privacy

See Yukihiko Aoyagi's other Tweets

最后

最初,我只是将它作为一种业余爱好,所以我在玩耍时添加了许多无用的功能,但是我曾经丢失了这些代码,并将它们放到可以直接使用的应用程序中。由于存在很多错误,并且尚未确定应用程序的方向,因此它是v0.1.0的预发布版本。如果将其作为应用程序放在一起,则公司可能会发布正式版本。
顺便说一句,此应用程序的源位于以下存储库中(正在构建中)。请遵循Github上写的许可证以获得代码许可证。我还负责姿势估计,因此并非全部免费。如果要添加功能并将其用于商业目的,请购买许可证或申请工作。如果您确实要免费添加功能并将其用于商业用途,则此应用程序版本将免费提供,因此,如果您请求合并或提取请求,则可以将其添加到应用程序中并在以后发布(不能保证提供担保)。 )。

https://github.com/digital-standard/ThreeDPoseTracker

我将来可能会做的事情

  • 向前和向后的运动都太合适了,因此请正确计算运动

  • 我想改善肘关节的弯曲度。这可能是不可能的

  • 手腕的旋转仍然很奇怪。固定

  • 我设法从左到右切换腿。我认为这可以通过逻辑来完成

  • 妥善保存动作

  • 全面的VMC协议支持。也许我不会这样做

  • 估算过程太繁琐。如果可以改进,我想输出到OpenVR

  • 其他附加功能(例如在后台显示电源背景)

  • Yukihiko Aoyagi@yukihiko_a

    姿勢推定・アバターを使って登壇システムを作ってみました。次のLTはこれでやる(予定は無いけれど)。

    LT風のデモです。夜中に一人LTはツライ。
    音声あり、Zoomの録画機能での動画です。

    422:00 AM - May 31, 2020Twitter Ads info and privacy

    See Yukihiko Aoyagi's other Tweets

执照

无论是否获利,都可以随意使用ThreeDPoseTracker的此可执行文件。使用此可执行文件的分发和运动数据也可以免费获得。
请遵循Github上的许可以获取Github上的源代码。


USB摄像头动作捕捉程序使用说明的评论 (共 条)

分享到微博请遵守国家法律