--- title: Construction App emoji: 🚜 colorFrom: indigo colorTo: indigo sdk: gradio sdk_version: 6.10.0 app_file: app.py pinned: false short_description: detect excavators and put it as active or not qctive --- # Equipment Utilization & Activity Classification Prototype This application is an AI-powered monitoring tool for construction machinery, specifically designed to track and analyze **Excavator** activities in real-time. It uses computer vision to distinguish between different operational states like digging, dumping, and idling. ## Live Demo on Hugging Face This space provides an interactive interface to upload construction site videos and get a full breakdown of machine utilization and activity logs. ## 📋 Core Features * **Intelligent Tracking:** Uses `DeepSort` to maintain unique IDs for each machine across the video. * **Articulated Motion Analysis:** A specialized algorithm that monitors the **Arm/Bucket** movement separately from the **Tracks**, allowing the system to detect activity even when the machine is not moving its base. * **Activity Classification:** * `DIGGING`: Active arm movement with downward trajectory. * `DUMPING`: Active arm movement with upward trajectory. * `SWINGING/LOADING`: Horizontal movement of the body/arm. * `WAITING`: Stationary state (Idle). * **Detailed Analytics:** Outputs a downloadable **JSON report** containing total active seconds, idle time, and utilization percentage. ## Tech Stack * **Model:** YOLOv26 (Custom trained `best.pt`). * **Tracking:** DeepSort Real-time. * **Inference:** Ultralytics & OpenCV. * **Interface:** Gradio. ## 🚀 How to use it here: 1. **Upload Video:** Drag and drop your mp4/avi video into the "Upload Video" box. 2. **Select Classes:** Choose the equipment class from the list (e.g., `excavator`). 3. **Submit:** Wait for the AI to process the frames. 4. **Results:** * Watch the **Processed Video** with live bounding boxes and activity labels. * View the **JSON Output** for a summary of the machine's performance. * **Download** the full report for your records. ## 📊 JSON Output Example The app provides structured data for every detected machine: ```json { "equipment_id": "EX-001", "utilization": { "current_state": "ACTIVE", "current_activity": "DIGGING", "motion_source": "arm_only" }, "time_analytics": { "total_tracked_seconds": 15.0, "utilization_percent": 83.3 } }