TinyFormer
TinyFormer is a trainable transformer detector with a DINOv3 backbone.
- Задачі
- detection
- Встановлення
pip install libreyolo- Рівень підтримки
- Основний, починаючи з v1.6.0. Основні придатні до навчання детектори: функції з'являються після флагманських моделей у тій самій хвилі випуску.
- Першоджерело
- TinyFormer, автори: TinyFormer authors, ліцензія Apache-2.0; DINOv3 terms. Стаття, джерело
- Ліцензії
- Код: MIT, ваги: Apache-2.0; DINOv3 terms. Комерційне використання
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
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: підтримується | Detection to TorchScript: підтримується | Detection to ExecuTorch: підтримується | Detection to TensorRT: підтримується | Detection to OpenVINO: підтримується | Detection to Paddle: не підтримується | Detection to MNN: не підтримується | Detection to RKNN: не підтримується | Detection to ncnn: не підтримується | Detection to TFLite: не підтримується | Detection to CoreML: не підтримується | Detection to Core AI: не підтримується |
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
| Тензор | images float32 [batch, 3, height, width] |
|---|---|
| Колір | RGB |
| Масштабування | піксель / 255 |
| Нормалізація | середнє [0.485,0.456,0.406], стандартне відхилення [0.229,0.224,0.225] |
| Зміна розміру | розтягнути до ширини x висоти (без заповнення, співвідношення сторін не зберігається), Pillow bilinear |
Як відтворити білінійну зміну розміру Pillow
LibreYOLO змінює розмір фільтром BILINEAR з Pillow (Image.resize). Це не OpenCV INTER_LINEAR і не INTER_AREA: під час зменшення Pillow розширює фільтр на коефіцієнт зменшення, а зміна розміру в OpenCV змінює детекції та зсуває рамки на кілька пікселів. Щоб відтворити його без Pillow, змініть розмір за однією віссю, округліть до 8 біт, потім змініть розмір за іншою віссю й округліть знову. Для кожної осі нехай s = in_size / out_size і f = max(s, 1). Вихідний піксель i має центр c = (i + 0.5) * s і читає вихідні пікселі j від int(c - f + 0.5) до int(c + f + 0.5) - 1, обмежені зображенням, кожен з вагою max(0, 1 - |j + 0.5 - c| / f), поділеною на суму ваг. Pillow рахує у фіксованій крапці й обирає порядок осей за формою зображення, тому ваги з плаваючою крапкою можуть відрізнятися від нього на один рівень на кількох пікселях. Це не змінює результати в наших перевірках.
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, експорт за замовчуванням
| Вихід | Форма | Значення |
|---|---|---|
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. |
Постобробка
- 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.
Щоб перевірити власну реалізацію, пропустіть той самий файл через LibreYOLO: LibreYOLO("model.onnx").predict("image.jpg") повертає еталонні результати. Перевірено на LibreYOLO 1.7.0.
Checkpoints
| Файл | Ліцензія ваг |
|---|---|
| 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 |
Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.
Licensing
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- TinyFormer, TinyFormer authors
- Ліцензія першоджерела
- Apache-2.0; DINOv3 terms
- Джерело першоджерела
- github.com/mmpmmpmmpjosh/TinyFormer
- Код LibreYOLO
- MIT
- Ваги
- Apache-2.0; DINOv3 terms, повторно опубліковано на huggingface.co/LibreYOLO
- Тлумачення
- 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}
}Скопійовано з блоку цитування авторів на сторінці raw.githubusercontent.com/mmpmmpmmpjosh/TinyFormer/main/README.md.