Alternativa ao SuperGradients para visão computacional em tempo real
O SuperGradients era a biblioteca de treinamento de código aberto da Deci e a casa do YOLO-NAS, um dos detectores em tempo real mais precisos já lançados. Em maio de 2024, a NVIDIA adquiriu a Deci, e o SuperGradients ficou inativo. A última versão, 3.7.1, saiu em 8 de abril de 2024. A documentação em supergradients.com saiu do ar. Há cerca de 120 issues abertas, e a issue intitulada "Este projeto morreu?" não tem resposta de um mantenedor, o que por si só já responde à pergunta.
O repositório não foi arquivado, então à primeira vista parece ativo. Na prática, o abandono fica evidente assim que você tenta instalá-lo: super-gradients fixa torchmetrics==0.8, que entra em conflito com as pilhas atuais do PyTorch, e ainda traz hydra, omegaconf, boto3 e tensorboard. A cada mês, essas versões fixadas entram em mais conflito com o restante do seu ambiente, e nenhuma correção está a caminho.
Isso não torna o YOLO-NAS um modelo pior. A variante grande ainda alcança 52.2 mAP no COCO em velocidade de tempo real. O modelo está bem; o lugar onde ele morava pegou fogo.
Execute os mesmos pesos no LibreYOLO
O LibreYOLO carrega os checkpoints YOLO-NAS diretamente da CDN da Deci, usando a mesma API que usa para todas as outras famílias de modelos. Você não precisa escrever configurações de hydra nem desembrulhar um wrapper de predição:
from libreyolo import LibreYOLO
model = LibreYOLO("LibreYOLONASs.pt") # download automático na primeira execução
results = model("image.jpg", save=True)
print(results[0].boxes.xyxy)
print(results[0].boxes.conf)
As variantes de detecção S, M e L funcionam, assim como a de pose: troque por LibreYOLONASs-pose.pt para obter os keypoints do COCO. Como todas as famílias retornam o mesmo objeto Results, comparar YOLO-NAS com RF-DETR ou D-FINE nos seus próprios dados exige uma alteração de uma linha, em vez de uma segunda base de código.
Treinamento e exportação, não apenas inferência
O SuperGradients era, antes de tudo, uma biblioteca de treinamento, então uma alternativa de verdade precisa permitir treinar. O LibreYOLO faz fine-tuning do YOLO-NAS no seu dataset com a mesma chamada usada para os outros modelos:
from libreyolo import LibreYOLO
model = LibreYOLO("LibreYOLONASs.pt")
model.train(data="my-dataset.yaml", epochs=100, imgsz=640, batch=16)
Você também pode treinar a partir de um modelo com inicialização aleatória, o que importa para o licenciamento (falaremos mais disso abaixo). A validação retorna métricas mAP para qualquer dataset no seu formato, e a exportação inclui ONNX, TorchScript, OpenVINO, NCNN e TFLite. Essa matriz de exportação é mais ampla do que a biblioteca original chegou a oferecer para YOLO-NAS. Os detalhes estão na página de documentação do YOLO-NAS, e há uma nota mais curta sobre como YOLO-NAS continua sendo mantido.
Quando o repositório antigo ainda é a escolha certa
Uma seção franca. Três casos em que você deve manter o SuperGradients instalado:
CoreML. O LibreYOLO não exporta YOLO-NAS para CoreML. Se você distribui em dispositivos Apple e precisa de um .mlpackage, o SuperGradients ainda tem um caminho funcional.
TensorRT. O SuperGradients documentou e testou o fluxo com TensorRT para YOLO-NAS, incluindo todas as particularidades do tamanho de batch. O suporte do LibreYOLO a TensorRT para essa família não foi testado.
Receitas de treinamento com reconhecimento de quantização. O YOLO-NAS foi projetado para INT8, e o SuperGradients oferecia as receitas de QAT que faziam o modelo se destacar nesse cenário. O LibreYOLO exporta com quantização INT8 e FP16, mas não tem um equivalente a essas receitas de treinamento.
O repositório ainda funciona se você fixar um ambiente da época de 2024. Só não é uma boa ideia construir algo novo sobre uma base que ninguém mantém.
Uma observação sobre os pesos
Os pesos pré-treinados do YOLO-NAS são da Deci e foram lançados sob uma licença para uso não comercial. Essa licença acompanha os pesos em qualquer biblioteca que os carregue. O LibreYOLO não hospeda nem espelha esses pesos: o download vem da CDN pública da Deci e exibe os termos da Deci antes de começar. Para pesquisa e trabalho não comercial, qualquer uma das opções serve.
Se você precisa de um YOLO-NAS para uso comercial, agora há um caminho claro: a própria arquitetura tem uma licença permissiva, então treinar do zero com seus dados gera um modelo que não deriva de nenhum checkpoint da Deci. O LibreYOLO oferece suporte exatamente a isso com LibreYOLONAS(None, size="s").
Experimente
pip install libreyolo
from libreyolo import LibreYOLO
model = LibreYOLO("LibreYOLONASl.pt")
results = model("image.jpg", save=True)
O LibreYOLO usa a licença MIT, roda em Linux, Mac e Windows e funciona em GPU, Apple Silicon e CPU comum sem nenhuma alteração no código. Uma API reúne YOLO-NAS, RF-DETR, D-FINE, DEIM, YOLOX, RTMDet e muitos outros, para detecção, segmentação, pose, classificação, profundidade e rastreamento.
Dê uma estrela no GitHub: github.com/LibreYOLO/libreyolo | Documentação: libreyolo.com/docs