Spaces:
Running
Running
| from models.predict_z_location_single_row_lstm import predict_z_location_single_row | |
| def generate_output_json(data, ZlocE, scaler): | |
| """ | |
| Predict Z-location for each object in the data and prepare the JSON output. | |
| Parameters: | |
| - data: DataFrame with bounding box coordinates, depth information, and class type. | |
| - ZlocE: Pre-loaded LSTM model for Z-location prediction. | |
| - scaler: Scaler for normalizing input data. | |
| Returns: | |
| - JSON structure with object class, distance estimated, and relevant features. | |
| """ | |
| output_json = [] | |
| # Iterate over each row in the data | |
| for i, row in data.iterrows(): | |
| # Predict distance for each object using the single-row prediction function | |
| distance = predict_z_location_single_row(row, ZlocE, scaler) | |
| # Create object info dictionary | |
| object_info = { | |
| "class": row["class"], # Object class (e.g., 'car', 'truck') | |
| "distance_estimated": float(distance), # Convert distance to float (if necessary) | |
| "features": { | |
| "xmin": float(row["xmin"]), # Bounding box xmin | |
| "ymin": float(row["ymin"]), # Bounding box ymin | |
| "xmax": float(row["xmax"]), # Bounding box xmax | |
| "ymax": float(row["ymax"]), # Bounding box ymax | |
| "mean_depth": float(row["depth_mean"]), # Depth mean | |
| "depth_mean_trim": float(row["depth_mean_trim"]), # Depth mean trim | |
| "depth_median": float(row["depth_median"]), # Depth median | |
| "width": float(row["width"]), # Object width | |
| "height": float(row["height"]) # Object height | |
| } | |
| } | |
| # Append each object info to the output JSON list | |
| output_json.append(object_info) | |
| # Return the final JSON output structure | |
| return {"objects": output_json} | |