Dataset gallery marks images as annotated, but no bounding boxes are visible

I’m reviewing the public my ToolPPE combined dataset in Ultralytics Platform https://platform.ultralytics.com/jsonr2000/datasets/toolppe-combined-dataset. The image Hammer (2047)_JPEG.rf.ZNPixadpZEFjBwB3Ejyk shows two adjustable wrenches, but in the annotation viewer I don’t see bounding boxes around them. The viewer’s class panel is visible, and I checked that annotations are not hidden. There are thousands of images in my dataset with this issue.

The dataset still counts images like this as annotated. I’m concerned that some images may have missing object boxes despite being counted as labeled. Could you help clarify whether the annotations are present but not rendering in the viewer, or whether the labels are incomplete? Please also advise how to identify affected images without opening them one by one.

Hi @JSONR, I couldn’t inspect the dataset’s underlying annotations from here, so I can’t yet confirm whether this is a rendering issue or incomplete labels. The “annotated” status alone doesn’t establish that both wrenches have valid boxes.

To narrow this down without opening every image, use the gallery’s Table view and annotation-count sorting to compare counts. The Unannotated filter is useful for finding unlabeled images, but it won’t resolve the discrepancy for images already marked annotated.

The most useful next check is to export the dataset as NDJSON and locate the image record for Hammer (2047)_JPEG.rf.ZNPixadpZEFjBwB3Ejyk. For a detection dataset, its boxes should appear under annotations.boxes. A batch audit of these records can flag images with missing or empty boxes and malformed coordinates; it cannot determine whether every visible object was labeled.

Could you share that image’s exported record, omitting its signed image URL, and the original label file if available? Comparing those would help distinguish missing/imported labels from valid boxes that the viewer isn’t displaying. Please also try a hard refresh or another browser; updating the local ultralytics package won’t update the hosted Platform viewer.

Hi @JSONR, I took a closer look at the public dataset. The labels are there, but on the affected images they are stored as oriented boxes (OBB) rather than detection boxes, so a Detect dataset doesn’t show them.

  • Your dataset’s task is Detect. 3,768 of its 7,088 images have OBB labels (3,756 only OBB, 12 mixed), and the other 3,320 have regular detection boxes. Platform imports an archive whose label rows all have 8 coordinates (four corner points, as in a YOLO OBB export) as OBB, so these most likely came from an archive in that format.
  • Each image stores annotations for every task type, but only the dataset’s active task is shown in the editor and included in exports and training. So while the dataset is Detect, these 3,768 images’ labels are not only hidden in the viewer but also left out of exports and training, even though the images count as annotated.
  • Hammer (2047)_JPEG.rf.ZNPixadpZEFjBwB3Ejyk has 6 OBB labels, all class Hammer, so it’s also worth checking the class mapping in that source export, since the image shows wrenches.

To find the affected images, @rachelwilson’s raw-label check works if you count values per row rather than rows per file: rows with 9 values (class plus 4 corner points) are OBB, and rows with 5 values (class, x center, y center, width, height) are detection boxes.

Switching the dataset task to OBB won’t fix it, because the 3,320 images with detection boxes would then be hidden instead. The clean fix is to convert the 9-value rows before uploading: take the min and max of the four x and four y values, then write class xc yc w h with xc = (xmin + xmax) / 2, yc = (ymin + ymax) / 2, w = xmax - xmin and h = ymax - ymin. Nearly all of your OBB labels (5,605 of 5,855) are axis-aligned rectangles, so nothing is lost for them, and the few rotated ones get the enclosing box a detection model needs. Then upload the converted archive to a new Detect dataset.

Hi @JSONR, an update and a correction to my last reply.

Platform now reads OBB labels in a Detect dataset as their enclosing detection boxes, so your 3,768 OBB-labelled images show their boxes in the gallery and editor and are included in exports and training. You no longer need to convert the labels or upload a new dataset; the existing one works as it is. For the 250 rotated OBBs, the box is the smallest axis-aligned rectangle around the four corners, the same box Ultralytics detect training builds from an 8-coordinate row.

Correction: Hammer (2047)_JPEG.rf.ZNPixadpZEFjBwB3Ejyk shows six hammers, and its 6 labels are all class Hammer, so there’s nothing to check in its class mapping.

Hi @JSONR , the bug should now be fixed on the Platform side. Please try again and let us know if you run into any issues. Thanks!

Thank you very much for your help, the images now show up with the correct OBBs.