2 Star 48 Fork 18

天涯 / RobustVideoMattingGUI

 / 详情

程序无限量占用内存

待办的
创建于  
2023-09-13 03:34

raceback (most recent call last):
File "C:\Users\louis\Documents\RobustVideoMatting-106\gui_runrvm.py", line 123, in RVMrun
globalenv.fgr_list,globalenv.pha_list=convert_video(self,
File "C:\Users\louis\Documents\RobustVideoMatting-106\inference.py", line 375, in convert_video
for src in reader:
File "C:\Users\louis\AppData\Roaming\Python\Python310\site-packages\torch\utils\data\dataloader.py", line 633, in next
data = self._next_data()
File "C:\Users\louis\AppData\Roaming\Python\Python310\site-packages\torch\utils\data\dataloader.py", line 677, in _next_data
data = self._dataset_fetcher.fetch(index) # may raise StopIteration
File "C:\Users\louis\AppData\Roaming\Python\Python310\site-packages\torch\utils\data_utils\fetch.py", line 51, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "C:\Users\louis\AppData\Roaming\Python\Python310\site-packages\torch\utils\data_utils\fetch.py", line 51, in
data = [self.dataset[idx] for idx in possibly_batched_index]
File "C:\Users\louis\Documents\RobustVideoMatting-106\inference_utils.py", line 82, in getitem
return self.transform(img)
File "C:\Users\louis\AppData\Roaming\Python\Python310\site-packages\torchvision\transforms\transforms.py", line 137, in call
return F.to_tensor(pic)
File "C:\Users\louis\AppData\Roaming\Python\Python310\site-packages\torchvision\transforms\functional.py", line 174, in to_tensor
return img.to(dtype=default_float_dtype).div(255)
RuntimeError: [enforce fail at ..\c10\core\impl\alloc_cpu.cpp:72] data. DefaultCPUAllocator: not enough memory: you tried to allocate 24883200 bytes.

测试过几台电脑,内存256G都被无限增长的内存撑爆了。可能是内存释放问题。

评论 (1)

louisknok 创建了任务

这个问题之前有B站的小伙伴遇到过,我感觉应该是视频解码器的问题,在进行抠像之前,视频解码器要把所有的视频都读入内存,并且解码为tensor,这时候每一帧都相当于没有压缩,以1920x1080分辨率计算,每一帧的数据可能就有十几兆,如果视频比较长,就会出现这种情况,解码过程就会占据大量的内存;同时,为了给手动编辑提供数据源,抠像后的每一帧tensor数据,都会放在内存中,一旦帧数过多,也会占据大量的内存,但应该不是无限制增长,之前的那个小伙伴后来虚拟内存设为300G才够用。
而且我使用RVM进行训练的时候也出现了内存极具增长的情况,我当时仅仅跑第一个stage就用了300G的虚拟内存。
所以建议你可以先把视频截成小段,扩大固态盘上的虚拟内存,再试一下,看看是否可以暂时解决此问题。
这个问题理论上应该能够解决,比如采用抠一帧读一帧的方法,但是对程序的改动太大,所以短时间内可能还无法从根本上解决。

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
Python
1
https://gitee.com/ymfjly/RobustVideoMatting.git
git@gitee.com:ymfjly/RobustVideoMatting.git
ymfjly
RobustVideoMatting
RobustVideoMattingGUI

搜索帮助