williamfzc / stagesepx

detect stages in video automatically
MIT License
432 stars 125 forks source link

三个参数与字典结果 #144

Open Supercool-p opened 4 years ago

Supercool-p commented 4 years ago

训练为三个文件夹,预测后字典结果中有有时没有key=0 有时没有key=1 有时只有key=-3和key=1 已经尝试过 0.97 1 6/ 0.97 2 6/ 0.97 3 6的参数组合

williamfzc commented 4 years ago

这里的123跟6是什么? 通常还是因为训练集太少或选得有问题,最好发一下截图跟代码之类的看下

Supercool-p commented 4 years ago

博主你好,根据你的文章我理解的是训练后人工分拣为 名为0 1 2的三个文件夹,预测下一个视频,字典中的key 的值应该包含 -3 0 1 2,-3代表不稳定的阶段,0 1 2分别对应之前的0 1 2文件夹。

这里的123 6 :6代表block块 1/2/3是offset数量

因为保密的要求没法把训练截图发上来,我大概描述一下:我开启了点击手机屏幕时显示十字坐标的功能,场景是断网情况下打开微信,人工分拣为三个文件夹,第一个文件夹是点击前,第二个文件夹的第一张图片是十字刚出现的那一刻,第三个文件夹是微信聊天界面。录了五个启动微信视频进行训练。

还 ![Uploading 21AED76B-37B7-417D-998C-0F843E712AE1.jpeg…]() 有一点,我的视频本来是竖着的,训练出来的图片都被逆时针旋转了90°,但我感觉应该没有影响。

电脑上访问github有点卡,所以代码拍照放上来了。

williamfzc commented 4 years ago

字典中的key 的值应该包含 -3 0 1 2,-3代表不稳定的阶段,0 1 2分别对应之前的0 1 2文件夹。

不一定,完全可能存在某个类别在这个视频里没出现的情况,只要模型觉得不像

6代表block块

有点多,默认值其实就够了,不过也不是大问题有一点,我的视频本来是竖着的,训练出来的图片都被逆时针旋转了90°,但我感觉应该没有影响。

有一点,我的视频本来是竖着的,训练出来的图片都被逆时针旋转了90°,但我感觉应该没有影响。

这可能是个问题。如果你的训练集与视频的方向不一样,再经过压缩,可能他们就长得完全不一样了。按理来说训练不会旋转你的图片,你可以看看视频的分辨率与训练集的分辨率是否一致。

Supercool-p commented 4 years ago

我是同一时间录的六个视频,被预测的视频生成的文件夹里面的图片也是被旋转过了。

预测视频与训练集视频非常相似,也会出现模型觉得不像导致结果不一定包含012 3个key值吗?

训练集用的视频和预测视频是同一时间录的,不存在分辨率不同的情况。

williamfzc commented 4 years ago

图片好像没上传完就发上来了;

也会出现模型觉得不像导致结果不一定包含012 3个key值吗?

一般不会所以才怀疑是旋转的问题

训练集用的视频和预测视频是同一时间录的,不存在分辨率不同的情况。

代码库里没有旋转的逻辑,我觉得问题应该还是在被旋转上; 我意思是可以看下训练集的图片的分辨率方向是不是跟视频一样(比如720x1080而图片是1080x720就代表被旋转了); 验证的话,你可以将这些图片转回去再训练看看;

Supercool-p commented 4 years ago

5A73F447-EE52-47E8-8601-11BA0F42C9D2 DD23F451-4C95-4982-A6EC-4F10D5B43326 4120AA98-4A03-4FBD-AB92-AEE36FC35A6A

嗯嗯,看了下,看似旋转后的图片实际上分辨率和视频分辨率是一样的

williamfzc commented 4 years ago

是用外置摄像机拍摄的视频吧?相机拍摄的屏幕很容易受到影响与干扰 https://github.com/williamfzc/stagesepx/issues/143#issuecomment-708144794

Supercool-p commented 4 years ago

是的,主要是录屏会影响performance

williamfzc commented 4 years ago

是的,主要是录屏会影响performance

常规设备的话其实软件录制后用ffmpeg处理,误差是很小的,可以测量一下; 非常规设备可能要另想办法,如果需要外部拍摄,可以参考下链接里提到的建议试一下

Supercool-p commented 4 years ago

博主好,我还是用的外置相机,尽量控制外界因素了

1.训练集共3个文件夹,0文件夹为点击前,1为点击时,3APP界面。得出的结果: stage=1的第一个时间戳为0.03,也就是按下APP icon的那一瞬间,但在forecast文件夹中看到按下APP icon那一瞬间应该是的时间戳应该是0.83,而在result dict中看到0.83被划为stage=0了。stage=0类的时间戳全部大于stage=1的。出现这种情况还是因为视频质量原因是吗?视频已经用ffmpeg处理过了。

2.关于训练集的分拣,我设置了点击时出现十字架,所以在第二个文件夹也就是一号文件夹中会出现点击界面(含十字架的)+点击后(十字架消失)界面,点击后(十字架消失)界面和0号文件夹似乎更相似,这会造成最终结果的判断失误吗?

  1. 请教一下工具对帧进行判断的原理,icon在点击后会比点击前稍稍大一些 stagesepx在应该训练后应该能察觉到这个差别,对于外置相机的录制方法,会不会存在下一次外置录像,镜头拉得远了一点icon在视频里表现出小一些导致结果不准确

  2. 一个训练集里是否只能有一个APP的图片,不同APP要分开训练生成不同的模型吗

感谢博主

williamfzc commented 4 years ago

1.2. 我大概明白你的场景了,对于这种应用启动,最好选 第一个不稳定阶段 来衡量,而不是稳定阶段。这样即便分错了也没影响。

可以参考下这篇文章,对于整个原理可能会有更清晰的理解:https://blog.csdn.net/wsc106/article/details/107351675