Real Infrared Maritime Vessel Dataset
Real infrared imagery of maritime vessels. The dataset is provided in three forms — full-frame detection images, per-object classification crops, and a hand-curated subset.
Classes (7): liner, bulk carrier, warship, sailboat, canoe, container ship, fishing boat.
Layout
real-infrared-maritime-vessel-dataset/
├── original/ Full-frame IR images + XML bounding-box labels (detection)
│ ├── images/{train,test}/*.jpg (9,402 images)
│ ├── labels/train_xml/*.xml
│ └── labels.txt
├── cropped/ Per-object classification crops by class 0–6
│ ├── train/{0..6}/*.jpg (25,045)
│ ├── val/{0..6}/*.jpg (700)
│ ├── test/{0..6}/*.jpg (700)
│ ├── labels.txt, {train,val,test}.csv, class-*.npy
└── cropped-curated/ Hand-picked subset of the crops
├── train/{0..6}/*.jpg (1,750)
├── val/{0..6}/*.jpg (175)
└── test/{0..6}/*.jpg (175)
Note: synthetic / enhanced variants (
*_enhanced_*, prompt-conditioned, and upsampled splits) are excluded — this repo holds only real IR data.
Subsets
original/ — detection
Full-frame single-channel infrared images with Pascal-VOC-style XML annotations (bounding boxes). Use for detection or as the source for generating crops.
cropped/ — classification
Each labelled object in the original/ detection images is cropped out to build this classification set.
The annotation bounding box is expanded to add surrounding context (expanded_bbox), that region is cut from the full-frame image, and the crop is filed under its class-id folder within a train/val/test split.
Class ids here are assigned alphabetically by class name (see cropped/labels.txt), so they differ from the original/ label order.
Class distribution is imbalanced.
| class | id | train |
|---|---|---|
| bulk carrier | 0 | 1,740 |
| canoe | 1 | 4,735 |
| container ship | 2 | 495 |
| fishing boat | 3 | 8,918 |
| liner | 4 | 1,233 |
| sailboat | 5 | 5,577 |
| warship | 6 | 2,347 |
Each split ships a matching {train,val,test}.csv describing every crop, with columns:
| column | description |
|---|---|
filename | file name of the original full-frame source image (not the crop's own file name) |
instance_id | unique id of the object instance — the crop is saved as {instance_id}.jpg |
label | class name |
image_size | (W, H) of the source full-frame image |
truncated | 1 if the object is cut off at the image border, else 0 |
bbox | original annotation box [x_min, y_min, x_max, y_max] in the source image |
expanded_bbox | the context-expanded box actually used for the crop |
expanded_bbox_size | [w, h] of the expanded crop |
label_id | numeric class id (alphabetical, matches the folder name) |
cropped-curated/ — classification (high quality subset)
A manually curated, class-balanced-ish subset of the crops (1,750 / 175 / 175 train/val/test), organised by class id directly under each split. This is the subset used for the linear-evaluation and fine-tuning experiments in the parent project.
Class id → name
original/ label order:
0 liner · 1 bulk carrier · 2 warship · 3 sailboat · 4 canoe · 5 container ship · 6 fishing boat
cropped/ and cropped-curated/ label order (alphabetical):
0 bulk carrier · 1 canoe · 2 container ship · 3 fishing boat · 4 liner · 5 sailboat · 6 warship