Spaces:
Runtime error
Runtime error
Commit
·
d79bac4
1
Parent(s):
3f7b316
activate gpu
Browse files- app.py +8 -6
- detector/utils.py +3 -4
app.py
CHANGED
|
@@ -63,6 +63,8 @@ def fn_video(video, initial_time, duration):
|
|
| 63 |
while cap.isOpened():
|
| 64 |
try:
|
| 65 |
ret, frame = cap.read()
|
|
|
|
|
|
|
| 66 |
if not ret:
|
| 67 |
break
|
| 68 |
frame_copy = frame.copy()
|
|
@@ -72,7 +74,7 @@ def fn_video(video, initial_time, duration):
|
|
| 72 |
if num_frames < min_frame:
|
| 73 |
num_frames += 1
|
| 74 |
continue
|
| 75 |
-
yolo_detections = detect_plates(
|
| 76 |
detections = yolo_to_norfair(yolo_detections)
|
| 77 |
tracked_objects = tracker.update(detections=detections)
|
| 78 |
for obj in tracked_objects:
|
|
@@ -80,22 +82,22 @@ def fn_video(video, initial_time, duration):
|
|
| 80 |
bbox = obj.last_detection.points
|
| 81 |
bbox = int(bbox[0][0]), int(bbox[0][1]), int(bbox[1][0]), int(bbox[1][1])
|
| 82 |
if obj.id not in plates.keys():
|
| 83 |
-
crop = imcrop(
|
| 84 |
text = detect_chars(crop)
|
| 85 |
plates[obj.id] = text
|
| 86 |
thread = Thread(target=send_request, args=(frame_copy, text, bbox))
|
| 87 |
thread.start()
|
| 88 |
|
| 89 |
cv2.rectangle(
|
| 90 |
-
|
| 91 |
(bbox[0], bbox[1]),
|
| 92 |
(bbox[2], bbox[3]),
|
| 93 |
(0, 255, 0),
|
| 94 |
2,
|
| 95 |
)
|
| 96 |
-
draw_text(
|
| 97 |
cv2.putText(
|
| 98 |
-
|
| 99 |
plates[obj.id],
|
| 100 |
(bbox[0], bbox[1]),
|
| 101 |
cv2.FONT_HERSHEY_SIMPLEX,
|
|
@@ -103,7 +105,7 @@ def fn_video(video, initial_time, duration):
|
|
| 103 |
(0, 255, 0),
|
| 104 |
2,
|
| 105 |
)
|
| 106 |
-
final_video.write(
|
| 107 |
num_frames += 1
|
| 108 |
if num_frames == max_frame:
|
| 109 |
break
|
|
|
|
| 63 |
while cap.isOpened():
|
| 64 |
try:
|
| 65 |
ret, frame = cap.read()
|
| 66 |
+
gpu_frame = cv2.cuda_GpuMat()
|
| 67 |
+
gpu_frame.upload(frame)
|
| 68 |
if not ret:
|
| 69 |
break
|
| 70 |
frame_copy = frame.copy()
|
|
|
|
| 74 |
if num_frames < min_frame:
|
| 75 |
num_frames += 1
|
| 76 |
continue
|
| 77 |
+
yolo_detections = detect_plates(gpu_frame)
|
| 78 |
detections = yolo_to_norfair(yolo_detections)
|
| 79 |
tracked_objects = tracker.update(detections=detections)
|
| 80 |
for obj in tracked_objects:
|
|
|
|
| 82 |
bbox = obj.last_detection.points
|
| 83 |
bbox = int(bbox[0][0]), int(bbox[0][1]), int(bbox[1][0]), int(bbox[1][1])
|
| 84 |
if obj.id not in plates.keys():
|
| 85 |
+
crop = imcrop(gpu_frame, bbox)
|
| 86 |
text = detect_chars(crop)
|
| 87 |
plates[obj.id] = text
|
| 88 |
thread = Thread(target=send_request, args=(frame_copy, text, bbox))
|
| 89 |
thread.start()
|
| 90 |
|
| 91 |
cv2.rectangle(
|
| 92 |
+
gpu_frame,
|
| 93 |
(bbox[0], bbox[1]),
|
| 94 |
(bbox[2], bbox[3]),
|
| 95 |
(0, 255, 0),
|
| 96 |
2,
|
| 97 |
)
|
| 98 |
+
draw_text(gpu_frame, plates[obj.id], (bbox[0], bbox[1]))
|
| 99 |
cv2.putText(
|
| 100 |
+
gpu_frame,
|
| 101 |
plates[obj.id],
|
| 102 |
(bbox[0], bbox[1]),
|
| 103 |
cv2.FONT_HERSHEY_SIMPLEX,
|
|
|
|
| 105 |
(0, 255, 0),
|
| 106 |
2,
|
| 107 |
)
|
| 108 |
+
final_video.write(gpu_frame)
|
| 109 |
num_frames += 1
|
| 110 |
if num_frames == max_frame:
|
| 111 |
break
|
detector/utils.py
CHANGED
|
@@ -9,14 +9,13 @@ import requests
|
|
| 9 |
BASE_DIR = os.path.abspath(os.getcwd())
|
| 10 |
|
| 11 |
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
|
| 12 |
-
|
| 13 |
-
print('Loading models...', cpu)
|
| 14 |
|
| 15 |
model_plates = torch.hub.load('ultralytics/yolov5', 'custom',
|
| 16 |
-
path=os.path.join(BASE_DIR, 'detector', 'static', 'plates.pt'), device=
|
| 17 |
|
| 18 |
model_chars = torch.hub.load('ultralytics/yolov5', 'custom',
|
| 19 |
-
path=os.path.join(BASE_DIR, 'detector', 'static', 'chars.pt'), device=
|
| 20 |
|
| 21 |
|
| 22 |
def pad_img_to_fit_bbox(img, x1, x2, y1, y2):
|
|
|
|
| 9 |
BASE_DIR = os.path.abspath(os.getcwd())
|
| 10 |
|
| 11 |
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
|
| 12 |
+
print('Loading models...', device)
|
|
|
|
| 13 |
|
| 14 |
model_plates = torch.hub.load('ultralytics/yolov5', 'custom',
|
| 15 |
+
path=os.path.join(BASE_DIR, 'detector', 'static', 'plates.pt'), device=device)
|
| 16 |
|
| 17 |
model_chars = torch.hub.load('ultralytics/yolov5', 'custom',
|
| 18 |
+
path=os.path.join(BASE_DIR, 'detector', 'static', 'chars.pt'), device=device)
|
| 19 |
|
| 20 |
|
| 21 |
def pad_img_to_fit_bbox(img, x1, x2, y1, y2):
|