A vision pipeline for object and car make classification with CLI
Project description
Pax Case: Object and Car Make Classification
This project provides a vision pipeline for object and car make classification. It includes a command-line interface (CLI) for processing images.
Features
- Two-Stage Pipeline:
- Object Detection: Uses a YOLOv8 model to detect objects (person, bicycle, car, truck).
- Car Make Classification: Uses a Google SigLIP model fine-tuned on the Roboflow Car Make Model Recognition dataset to classify the make of detected cars.
- CLI Tool (
detector):- Process single images or directories of images from the command line.
- Supports configuration via a YAML file.
- Adjustable confidence threshold for object detection.
- Scalability and Extensibility:
- The architecture is designed to be scalable and extensible. See
SCALING_STRATEGY.mdfor a detailed plan on scaling to 10M images/day and adding new classification types.
- The architecture is designed to be scalable and extensible. See
Package usage
- Install PyPi package
pip install pax-detector
Local Setup and Installation
-
Clone the repository:
git clone <repository-url> cd pax-case
-
Install dependencies: It is recommended to use a virtual environment. This project uses
uvhttps://docs.astral.sh/uv/getting-started/installation/ for package management.uv venv source .venv/bin/activate uv pip install -e . # To build package locally uv sync # If want to install local dependencies
Usage
Command-Line Interface (CLI)
The CLI tool (detector) is used for processing individual images.
Basic Usage:
Using a Configuration File:
You can also run the CLI using a config.yml file to specify parameters.
Example config.yml:
image_path: '/Users/fnayres/Downloads/captura-de-tela-2022-12-08-as-13.36.55.webp'
images_dir: null
confidence: 0.5
pipeline:
- name: object_detection
class: classification.objects.object_classifier.ObjectClassfier
params:
model_version: yolov8l.pt
- name: car_make_classification
class: classification.makes.siglip_classifier.MakeClassifier
depends_on: object_detection
condition: "'car' in detection['class_name'] or 'truck' in detection['class_name']" # accept None condition
Run with config:
detector --config config.yml
# or
uv run detector --config config.yml
To process a single image:
detector --image_path /path/to/your/image.jpg
# or
uv run detector --image_path /path/to/your/image.jpg
To process all images in a directory:
detector --images_dir /path/to/your/images/
# or
uv run detector --images_dir /path/to/your/images/
Arguments:
--image_path: Path to a single input image.--images_dir: Path to a directory of images.--config: Path to a YAML configuration file.--confidence: Confidence threshold for object detection (default: 0.5).
This will process the image and print the JSON output to the console.
Extensibility
For details on how to add more classification types (e.g., helmet color, t-shirt color), please refer to the SCALING_STRATEGY.md document, which outlines the proposed architecture for extending the pipeline.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pax_detector-0.1.7.tar.gz.
File metadata
- Download URL: pax_detector-0.1.7.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
290d1311b51826f0a15316ae228d78e27583a77a0c7ea6c57238d8ac73eab4d3
|
|
| MD5 |
d820cd5e02146e895d94e71c47beaa7d
|
|
| BLAKE2b-256 |
faa3bd3a8c141352cdce552bd2a3489c48710defbc628e2ee8bfa9930f49a9bf
|
File details
Details for the file pax_detector-0.1.7-py3-none-any.whl.
File metadata
- Download URL: pax_detector-0.1.7-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fd4ea6f075d71e74b009ee1cc33914753fc5445a9f719099c5b77a803c07c55
|
|
| MD5 |
555812b5cd74486f12cdbbff35f094da
|
|
| BLAKE2b-256 |
68d88fe2a76cc463467aa1b9af1f7fcaf6b80185eaef7e019fb470967e9627de
|