-
Notifications
You must be signed in to change notification settings - Fork 147
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
建议和bug #241
Comments
|
感谢回复,已修改源码达到效果。 |
bug已修复 |
还有两个问题: 切换模型的时候会初始化一次,当使用视频分割的时候,似乎又初始化了一次。软件开启后必须先选择模型,然后在载入图片才不会出错,如果先载入了图片,而且图片又有很多的话在选择模型就会报错。 2.非常严重的问题,模型初始化导致内存分配失败。 代码似乎是一次性把全部的图片都读入到内存进行初始化了,如果当前有很多图片的话就会导致内存分配失败,不管是使用 视频分割1帧或者5帧又或者全部,都会报错。能否改成分批次加载啊。 |
|
我的意思是能改成分批处理吗?例如每100帧看作一个视频?这样是不是就能解决大量图片情况下内存分配失败? |
直接一百帧分一个文件夹标注不就好了? 身为一个很多人都在用的软件,代码逻辑没法改成你说的这个样子的。 |
逻辑改成这样也不会影响sam分割视频的连贯性啊,而且还能解决内存分配失败的问题,这么优秀的软件存在这么低级的错误很不合理呀。 |
这个不是逻辑错误。 假设情景,标注一个有1k帧的视频。 按提供的那个逻辑,一次加载100张,这时就会有问题:
不论是时间,还是稳定性,都不是一个标注软件能接受的。 按现在逻辑是没有任何问题。只有一个问题:视频帧太多时,对内存要求会比较高。 针对这个问题ISAT已经优化过了,计算以后就把特征卸载到内存中,现在只是占用内存高,否则占用显存,会有更多设备跑不了的。 并且这个问题很好解决:用户只需要针对自己设备性能,手动划分个文件夹就解决了。 |
感谢您的详细解答和对问题的分析!针对您提到的分批处理可能引发的连贯性与逻辑复杂性问题,我想进一步补充我的观点,并说明我的优化建议如何避免这些问题。
分割 1 帧或少量帧(如 5 帧)时: 默认批次大小(如 100 帧):
分批释放内存:每处理完一批帧,立即释放该批次的数据,避免内存占用累积。 解决内存分配失败的问题:通过分批加载,降低内存占用,适配更多设备。 再次感谢您的时间和耐心解答! |
主要问题出在于SAM2需要将视频分割的帧加载一次,也就是init_state操作。 现在的逻辑,卡顿一次,后续的标注操作会特别流畅;如果改动了,标注过程中不定时的卡顿会特别难受。 核心问题只存在于init_state操作,想分割哪些帧,就必须对这些帧做一次init_state。把这个操作放到标注过程中,没规律的卡死真的很影响体验。 并且这个操作,没法放到一个单独的线程中去计算。(如果你看过代码,应该发现,sam单图分割的特征计算都是单独的线程在后台计算的,这是ISAT标注过程中不卡顿的主要原因) |
快捷键繁琐,建议改为快捷键 “Q”为双重功能按键,按下“Q”进入标注编辑状态,再次按下“Q”完成标注(“E”键功能)并保存("S"键功能)。快捷键“A”(上一张图片)和“D”(下一张图片)改为 自动检测当前是否是标注编辑状态,如果是的话自动完成标注状态并保存,然后在载入下一张图片或者上一张图片。然后载入上一张或者下一张图片后自动进入上次的状态,例如 自动进入标注编辑状态(“Q”键)这样的话标注起来效率能提升不少,只需要按下一个快捷键(D或者A)就能完成标注并且保存。
bug:
使用 工具-数据转换-自动分割[基于标注框] 的时候生成的 ISAT格式的json文件中的 info.width、info.height、info.depth字段的数据类型是字符串,和工具手动标注生成的 ISAT格式的json不一致,导致使用 自动分割[基于标注框] 生成的 ISAT格式文件无法进行使用其他工具栏里面的数据转换工具。例如VOC。
The text was updated successfully, but these errors were encountered: