IDSL_Duplication / utils /inference_router.py
SathvikGanta's picture
Upload 2 files
830489a verified
import concurrent.futures
from models import (
bridge_detector, encroachment_detector, structure_progress_detector,
pothole_detector, crack_detector, unauthorized_median_detector,
crash_barrier_detector, highway_exit_detector, drain_detector,
tree_height_detector, latitude_detector, vari_detector
)
from utils.video_utils import extract_frames
model_map = {
"Bridges": bridge_detector.run,
"Encroachment": encroachment_detector.run,
"Structure Progress": structure_progress_detector.run,
"Potholes": pothole_detector.run,
"Crack": crack_detector.run,
"Unauthorized Median Opening": unauthorized_median_detector.run,
"Crash Barriers": crash_barrier_detector.run,
"Entry/Exit of Highway": highway_exit_detector.run,
"Drain": drain_detector.run,
"Tree Height": tree_height_detector.run,
"Latitude": latitude_detector.run,
"VARI": vari_detector.run
}
def process_video(video_file, selected_params):
frames = extract_frames(video_file)
results = {}
with concurrent.futures.ThreadPoolExecutor() as executor:
future_to_param = {
executor.submit(model_map[param], frames): param for param in selected_params
}
for future in concurrent.futures.as_completed(future_to_param):
param = future_to_param[future]
results[param] = future.result()
return [img for imgs in results.values() for img in imgs]