Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -12,17 +12,20 @@ import spaces
|
|
| 12 |
ver=[0,0,0,0,0,0,6,7,8,9,10,11]
|
| 13 |
ltr=["n","s","m","1","x"]
|
| 14 |
tsk=["","-seg","-pose","-obb","-cls"]
|
| 15 |
-
#yolov8s.pt
|
| 16 |
-
modin=f"yolov{ver[9]}{ltr[1]}{tsk[0]}.pt"
|
| 17 |
-
model = YOLO(modin)
|
| 18 |
annotators = ["Box","RoundBox","BoxCorner","Color",
|
| 19 |
"Circle","Dot","Triangle","Elipse","Halo",
|
| 20 |
"PercentageBar","Mask","Polygon","Label",
|
| 21 |
"RichLabel","Icon","Crop","Blur","Pixelate","HeatMap"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
@spaces.GPU
|
| 24 |
-
def stream_object_detection(video):
|
| 25 |
-
SUBSAMPLE=
|
| 26 |
cap = cv2.VideoCapture(video)
|
| 27 |
# This means we will output mp4 videos
|
| 28 |
video_codec = cv2.VideoWriter_fourcc(*"mp4v") # type: ignore
|
|
@@ -40,9 +43,10 @@ def stream_object_detection(video):
|
|
| 40 |
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
| 41 |
result = model(Image.fromarray(frame))[0]
|
| 42 |
detections = sv.Detections.from_ultralytics(result)
|
| 43 |
-
print(detections)
|
| 44 |
|
| 45 |
-
box_annotator = eval(f'sv.{
|
|
|
|
| 46 |
|
| 47 |
outp = box_annotator.annotate(
|
| 48 |
scene=frame.copy(),
|
|
@@ -60,16 +64,27 @@ def stream_object_detection(video):
|
|
| 60 |
output_video = cv2.VideoWriter(output_video_name, video_codec, desired_fps, (width, height)) # type: ignore
|
| 61 |
iterating, frame = cap.read()
|
| 62 |
n_frames += 1
|
| 63 |
-
|
| 64 |
-
with gr.Blocks() as app:
|
| 65 |
-
gr.HTML("<div style='font-size: 50px;font-weight: 800;'>
|
| 66 |
#inp = gr.Image(type="filepath")
|
| 67 |
with gr.Row():
|
| 68 |
with gr.Column():
|
| 69 |
-
inp = gr.Video()
|
| 70 |
btn = gr.Button()
|
| 71 |
-
|
| 72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
-
btn.click(stream_object_detection,inp,[outp_v,outp_j])
|
| 75 |
-
app.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
ver=[0,0,0,0,0,0,6,7,8,9,10,11]
|
| 13 |
ltr=["n","s","m","1","x"]
|
| 14 |
tsk=["","-seg","-pose","-obb","-cls"]
|
|
|
|
|
|
|
|
|
|
| 15 |
annotators = ["Box","RoundBox","BoxCorner","Color",
|
| 16 |
"Circle","Dot","Triangle","Elipse","Halo",
|
| 17 |
"PercentageBar","Mask","Polygon","Label",
|
| 18 |
"RichLabel","Icon","Crop","Blur","Pixelate","HeatMap"]
|
| 19 |
+
def model_select(v,l,t):
|
| 20 |
+
modin=f"yolov{v}{l}{t}.pt"
|
| 21 |
+
print(modin)
|
| 22 |
+
global model
|
| 23 |
+
model = YOLO(modin)
|
| 24 |
+
|
| 25 |
|
| 26 |
@spaces.GPU
|
| 27 |
+
def stream_object_detection(video,anno):
|
| 28 |
+
SUBSAMPLE=2
|
| 29 |
cap = cv2.VideoCapture(video)
|
| 30 |
# This means we will output mp4 videos
|
| 31 |
video_codec = cv2.VideoWriter_fourcc(*"mp4v") # type: ignore
|
|
|
|
| 43 |
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
| 44 |
result = model(Image.fromarray(frame))[0]
|
| 45 |
detections = sv.Detections.from_ultralytics(result)
|
| 46 |
+
#print(detections)
|
| 47 |
|
| 48 |
+
box_annotator = eval(f'sv.{anno}Annotator()')
|
| 49 |
+
#box_annotator = eval(f'sv.{annotators[0]}Annotator()')
|
| 50 |
|
| 51 |
outp = box_annotator.annotate(
|
| 52 |
scene=frame.copy(),
|
|
|
|
| 64 |
output_video = cv2.VideoWriter(output_video_name, video_codec, desired_fps, (width, height)) # type: ignore
|
| 65 |
iterating, frame = cap.read()
|
| 66 |
n_frames += 1
|
| 67 |
+
#css="body{background:aliceblue;}"
|
| 68 |
+
with gr.Blocks(theme="Nymbo/Nymbo_Theme_5") as app:
|
| 69 |
+
gr.HTML("<div style='font-size: 50px;font-weight: 800;'>SuperVision</div><div style='font-size: 30px;'>Video Object Detection</div><div>Github:<a href='https://github.com/roboflow/supervision' target='_blank'>https://github.com/roboflow/supervision</a></div>")
|
| 70 |
#inp = gr.Image(type="filepath")
|
| 71 |
with gr.Row():
|
| 72 |
with gr.Column():
|
| 73 |
+
inp = gr.Video(height=300)
|
| 74 |
btn = gr.Button()
|
| 75 |
+
with gr.Accordion("Controls",open=False):
|
| 76 |
+
with gr.Group():
|
| 77 |
+
dd1=gr.Dropdown(label="Version",choices=ver[6:],value=ver[9],allow_custom_value=True)
|
| 78 |
+
dd2=gr.Dropdown(label="Ltr", choices=ltr,value=ltr[1],allow_custom_value=True)
|
| 79 |
+
dd3=gr.Dropdown(label="Task",choices=tsk,value=tsk[0],allow_custom_value=True)
|
| 80 |
+
dd4=gr.Dropdown(label="Annotator",choices=annotators,value="Box")
|
| 81 |
+
with gr.Column():
|
| 82 |
+
outp_v = gr.Video(label="Processed Video", streaming=True, autoplay=True,height=300)
|
| 83 |
+
outp_j = gr.JSON()
|
| 84 |
|
| 85 |
+
btn.click(stream_object_detection,[inp,dd4],[outp_v,outp_j])
|
| 86 |
+
app.load(model_select,[dd1,dd2,dd3],None)
|
| 87 |
+
dd1.change(model_select,[dd1,dd2,dd3],None)
|
| 88 |
+
dd2.change(model_select,[dd1,dd2,dd3],None)
|
| 89 |
+
dd3.change(model_select,[dd1,dd2,dd3],None)
|
| 90 |
+
app.queue().launch()
|