Spaces:
Build error
Build error
File size: 1,431 Bytes
077d557 de2aa9b ba4d1a9 b25a6ce e50e349 e6399c3 ba4d1a9 b03366b ba4d1a9 077d557 6ef9294 d4ae210 1a37b1b d4ae210 e50e349 d4ae210 b25a6ce 3c4c507 b25a6ce 6db6005 b25a6ce 3c4c507 b25a6ce 6ef9294 5be44ed ce6434e 9444948 b25a6ce 3ba8a2d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
import spaces
import gradio as gr
import cv2
import numpy as np
import gc # For manual garbage collection
from PIL import Image
from transparent_background import Remover
remover = Remover()
@spaces.GPU
def doo(video):
cap = cv2.VideoCapture(video)
fps = cap.get(cv2.CAP_PROP_FPS)
processed_frames = 0
writer = None
while cap.isOpened():
ret, frame = cap.read()
if ret is False:
break
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img = Image.fromarray(frame).convert('RGB')
if writer is None:
writer = cv2.VideoWriter('output.mp4', cv2.VideoWriter_fourcc(*'mp4v'), fps, img.size)
processed_frames += 1
print(f"Processing: {processed_frames}")
out = remover.process(img, type='green')
writer.write(cv2.cvtColor(np.array(out), cv2.COLOR_BGR2RGB))
# Release GPU memory after processing a certain number of frames
if processed_frames % 100 == 0:
processed_frames = 0
del out # Delete the variable holding the processed frame
writer.release()
gc.collect() # Perform manual garbage collection to release GPU memory
print("Memory reset")
cap.release()
writer.release()
return 'output.mp4'
iface = gr.Interface(fn=doo, inputs="video", outputs="video")
iface.launch()
#
|