# Street View Object Detection Challenge

## Dataset Description
This competition challenges participants to detect and classify various objects in street-level images. The dataset contains diverse urban street scenes with bounding box annotations for 5 different object classes commonly found in city environments.

## What am I predicting?
You need to detect objects in street-level images and predict:
- Object class (one of 5 categories)
- Bounding box coordinates (x_min, y_min, x_max, y_max)
- Confidence score for each detection

## Files

### 📁 train/
- `images/` - 200 street-level images in JPEG format
- `labels/` - 200 corresponding annotation files in YOLO format (one .txt file per image)

### 📁 test/
- `images/` - 100 test images requiring object detection predictions

### 📄 Core Files
- `sample_submission.csv` - Example showing the correct submission format
- `metadata.csv` - Image dimensions and statistics for all images
- `class_names.txt` - List of 5 object classes with their IDs
- `data.yaml` - YOLO configuration file with paths and class names

## Data Format

### Training Annotations (YOLO Format)
Each .txt file in `train/labels/` contains one line per object:
```
<class_id> <x_center> <y_center> <width> <height>
```
- All values are normalized (0-1) relative to image dimensions
- Example: `2 0.5432 0.3421 0.0521 0.0832` (car at center of image)

### Images
- **Format**: JPEG (.jpg)
- **Resolution**: 640×640 pixels (standardized)
- **Perspective**: Street-level view
- **Naming**: Each image has a unique identifier (e.g., `aguanambi-1000_png_jpg.rf.7179a0df58ad6448028bc5bc21dca41e`)

## Submission Format
Your submission file must be a CSV with these columns:

### Columns
- `image_id` - The test image filename without extension (must match exactly)
- `PredictionString` - Space-separated predictions for all objects detected

### PredictionString Format
Each object: `<class_id> <confidence> <x_min> <y_min> <x_max> <y_max>`
- Multiple objects are space-separated on the same line
- Coordinates in pixels (not normalized)
- Confidence between 0 and 1

### Example
```csv
image_id,PredictionString
aguanambi-1000_png_jpg.rf.7179a0df58ad6448028bc5bc21dca41e,2 0.95 100 200 300 400 3 0.87 500 100 600 200
aguanambi-1240_png_jpg.rf.7e110b54d205ef0537ddc5dec81a79c2,4 0.92 50 60 170 180
```

## Classes (5 total)

| ID | Class     | Description                    |
|----|-----------|--------------------------------|
| 0  | bicycle   | Two-wheeled pedal vehicle      |
| 1  | bus       | Large passenger vehicle        |
| 2  | car       | Standard passenger car         |
| 3  | motorbike | Motorcycle/scooter            |
| 4  | person    | Pedestrian/people             |

## Metadata Columns
The `metadata.csv` file contains:
- `image_id` - Unique image identifier
- `split` - Whether image is in train or test set
- `width` - Image width in pixels (640)
- `height` - Image height in pixels (640)
- `file_size_bytes` - File size
- `num_objects` - Object count (training images only)
- `aspect_ratio` - Width/height ratio (1.0 for all images)

## Important Notes
- **Street perspective**: All images are captured at street level, not aerial
- **Dense urban scenes**: Images contain multiple objects typical of city environments
- **Standardized size**: All images are resized to 640×640 for consistency
- **Varied lighting**: Dataset includes different times of day and weather conditions

## Evaluation
Submissions are evaluated using mean Average Precision (mAP) at IoU threshold 0.5 across all 5 classes.

## Tips
- Consider the challenges of street-level object detection with occlusions
- Pay attention to partially visible objects at image boundaries
- Some objects may be heavily occluded by others
- Use the provided YOLO format labels for training
- Ensure your predictions use pixel coordinates, not normalized values
- The dataset is balanced across all 5 classes