Skip to content

An end-to-end, deep learning-based system designed to automatically detect and document common traffic violations committed by two-wheeler vehicles. This project leverages state-of-the-art computer vision to assist in automated traffic enforcement, enhancing road safety and efficiency.

Notifications You must be signed in to change notification settings

kumarvishal01971/Traffic_violation_detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

38 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ๏ธ Two-Wheeler Traffic Violation Detection System

An AI-powered web application for detecting traffic violations in two-wheeler vehicles using computer vision, multiple Roboflow models, and OCR technology. Optimized for Railway deployment with Tesseract-only OCR.

Python Flask OpenCV Gunicorn Render License Status

๐Ÿ“‹ Table of Contents

โœจ Features

Core Detection Capabilities

  • ๐Ÿช– No Helmet Detection: Identifies riders without helmets
  • ๐Ÿ‘ฅ Triple Riding Detection: Detects more than 2 passengers on a two-wheeler
  • ๐Ÿšฆ Red Light Violation: Identifies vehicles crossing during red signals
  • ๐Ÿ“„ License Plate Recognition: Automated number plate extraction using Tesseract OCR

Smart Features

  • โฑ๏ธ Violation Cooldown System: 5-second cooldown to prevent duplicate detections
  • ๐ŸŽฏ Multi-Model AI: Uses 4 specialized Roboflow models simultaneously
  • ๐Ÿ“ธ Evidence Collection: Automatically saves violation images with annotations
  • ๐Ÿ’พ SQLite Database: Persistent storage of all violations
  • ๐Ÿ“Š Analytics Dashboard: Real-time violation statistics and summaries
  • ๐ŸŽฅ Video & Image Support: Process both videos and images

User Interface

  • Modern Web Interface: Clean, responsive Bootstrap 5 design
  • Real-time Processing: Live updates during video analysis
  • Violation Gallery: Browse all captured violations
  • Downloadable Results: Download processed videos and evidence
  • Mobile-Friendly: Works on all devices

๐ŸŽฌ Live Demo

Supported File Formats

  • Videos: MP4, AVI, MOV, MKV, WEBM
  • Images: JPG, JPEG, PNG
  • Max Size: 500MB

๐ŸŽฏ Detection Capabilities

1. No Helmet Detection

  • Identifies riders without helmets
  • Uses specialized helmet detection model
  • Confidence threshold: 0.3

2. Triple Riding Detection

  • Detects more than 2 passengers on two-wheeler
  • Class: "people" (more than 2 passengers)
  • Confidence threshold: 0.3

3. Red Light Violation

  • Detects vehicles crossing during red signals
  • Traffic light model with class "1" for red light
  • Combines with bike detection for accurate violation

4. License Plate Recognition

  • Haar Cascade detection for plate localization
  • Tesseract OCR for text extraction
  • Multiple enhancement techniques for accuracy
  • Automatic plate formatting

๐Ÿ—๏ธ System Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   Web Browser                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Flask Web Server                       โ”‚
โ”‚              (Port: Railway/3000)                   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ–ผ                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   SQLite     โ”‚      โ”‚  Processing  โ”‚
โ”‚   Database   โ”‚      โ”‚    Engine    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                             โ”‚
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ–ผ              โ–ผ              โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚  Roboflow   โ”‚  โ”‚   License   โ”‚  โ”‚  Evidence   โ”‚
    โ”‚   Models    โ”‚  โ”‚    Plate    โ”‚  โ”‚   Storage   โ”‚
    โ”‚  (4 Models) โ”‚  โ”‚  Detection  โ”‚  โ”‚             โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Roboflow Model Pipeline

Frame Input
    โ”‚
    โ”œโ”€โ”€โ–บ Two-Wheeler Detection (two-wheeler-aj3hv/2)
    โ”‚
    โ”œโ”€โ”€โ–บ Rider/Helmet Detection (two-person-ride/11)
    โ”‚
    โ”œโ”€โ”€โ–บ Triple Riding Detection (more-than-two-passengers/1)
    โ”‚
    โ””โ”€โ”€โ–บ Traffic Light Detection (traffic-lights-ydbwt/1)
         โ”‚
         โ–ผ
    Violation Analysis
         โ”‚
         โ”œโ”€โ”€โ–บ License Plate Extraction
         โ”‚
         โ”œโ”€โ”€โ–บ Tesseract OCR
         โ”‚
         โ””โ”€โ”€โ–บ Evidence Generation
              โ”‚
              โ–ผ
         Save to Database

๐Ÿš€ Installation

Prerequisites

  • Python: 3.10.13
  • Tesseract OCR: 4.0+ (required)
  • Roboflow API Key: Required for model inference
  • Operating System: Windows, Linux, or macOS

Step 1: Clone the Repository

git clone https://github.com/kumarvishal01971/Traffic_violation_detection.git
cd Traffic_violation_detection

Step 2: Create Virtual Environment

# Windows
python -m venv venv
venv\Scripts\activate

# Linux/macOS
python3 -m venv venv
source venv/bin/activate

Step 3: Install Dependencies

pip install -r requirements.txt

Step 4: Install Tesseract OCR

Windows:

  1. Download installer: https://github.com/UB-Mannheim/tesseract/wiki
  2. Install to: C:\Program Files\Tesseract-OCR\
  3. Add to system PATH
  4. Update path in app.py if needed:
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

Linux (Ubuntu/Debian):

sudo apt-get update
sudo apt-get install tesseract-ocr

macOS:

brew install tesseract

Step 5: Get Roboflow API Key

  1. Sign up at Roboflow
  2. Get your API key from workspace settings
  3. Update in app.py:
def __init__(self, api_key: str = "YOUR_API_KEY_HERE"):

Step 6: Create Required Directories

mkdir uploads outputs violation_evidence

Step 7: Add Haar Cascade File (Optional)

Download haarcascade_russian_plate_number.xml and place in root directory for better plate detection.

๐Ÿ“ฆ Requirements

flask==2.3.3
werkzeug==2.3.7
opencv-python-headless==4.8.1.78
numpy==1.26.4
pillow==10.1.0
inference-sdk==0.9.0
gunicorn==21.2.0

Why These Versions?

  • opencv-python-headless: Lightweight version without GUI (Railway compatible)
  • inference-sdk: Roboflow API client for model inference
  • gunicorn: Production-grade WSGI server for deployment
  • No PyTorch/EasyOCR: Keeps deployment lightweight and fast

๐ŸŽฏ Usage

Local Development

python web_app.py

Access at: http://localhost:3000

Using the Application

1. Upload & Process

  1. Go to Upload page
  2. Select video (MP4, AVI, MOV) or image (JPG, PNG)
  3. Click Upload
  4. Processing starts automatically
  5. View results when complete

2. Run Demo

  1. Add demo_video.mp4 to uploads/ folder
  2. Click Run Demo on homepage
  3. View processed results

3. View Violations

  1. Click View Violations on homepage
  2. Browse all detected violations
  3. Click on evidence images to enlarge
  4. Filter by violation type

Command Line Usage

# Process video
python app.py --video path/to/video.mp4 --out output.mp4

# Process image
python app.py --image path/to/image.jpg --out output.jpg

๐Ÿค– API Models

Model Configuration

self.models = {
    'two_wheeler': 'two-wheeler-aj3hv/2',
    'riders': 'two-person-ride/11',
    'triple_riding': 'more-than-two-passengers/1',
    'traffic_light': 'traffic-lights-ydbwt/1'
}

Model Details

Model Purpose Classes Confidence
two-wheeler-aj3hv/2 Bike detection bike, motorcycle 0.5
two-person-ride/11 Helmet detection helmet, no_helmet 0.5
more-than-two-passengers/1 Triple riding people 0.5
traffic-lights-ydbwt/1 Traffic lights 0 (green), 1 (red) 0.5

Detection Logic

# NO HELMET: "no_helmet" class detected
# TRIPLE RIDING: "people" class (>2 passengers)
# RED LIGHT: class "1" (red) + bike detected

โš™๏ธ Configuration

Adjust Processing Speed

# In process_video() method
frame_skip = 3  # Process every 3rd frame
                # Higher = faster, may miss violations
                # Lower = slower, more accurate

Change Confidence Thresholds

self.confidence_thresholds = {
    'bike': 0.3,        # Bike detection
    'no_helmet': 0.3,   # No helmet detection
    'triple': 0.3,      # Triple riding
    'light': 0.3        # Traffic light
}

Violation Cooldown

# In __init__()
self.tracker = SimpleViolationTracker(cooldown_seconds=5.0)
# Prevents duplicate violations within 5 seconds

Upload Limits

# In web_app.py
app.config['MAX_CONTENT_LENGTH'] = 500 * 1024 * 1024  # 500MB

Deployment

Render Deployment (Recommended - Currently Live โœ…)

  1. Create runtime.txt: txtpython-3.10.13
  2. Configure Render Service: Service Settings:

Runtime: Python 3 Build Command:

bash pip install -r requirements.txt

Start Command:

bash gunicorn flask_app:app 3. Set Environment Variables: In Render Dashboard โ†’ Environment, add: bashPYTHON_VERSION=3.10.13 ROBOFLOW_API_KEY=your_roboflow_api_key PYTHONUNBUFFERED=1 4. Deploy: bash# Push to GitHub git add . git commit -m "Deploy to Render" git push origin main

Render will automatically deploy from your connected GitHub repo


**Important Notes:**
- โœ… Remove any `Dockerfile`, `Procfile`, `nixpacks.toml`, or `railway.toml` files
- โœ… Render automatically assigns PORT (usually 10000)
- โœ… Free tier includes: 750 hours/month, automatic SSL, custom domains

---

### Heroku Deployment (Alternative)

#### 1. **Create `Procfile`:**

web: gunicorn flask_app:app --timeout 120 2. Create runtime.txt: txtpython-3.10.13 3. Add Buildpack (if using Tesseract): bashheroku buildpacks:add --index 1 heroku/python 4. Set Environment Variables: bashheroku config:set ROBOFLOW_API_KEY=your_api_key heroku config:set PYTHONUNBUFFERED=1 5. Deploy: bashheroku login heroku create your-app-name git push heroku main

Docker Deployment Dockerfile: dockerfileFROM python:3.10-slim

Install system dependencies

RUN apt-get update && apt-get install -y
libglib2.0-0
libsm6
libxext6
libxrender-dev
libgomp1
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app

Copy requirements and install dependencies

COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt

Copy application files

COPY . .

Set environment variables

ENV PORT=10000 ENV PYTHONUNBUFFERED=1

EXPOSE 10000

Run with gunicorn

CMD ["gunicorn", "flask_app:app", "--bind", "0.0.0.0:10000", "--workers", "2", "--timeout", "120"] Build and Run: bash# Build the image docker build -t traffic-violation-detection .

Run the container

docker run -p 10000:10000
-e ROBOFLOW_API_KEY=your_api_key
traffic-violation-detection Docker Compose (Optional): yamlversion: '3.8'

services: web: build: . ports: - "10000:10000" environment: - ROBOFLOW_API_KEY=${ROBOFLOW_API_KEY} - PYTHONUNBUFFERED=1 volumes: - ./uploads:/app/uploads - ./outputs:/app/outputs - ./violation_evidence:/app/violation_evidence Run with Docker Compose: bashdocker-compose up --build

๐Ÿ“ Project Structure

traffic-violation-detection/
โ”‚
โ”œโ”€โ”€ app.py                              # Core detection engine
โ”œโ”€โ”€ flask_app.py                          # Flask web application
โ”œโ”€โ”€ requirements.txt                    # Python dependencies
โ”œโ”€โ”€ README.md                           # This file
โ”‚
โ”œโ”€โ”€ templates/                          # HTML templates
โ”‚   โ”œโ”€โ”€ base.html                       # Base template
โ”‚   โ”œโ”€โ”€ index.html                      # Homepage
โ”‚   โ”œโ”€โ”€ upload.html                     # Upload page
โ”‚   โ”œโ”€โ”€ result.html                     # Results page
โ”‚   โ”œโ”€โ”€ violations.html                 # Violations gallery
โ”‚   โ””โ”€โ”€ demo.html                       # Demo page
โ”‚
โ”œโ”€โ”€ uploads/                            # Uploaded files
โ”œโ”€โ”€ outputs/                            # Processed videos
โ”œโ”€โ”€ violation_evidence/                 # Evidence images
โ”‚
โ”œโ”€โ”€ violations.db                       # SQLite database
โ”‚
โ”œโ”€โ”€ railway.toml                        # Railway config (deployment)
โ”œโ”€โ”€ nixpacks.toml                       # Nixpacks config (deployment)
โ””โ”€โ”€ Procfile                            # Heroku config (deployment)

๐Ÿ› ๏ธ Technologies Used

Backend

  • Flask 2.3.3 - Web framework
  • OpenCV 4.8.1 - Computer vision (headless for deployment)
  • NumPy 1.26.4 - Numerical computations
  • Pillow 10.1.0 - Image processing
  • Gunicorn 21.2.0 - WSGI HTTP server

AI/ML

  • Roboflow Inference SDK 0.9.0 - Model inference
  • Tesseract OCR - License plate text extraction
  • 4 Custom Models - Specialized detection models

Frontend

  • Bootstrap 5 - UI framework
  • JavaScript - Interactive features
  • HTML5/CSS3 - Markup and styling

Database

  • SQLite3 - Lightweight embedded database
  • No external DB required - Portable and simple

Deployment

  • Railway - Primary deployment platform
  • Gunicorn - Production WSGI server
  • Nixpacks - Smart build system

๐Ÿ› Troubleshooting

Common Issues

1. "Tesseract not found"

Solution:

# Install Tesseract
# Ubuntu/Debian
sudo apt-get install tesseract-ocr

# Windows - download installer and add to PATH
# macOS
brew install tesseract

# Update path in app.py if needed
pytesseract.pytesseract.tesseract_cmd = r'/usr/bin/tesseract'

2. "No module named 'inference_sdk'"

Solution:

pip install inference-sdk==0.9.0

3. API Connection Error

Possible causes:

  • Invalid API key
  • No internet connection
  • Roboflow service down

Solution:

# Check API key in app.py
api_key = "YOUR_VALID_API_KEY"

# Test connection
from inference_sdk import InferenceHTTPClient
client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key="YOUR_API_KEY"
)

4. No Violations Detected

Possible causes:

  • Low confidence threshold
  • Video quality issues
  • Wrong model IDs

Solutions:

# Lower confidence thresholds
self.confidence_thresholds = {
    'bike': 0.2,      # Try 0.2 instead of 0.3
    'no_helmet': 0.2,
    'triple': 0.2,
    'light': 0.2
}

# Check model predictions in console
print(f"Predictions: {all_predictions}")

5. "Database locked" Error

Solution:

# Close all other connections to violations.db
# Or delete and recreate database
rm violations.db
python web_app.py  # Will recreate database

6. Slow Processing

Solutions:

# Increase frame skip
frame_skip = 5  # Instead of 3

# Reduce video resolution before upload
# Use smaller videos for testing

7. Railway Deployment Fails

Common fixes:

# Ensure nixpacks.toml exists with tesseract
# Check logs: railway logs
# Verify environment variables are set
# Check buildpack order

๐Ÿ“Š Database Schema

CREATE TABLE violations (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    timestamp TEXT,
    plate_number TEXT,
    violation_type TEXT,
    confidence REAL,
    details TEXT,
    evidence_file TEXT,
    video_source TEXT
)

๐ŸŽจ Customization

Add New Violation Type

  1. Add model to app.py:
self.models = {
    # ... existing models
    'new_violation': 'your-model-id/version'
}
  1. Update detection logic:
def analyze_frame_simple(self, predictions, frame, frame_num):
    # Add new detection logic
    new_detections = [p for p in predictions if ...]
    
    if new_detections:
        violation = {
            'type': 'NEW_VIOLATION_TYPE',
            # ... rest of logic
        }
  1. Update UI in templates:
<!-- Add new violation type display -->

Change Color Scheme

Edit violation colors in app.py:

def save_evidence(self, frame, violation):
    if v_type == 'NO_HELMET':
        color = (0, 0, 255)      # Red (BGR)
    elif v_type == 'TRIPLE_RIDING':
        color = (255, 0, 255)    # Magenta
    # Add your custom colors

๐Ÿค Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow PEP 8 style guide
  • Add docstrings to functions
  • Test with sample videos before committing
  • Update README if adding features

๐Ÿ“ License

This project is licensed under the MIT License.

MIT License

Copyright (c) 2024 Two-Wheeler Traffic Violation Detection

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

๐Ÿ™ Acknowledgments

  • Roboflow for the excellent model hosting and inference API
  • Tesseract OCR for open-source text recognition
  • OpenCV for computer vision capabilities
  • Flask for the lightweight web framework
  • Railway for seamless deployment platform
  • Community contributors and testers

๐Ÿ“ง Contact

Project Maintainer: Kumar Vishal

๐Ÿ”ฎ Future Enhancements

  • Real-time camera feed processing
  • Multi-language OCR support
  • Speed violation detection
  • Email/SMS notifications
  • Advanced analytics dashboard
  • Mobile app integration
  • Export reports to PDF
  • Multi-camera support
  • Cloud storage integration
  • RESTful API for external integrations

๐Ÿ“Š Performance Metrics

  • Processing Speed: ~15-20 seconds for 30-second video
  • Detection Accuracy:
    • No Helmet: ~85%
    • Triple Riding: ~80%
    • Red Light: ~90%
    • Plate Recognition: ~75-80%
  • Supported File Size: Up to 100MB
  • Frame Skip: Every 3rd frame (configurable)
  • API Response Time: ~500ms per frame

๐ŸŽ“ Academic Use

This project can be used for educational purposes. Please provide proper attribution.

๐ŸŒŸ Star History

If you find this project helpful, please โญ star the repository!


Made with โค๏ธ for Traffic Safety

Deploy Status: LIVE!!! Click here to view : https://traffic-violation-detection-ceo6.onrender.com/

About

An end-to-end, deep learning-based system designed to automatically detect and document common traffic violations committed by two-wheeler vehicles. This project leverages state-of-the-art computer vision to assist in automated traffic enforcement, enhancing road safety and efficiency.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published