Yolo Vision Shenzhen
Shenzhen
Junte-se agora
Glossário

Fusão de modelos

Descubra como a fusão de modelos combina vários modelos pré-treinados num único. Saiba como fundir os pesos Ultralytics para melhorar o desempenho sem aumentar a latência.

A fusão de modelos é uma técnica inovadora na aprendizagem automática (ML) que combina os parâmetros aprendidos (pesos) de vários modelos pré-treinados num único modelo unificado. Ao contrário das configurações tradicionais com vários modelos, a fusão combina diretamente os pesos dos modelos no espaço de parâmetros. Isto permite aos profissionais combinar o conhecimento especializado de vários modelos ajustados para tarefas ou conjuntos de dados diferentes, sem incorrer nos custos de memória e computacionais associados à execução simultânea de vários modelos.

Ao aplicar operações diretamente aos pesos, a fusão de modelos mantém a pegada arquitetónica de uma única rede. Isto é particularmente valioso na implementação de pipelines avançados de visão computacional (CV) em dispositivos periféricos, onde a redução da latência de inferência e a poupança de memória são fundamentais.

Fusão de modelos de distinção

É útil distinguir a fusão de modelos de conceitos relacionados, como o conjunto de modelos e a aprendizagem por transferência.

  • Fusão de modelos vs. conjunto de modelos: Um conjunto de modelos mantém as redes individuais separadas, executando cada uma delas durante a inferência e calculando a média dos seus resultados. Isto aumenta a precisão, mas multiplica a sobrecarga computacional. A fusão de modelos combina os pesos reais antes da inferência, resultando num único modelo que não requer recursos computacionais adicionais durante a execução.
  • Fusão de modelos vs. aprendizagem por transferência: a aprendizagem por transferência consiste em pegar num modelo base e treiná-lo adicionalmente com um novo conjunto de dados. A fusão de modelos não requer nenhum ajuste adicional; utiliza operações matemáticas para fundir modelos já treinados.

Técnicas comuns

Os investigadores desenvolveram vários métodos para combinar pesos de forma eficaz sem comprometer as capacidades subjacentes da rede, tal como explorado em recentes estudos académicos publicados no arXiv.

  • Média ponderada: O método mais simples, que calcula a média dos pesos de vários modelos que partilham a mesma arquitetura.
  • Aritmética de tarefas: uma técnica em que «vetores de tarefas» (a diferença entre um modelo ajustado e o seu modelo base) são somados ou subtraídos para combinar ou remover comportamentos específicos.
  • TIES-Merging: Uma abordagem avançada que resolve a interferência entre parâmetros através da eliminação de valores redundantes e da escolha de sinais consistentes entre modelos, preservando o desempenho em diversas tarefas.

Aplicações no Mundo Real

A fusão de modelos é altamente eficaz para criar sistemas generalizados sem necessidade de retreinar os modelos a partir do zero.

  • Veículos autónomos: Um carro autónomo pode utilizar um modelo base Ultralytics . Os engenheiros podem treinar independentemente uma versão do modelo para detect movimentos detect de peões e outra para interpretar sinais de trânsito complexos. A fusão destes dois modelos cria um único detetor altamente capaz que lida com ambas as tarefas simultaneamente, sem duplicar o tempo de inferência.
  • IA na área da saúde: Na imagiologia médica, diferentes hospitais de investigação podem ajustar modelos com base em conjuntos de dados locais especializados (por exemplo, um para exames de ressonância magnética e outro para tomografias computadorizadas) devido a leis rigorosas de privacidade de dados. Ao combinar os modelos de forma segura, os investigadores podem criar uma ferramenta de diagnóstico abrangente que beneficia de distribuições de dados diversificadas.

Exemplo: Média ponderada simples

Pode realizar facilmente a fusão de modelos básicos utilizando PyTorch. O exemplo a seguir demonstra como calcular a média dos dicionários de estado de dois modelos com estrutura idêntica.

import torch

# Load the weights (state dicts) from two identical architectures
weights_a = torch.load("yolo26_task1.pt")["model"].state_dict()
weights_b = torch.load("yolo26_task2.pt")["model"].state_dict()

# Perform simple weight averaging
merged_weights = {k: (weights_a[k] + weights_b[k]) / 2.0 for k in weights_a.keys()}

# Save the newly merged model weights
torch.save({"model": merged_weights}, "yolo26_merged.pt")

Para equipas que pretendem simplificar os complexos fluxos de trabalho de anotação, treino e implementação de conjuntos de dados, a Ultralytics oferece uma interface intuitiva para gerir projetos de IA de visão de ponta a ponta sem esforço.

Vamos construir juntos o futuro da IA!

Comece sua jornada com o futuro do aprendizado de máquina