## Competition Challenge
Detect and classify vehicles and pedestrians in street-level urban images. This dataset captures the complexity of city traffic from a ground perspective, including various vehicle types and pedestrians in diverse urban scenarios.

## Dataset Overview
- **Training Set**: 200 street-level images with YOLO format annotations
- **Test Set**: 100 images requiring object detection predictions  
- **Classes**: 5 traffic participant categories (bicycle, bus, car, motorbike, person)
- **Image Resolution**: 640×640 pixels (standardized)
- **Average Objects per Image**: Multiple objects per scene (dense urban environments)

## Competition Format

### Phase 1: Model Development
- Access to training dataset
- Teams can train and iterate on their models
- Use provided baseline notebooks and examples

### Phase 2: Final Testing  
- Test dataset available (labels withheld)
- Submit predictions for evaluation
- Multiple submissions allowed

## Resources Provided
- Training data with annotations
- Sample submission files
- Baseline YOLOv8 notebook
- Dataset metadata and statistics
- YOLO configuration files

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

The mAP metric measures both the accuracy of object detection (localization) and classification. For each class, Average Precision (AP) is calculated, and the mean of all APs provides the final score.

### Leaderboard Split
- **Public Leaderboard**: 50% of test data (50 images)
- **Private Leaderboard**: 50% of test data (50 images)

## Submission File Format
Submissions must be a CSV file with the following columns:

- **image_id**: Test image filename without extension
- **PredictionString**: Space-separated predictions for all detected objects

Each prediction in the PredictionString follows this format:
```
<class_id> <confidence> <x_min> <y_min> <x_max> <y_max>
```

### Example submission.csv:
```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
```

## Important Notes
- Coordinates must be in pixels (not normalized)
- Confidence scores between 0 and 1
- Multiple objects separated by spaces on the same line
- Empty detections should have empty PredictionString

## Ranking
- Teams ranked by mAP score (higher is better)
- Final ranking based on private leaderboard scores

## Object Classes
The 5 object classes with their corresponding IDs:

| 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             |

## Technical Specifications

### Image Characteristics
- **Perspective**: Street-level view (not aerial)
- **Lighting**: Various conditions including day/night
- **Occlusions**: Objects may be partially visible
- **Dense scenes**: Multiple overlapping objects

### Annotation Format
- YOLO format: `class_id x_center y_center width height`
- All annotation values normalized (0-1)
- One `.txt` file per image

### Recommended Approaches
- Object detection frameworks: YOLOv8, Faster R-CNN, RetinaNet
- Data augmentation for varied lighting conditions
- Handle occlusions and partial objects
- Consider small object detection techniques

## Tips for Success
1. **Understand the perspective**: Street-level images have different challenges than aerial views
2. **Handle occlusions**: Many objects are partially hidden behind others
3. **Edge cases**: Objects at image boundaries may be cut off
4. **Class balance**: Dataset is balanced across all 5 classes
5. **Augmentation**: Use appropriate augmentations for street scenes
6. **Post-processing**: Non-maximum suppression tuning can improve results

## Dataset Files Structure
```
street_view_dataset_small/
├── train/
│   ├── images/     # 200 training images
│   └── labels/     # YOLO format annotations
├── test/
│   └── images/     # 100 test images
├── data.yaml       # YOLOv8 configuration
├── class_names.txt # List of classes
├── sample_submission.csv   # Submission template
```

## Getting Started
1. Download and extract the dataset
2. Review the baseline notebook for a simple YOLOv8 example
3. Explore the training data and annotations
4. Train your model using the provided splits
5. Generate predictions for test images
6. Submit your predictions in the required CSV format

Good luck with your object detection models!