Spaces:
Sleeping
Sleeping
File size: 2,525 Bytes
5d92054 |
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 53 54 55 56 57 58 59 |
"""
Created on Sat Apr 9 04:08:02 2022
@author: Admin_with ODD Team
Edited by our team : Sat Oct 12 2024
references: https://github.com/vinvino02/GLPDepth
"""
import numpy as np
import pandas as pd
import torch
from utils.processing_cy import process_bbox_depth_cy, handle_overlaps_cy
class PROCESSING:
def process_detections(self, scores, boxes, depth_map, detr):
self.data = pd.DataFrame(columns=['xmin','ymin','xmax','ymax','width', 'height',
'depth_mean_trim','depth_mean','depth_median',
'class', 'rgb'])
boxes_array = np.array([[int(box[1]), int(box[0]), int(box[3]), int(box[2])]
for box in boxes.tolist()], dtype=np.int32)
# Use Cython-optimized overlap handling
valid_indices = handle_overlaps_cy(depth_map, boxes_array)
for idx in valid_indices:
p = scores[idx]
box = boxes[idx]
xmin, ymin, xmax, ymax = map(int, box)
detected_class = p.argmax()
class_label = detr.CLASSES[detected_class]
# Map classes
if class_label == 'motorcycle':
class_label = 'bicycle'
elif class_label == 'bus':
class_label = 'train'
elif class_label not in ['person', 'truck', 'car', 'bicycle', 'train']:
class_label = 'Misc'
if class_label in ['Misc', 'person', 'truck', 'car', 'bicycle', 'train']:
# Use Cython-optimized depth calculations
depth_mean, depth_median, (depth_trim_low, depth_trim_high) = \
process_bbox_depth_cy(depth_map, ymin, ymax, xmin, xmax)
class_index = ['Misc', 'person', 'truck', 'car', 'bicycle', 'train'].index(class_label)
r, g, b = detr.COLORS[class_index]
rgb = (r * 255, g * 255, b * 255)
new_row = pd.DataFrame([[xmin, ymin, xmax, ymax, xmax - xmin, ymax - ymin,
(depth_trim_low + depth_trim_high) / 2,
depth_mean, depth_median, class_label, rgb]],
columns=self.data.columns)
self.data = pd.concat([self.data, new_row], ignore_index=True)
return self.data |