TinyFormer
TinyFormer is a trainable transformer detector with a DINOv3 backbone.
- Aufgaben
- detection
- Installation
pip install libreyolo- Supportstufe
- Kern, seit v1.6.0. Trainierbare Kerndetektoren: Funktionen folgen den Flaggschiffen in derselben Release-Welle.
- Upstream
- TinyFormer von TinyFormer authors, Apache-2.0; DINOv3 terms. Publikation, Quelle
- Lizenzen
- Code MIT, Gewichte Apache-2.0; DINOv3 terms. Kommerzielle Nutzung
Install
pip install "libreyolo"Predict
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreTinyFormers.pt", device="cpu")result = model(SAMPLE_IMAGE)print(result)Choose a published checkpoint below. The naming distinguishes the VisDrone variants and Objects365-to-COCO variants. Prediction requires a square imgsz; rectangular inputs raise an error.
Train
Training accepts a detection dataset YAML. Omitted epochs, batch, imgsz, lr0 and amp use the family recipe.
Dataset setup describes the required training data.
from libreyolo import LibreYOLO model = LibreYOLO("LibreTinyFormers.pt", device="cpu")# coco8.yaml is a built-in 8-image detection dataset that downloads on first use.# Replace it with the path to your own detection dataset YAML.model.train(data="coco8.yaml", epochs=1, device="cpu", workers=0)Validate
from libreyolo import LibreYOLO model = LibreYOLO("LibreTinyFormers.pt", device="cpu")# coco8.yaml downloads on first use; pass your own detection dataset YAML instead.metrics = model.val(data="coco8.yaml", workers=0)print(metrics)Use the dataset format for this task. Validation explains the dataset requirements and returned metrics.
Export
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: unterstützt | Detection to TorchScript: unterstützt | Detection to ExecuTorch: unterstützt | Detection to TensorRT: unterstützt | Detection to OpenVINO: unterstützt | Detection to Paddle: nicht unterstützt | Detection to MNN: nicht unterstützt | Detection to RKNN: nicht unterstützt | Detection to ncnn: nicht unterstützt | Detection to TFLite: nicht unterstützt | Detection to CoreML: nicht unterstützt | Detection to Core AI: nicht unterstützt |
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreTinyFormers.pt", device="cpu")model.export(format="onnx")Export setup lists format dependencies and loading exported artifacts.
ONNX inputs and outputs
| Tensor | images float32 [batch, 3, height, width] |
|---|---|
| Farbe | RGB |
| Skalierung | Pixel / 255 |
| Normalisierung | Mittelwert [0.485,0.456,0.406], Standardabweichung [0.229,0.224,0.225] |
| Größenanpassung | auf Breite x Höhe strecken (ohne Auffüllen, Seitenverhältnis wird nicht beibehalten), Pillow bilinear |
So reproduzierst du die bilineare Skalierung von Pillow
LibreYOLO skaliert mit dem BILINEAR-Filter von Pillow (Image.resize). Das ist weder OpenCV INTER_LINEAR noch INTER_AREA: Beim Verkleinern weitet Pillow den Filter um den Verkleinerungsfaktor, und die Skalierungen von OpenCV verändern Detektionen und verschieben Boxen um mehrere Pixel. Um es ohne Pillow nachzubauen, skaliere eine Achse, runde auf 8 Bit, skaliere dann die andere Achse und runde erneut. Pro Achse gilt s = in_size / out_size und f = max(s, 1). Ausgabepixel i hat das Zentrum c = (i + 0.5) * s und liest Quellpixel j von int(c - f + 0.5) bis int(c + f + 0.5) - 1, auf das Bild begrenzt, jeweils mit dem Gewicht max(0, 1 - |j + 0.5 - c| / f), geteilt durch die Summe der Gewichte. Pillow rechnet in Festkomma und wählt die Achsenreihenfolge anhand der Bildform, daher können Gleitkomma-Gewichte bei einigen Pixeln um eine Stufe abweichen. Das ändert die Ergebnisse in unseren Prüfungen nicht.
Square input only. Export rejects a non-square imgsz, and height and width are 640 by default for every size. Another square imgsz must be a multiple of 32.
Batch size 1 only. The graph declares a dynamic batch axis, but batches of 2 or more fail in 1.7.0.
After the resize, divide by 255, then subtract the ImageNet mean and divide by the ImageNet std, per channel in RGB order.
Detection, Standardexport
| Ausgabe | Form | Bedeutung |
|---|---|---|
pred_logits | [batch, queries, nc] | One logit per query and class. Sigmoid is not applied. queries is 300 for every size. |
pred_boxes | [batch, queries, 4] | cx, cy, w, h of each query, normalized 0 to 1 of the input. The input is the whole image stretched, so these are also fractions of the original image. |
Nachbearbeitung
- Apply sigmoid to pred_logits.
- Flatten the [queries, nc] scores and take the top 300 (max_det, 300 by default). For flat index k, the query is k // nc and the class is k % nc. One query can yield several classes.
- Keep the pairs whose score is above the confidence threshold (0.25 by default).
- Convert the query's box to x1 = cx - w / 2, y1 = cy - h / 2, x2 = cx + w / 2, y2 = cy + h / 2. Multiply x by the original image width and y by the original image height.
- There is no NMS and the iou threshold is not used. TinyFormer predicts a set of boxes, and export with nms=True raises NotImplementedError.
- LibreYOLO does not clip these boxes, so an edge can sit slightly outside the image.
Um deine eigene Implementierung zu prüfen, lade dieselbe Datei mit LibreYOLO: LibreYOLO("model.onnx").predict("image.jpg") liefert die Referenzergebnisse. Geprüft mit LibreYOLO 1.7.0.
Checkpoints
| Datei | Lizenz der Gewichte |
|---|---|
| Detection | |
| LibreTinyFormers.pt | other |
| LibreTinyFormerm.pt | other |
| LibreTinyFormerl.pt | other |
| LibreTinyFormerx.pt | other |
| LibreTinyFormerxl.pt | other |
| LibreTinyFormers-visdrone.pt | other |
| LibreTinyFormerm-visdrone.pt | other |
| LibreTinyFormerl-visdrone.pt | other |
| LibreTinyFormerx-visdrone.pt | other |
| LibreTinyFormerx-obj2coco.pt | other |
| LibreTinyFormerxl-obj2coco.pt | other |
Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.
Licensing
Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.
Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.
- Originalarbeit
- TinyFormer, TinyFormer authors
- Upstream-Lizenz
- Apache-2.0; DINOv3 terms
- Upstream-Quelle
- github.com/mmpmmpmmpjosh/TinyFormer
- LibreYOLO-Code
- MIT
- Gewichte
- Apache-2.0; DINOv3 terms, erneut unter huggingface.co/LibreYOLO veröffentlicht
- Einordnung
- The detector uses Apache-2.0 source and a DINOv3 backbone with its own terms. Check the publisher declarations for the chosen checkpoint.
Citation
@article{hsieh2026tinyformer,
title={TinyFormer: Preserving Tiny Objects in YOLO-DETR Hybrid Real-time Detectors},
author={Hsieh, Jun-Wei and Kao, Meng-Yu and Kurniawan, Ghufron Wahyu and Peng, Kuan-Chuan},
journal={arXiv preprint arXiv:2605.25046},
year={2026}
}Aus dem Zitierblock der Autoren unter raw.githubusercontent.com/mmpmmpmmpjosh/TinyFormer/main/README.md kopiert.