Table of Contents
Introdução: Por que aprender profundamente para a classificação de imagem?
A classificação de imagens – a tarefa de atribuir um rótulo a uma imagem de um conjunto predefinido de categorias – tornou-se uma pedra angular da visão computacional moderna. Do diagnóstico médico à condução autônoma, a classificação precisa impulsiona inúmeras aplicações do mundo real. A aprendizagem profunda, particularmente redes neurais convolucionais (CNNs), melhorou drasticamente a precisão da classificação, muitas vezes superando o desempenho de nível humano em conjuntos de dados de referência. No entanto, construir e treinar modelos profundos do zero requer dados significativos, recursos computacionais e expertise. É aí que a Caixa de Ferramentas de Aprendizagem Profunda da MATLAB entra na imagem, proporcionando um ambiente integrado que reduz a barreira à entrada, oferecendo ainda a flexibilidade necessária para sistemas avançados de pesquisa e produção.
A MATLAB tem sido uma das favoritas entre engenheiros e cientistas para computação numérica e prototipagem. A Deep Learning Toolbox amplia essa capacidade com camadas pré-construídas, funções de treinamento e aceleração de hardware sem costura. Quer você seja um estudante que explora redes neurais ou um profissional que implementa um classificador em tempo real, a caixa de ferramentas oferece um fluxo de trabalho estruturado que abrange a preparação de dados, o design de modelos, treinamento, avaliação e implantação.
Visão geral da caixa de ferramentas de aprendizagem profunda
A Deep Learning Toolbox (anteriormente a Neural Network Toolbox) fornece um conjunto abrangente de funções e aplicativos para projetar, treinar e simular redes neurais profundas. Ele suporta uma ampla gama de arquiteturas, incluindo:
- Redes Neurais Convolucionais (CNNs) para dados de imagem e de espaço.
- Redes Neural Recorrentes (RNNs) e LSTMs para dados de sequência e séries temporais.
- Redes Transformer ] para tarefas de processamento e visão de linguagem natural.
- Redes Adversárias Gerativas (GANs)] para geração de imagens.
A caixa de ferramentas integra-se ao ecossistema mais amplo da MATLAB, incluindo a Caixa de Ferramentas de Processamento de Imagens, a Caixa de Ferramentas de Visão de Computador e a Caixa de Ferramentas de Computação Paralela, permitindo soluções de ponta a ponta. As principais características especificamente benéficas para a classificação de imagens incluem:
- Modelos pré-treinados como AlexNet, VGG-16/19, GoogLeNet, ResNet, Inception, e EfficientNet, que podem ser usados para a aprendizagem de transferência ou extração de recursos.
- Aumento de dados através do objeto , permitindo transformações no ar como rotação, escala, tradução e reflexão para ampliar artificialmente os conjuntos de treinamento e reduzir o excesso de ajuste.
- Diferenciação automática e suporte a GPU usando a caixa de ferramentas de computação paralela e a caixa de ferramentas de integração da MATLAB para treinamento mais rápido.
- Ferramentas de visualização como e para inspecionar arquiteturas de camadas, mapas de ativação e progresso de treinamento.
- Opções de implantação incluindo geração de código, exportação para TensorFlow ou ONNX, e integração direta com hardware incorporado via codificador MATLAB.
Compreendendo Redes Neurais Convolucionais para Classificação de Imagem
No núcleo da maioria dos sistemas de classificação de imagens encontra-se uma CNN. Essas redes aprendem características hierárquicas: as primeiras camadas detectam bordas e texturas, as camadas médias reconhecem formas e peças, e as camadas mais profundas identificam objetos.A Caixa de Ferramentas de Aprendizagem Profunda da MATLAB implementa todos os tipos de camadas padrão – convolution2dLayer, maxPooling2dLayer, FullyConnectedLayer, softmaxLayer e classificationLayer – tornando-se simples para montar arquiteturas personalizadas. A caixa de ferramentas também suporta inovações modernas como normalização em lote, evasão e conexões residuais.
Por que usar MATLAB para o projeto CNN?
Comparado com frameworks como TensorFlow ou PyTorch, a MATLAB oferece várias vantagens únicas:
- Ambiente interativo: O aplicativo permite a construção de redes de arrastar e soltar, que é ideal para iniciantes ou prototipagem rápida.
- Depuração integrada: Você pode passar por iterações de treinamento e inspecionar ativações em qualquer camada, simplificando o diagnóstico do modelo.
- Eficiência da memória: A MATLAB lida automaticamente com a memória GPU, evitando erros comuns de memória que afetam a codificação manual.
- Trackers métricos incorporados: O treinamento registra automaticamente as métricas de precisão, perda e validação, que podem ser plotadas em tempo real.
Preparação de dados: A Fundação de um Classificador Bem-sucedido
Não importa o quão sofisticado o modelo, dados ruins levam a um desempenho ruim. A MATLAB fornece vários utilitários para gerenciar conjuntos de dados de imagem de forma eficiente.
Utilização de
A função é a forma padrão de carregar grandes coleções de imagens. Ela etiqueta automaticamente imagens com base em nomes de pastas, suporta a divisão em conjuntos de treino, validação e teste, e pode ler imagens de disco em lotes para evitar o transbordamento de memória. Por exemplo:
imds = imageDatastore('path/to/images', 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
[imdsTrain, imdsValidation, imdsTest] = splitEachLabel(imds, 0.7, 0.15, 'randomized');
Acréscimo de dados com
Para melhorar a generalização, especialmente com dados limitados, você pode aplicar transformações aleatórias durante o treinamento. O MATLAB suporta:
- Rotação aleatória (0-360 graus)
- Reflexões horizontais/verticais aleatórias
- Escala aleatória e tradução
- Ajustes de inclinação e contraste
Estas transformações são aplicadas no momento, o que significa que o modelo vê uma imagem ligeiramente diferente em cada época sem armazenar várias cópias no disco. Isto reduz significativamente o excesso de montagem e melhora a robustez.
Manipulação de conjuntos de dados desequilibrados
Os conjuntos de dados do mundo real têm frequentemente distribuições de classes desiguais. O MATLAB oferece camadas de classificação ponderadas () e pode calcular os pesos das classes automaticamente a partir das frequências de conjuntos de treino. Alternativamente, você pode sobre-amostrar classes minoritárias usando um datastore personalizado ou a propriedade da opção de treino .
Aprendizagem de Transferência: Acelerando o Desenvolvimento com Modelos Pré-treinados
Treinar uma CNN profunda do zero em um pequeno conjunto de dados raramente é prático. A aprendizagem de transferência aproveita um modelo pré-treinado em um conjunto de dados grande (por exemplo, ImageNet) e ajusta-o para uma nova tarefa. MATLAB torna este processo excepcionalmente simples.
Carregando uma rede pré- treinada
Use ou , , etc. Estas funções baixam automaticamente o modelo se não já estiver presente no disco. As redes são devolvidas como objeto ou , preservando pesos e estrutura de camadas.
Modificando a rede para uma tarefa personalizada
As camadas finais de uma rede pré- treinada são projetadas para a classificação ImageNet de 1000 classes. Para adaptá- la ao seu número de classes (por exemplo, 5), você substitui a camada totalmente conectada e a camada de classificação:
lgraph = layerGraph(net);
newLayers = [
fullyConnectedLayer(numClasses, 'Name', 'fc_new', 'WeightLearnRateFactor', 10, 'BiasLearnRateFactor', 10)
softmaxLayer('Name', 'softmax_new')
classificationLayer('Name', 'classoutput_new')
];
lgraph = replaceLayer(lgraph, 'fc1000', newLayers(1));
lgraph = replaceLayer(lgraph, 'fc1000_softmax', newLayers(2));
lgraph = replaceLayer(lgraph, 'ClassificationLayer_fc1000', newLayers(3));
Extração de Fine-Tuning vs. Característica
Duas estratégias comuns:
- Extracção de características: Congelar as camadas iniciais (defina a sua taxa de aprendizagem para 0) e apenas treinar as novas camadas de classificação. Útil quando o novo conjunto de dados é pequeno e semelhante ao conjunto de dados original.
- Afinação de modo adequado: Treinar todas as camadas com uma pequena taxa de aprendizagem. Melhor quando o novo conjunto de dados é maior ou significativamente diferente da ImageNet. MATLAB permite definir fatores de taxa de aprendizagem por camada (como mostrado acima) para controlar o quanto cada camada se adapta.
Dicas práticas para a transferência de aprendizagem em MATLAB
- Redimensionar sempre as imagens para o tamanho de entrada esperado pela rede pré-treinada (por exemplo, 224x224 para ResNet). Use o para redimensionar eficiente durante o treinamento.
- Utilizar dados de validação para monitorar overfitting; se a precisão de validação platôs precoce, reduzir o número de épocas de treinamento.
- Experimente com diferentes arquiteturas pré-treinadas.Modelos leves como MobileNet são mais rápidos, mas menos precisos; modelos mais profundos como ResNet-152 oferecem maior precisão a um custo computacional.
Treinamento do classificador: Opções, Hiperparâmetros e Monitoramento
Uma vez que a rede é definida e os dados são preparados, você chama com o datastore, o gráfico de camada, e opções de treinamento.
Configurar as Opções de Treinamento
A função permite controlar praticamente todos os aspectos do treinamento:
- Solver : 'sgdm' (desce de gradiente estocástico com momento), 'adam', ou 'rmsprop'. Adão muitas vezes converge mais rápido para ajuste fino.
- Inicialmente LearnRate: Normalmente 1e-4 para ajuste fino, 1e-3 para treinamento do zero.
- MiniBatchSize: Depende da memória da GPU; os valores comuns são 32, 64 ou 128.
- MaxEpochs: Número de passes completos através dos dados de treinamento. Comece com 10-20 para ajuste fino.
- ValidationData: Forneça uma datastore de validação para monitorar o desempenho de cada época.
- ValidationFrequency: Quantas iterações entre verificações de validação.
- Plots: 'treining-progress' para ver parcelas ao vivo de precisão e perda.
- LearnRateSchedule: Reduzir a taxa de aprendizagem após um certo número de épocas (por exemplo, 'pecualwise').
- L2Regularização: Decaimento de peso para evitar sobreposição (padrão 1e-4).
Acompanhamento do progresso da formação
O gráfico de treinamento da MATLAB mostra a precisão/perda de treinamento e validação ao longo do tempo. Se a precisão de validação parar de melhorar enquanto a precisão de treinamento continua, o modelo está superajustando – considere adicionar abandono, reduzir o tamanho da rede ou usar um aumento mais forte. A caixa de ferramentas também registra informações de treinamento em uma estrutura que pode ser analisada mais tarde.
Parar e Verificar cedo
Embora não seja incorporado diretamente, você pode implementar a parada precoce usando a propriedade de opções de treinamento. Alternativamente, use a opção para salvar redes intermediárias cada número fixo de épocas, garantindo que você não perca o progresso.
Avaliação do desempenho do modelo
Após o treinamento, você precisa verificar se o modelo generaliza bem os dados invisíveis. A MATLAB fornece várias ferramentas de avaliação.
Classificando Imagens de Teste
YPred = classify(net, imdsTest);
YTest = imdsTest.Labels;
accuracy = sum(YPred == YTest) / numel(YTest);
Matriz de Confusão e Metricas Per-Class
Use para visualizar onde o modelo comete erros. Para precisão por classe, lembre-se, e F1-score, use:
confMat = confusionmat(YTest, YPred);
Em seguida, calcular métricas manualmente ou usar a saída com a opção para obter escores de previsão para análise ROC.
ROC e AUC
Para classificação binária ou cenários de um-vs-todos, você pode plotar as curvas de característica de operação do receptor (ROC) usando . Isto é especialmente importante na imagem médica onde a sintonia do limiar importa.
Implantação: Levando o modelo para a produção
A força da MATLAB se estende além da prototipagem – ela oferece várias vias para implantar modelos treinados em aplicações do mundo real.
Exportar para outros quadros
- TensorFlow/Keras: Use para exportar para o formato ONNX, em seguida, converter para TensorFlow.
- PyTorch: Caminho de exportação ONNX semelhante.
Codificador MATLAB e codificador GPU
Gere código C/C++ autônomo da sua rede treinada usando o codificador MATLAB. Isto é ideal para incorporar classificadores em desktop ou sistemas incorporados sem exigir um tempo de execução MATLAB. O codificador GPU gera código CUDA para GPUs NVIDIA, permitindo inferência em tempo real na borda.
Servidor de Compilação e Produção MATLAB
Pacote o classificador como um executável independente ou uma biblioteca compartilhada. Servidor de Produção MATLAB permite que você implante modelos como APIs RESTful que podem ser consumidos por aplicativos web, aplicativos móveis ou software corporativo.
Ativar para o Hardware Incorporado
Com o suporte do Deep Learning Toolbox para ARM Cortex-A e NVIDIA Jetson, você pode implantar redes otimizadas diretamente em sistemas embarcados. A função pode gerar código otimizado por hardware que se encaixa em ambientes restritos a recursos.
Aplicações e estudos de caso do mundo real
Engenheiros e pesquisadores usaram a Caixa de Ferramentas de Aprendizagem Profunda da MATLAB para classificação de imagens em vários domínios:
- Imagem médica: Classificando radiografias de tórax para detecção de pneumonia, imagens de fundo retiniano para classificação de retinopatia diabética e lâminas histopatológicas para diagnóstico de câncer.
- Movimentação autónoma: Reconhecer sinais de trânsito, peões e marcas de faixa utilizando redes móveis implantadas em sistemas incorporados em veículos.
- ]Agricultura: Identificando doenças vegetais a partir de imagens de folhas, classificando frutos por maturação.
- Fabricação: Inspeção visual para defeitos em linhas de montagem, muitas vezes com inferência em tempo real usando o codificador GPU.
- Segurança: Reconhecimento facial e detecção de objetos em imagens de vigilância.
Para exemplos concretos, ver O tutorial oficial de aprendizagem da transferência da MATLAB e este artigo sobre aprendizagem profunda em imagens médicas.
Comparando MATLAB com outros quadros de aprendizagem profundos
Embora a MATLAB não seja de código aberto, sua ferramenta oferece integração incomparável para engenheiros que já trabalham no ecossistema MATLAB. Para equipes que necessitam de soluções livres, de código aberto, o TensorFlow ou o PyTorch podem ser preferidos. No entanto, as vantagens da MATLAB incluem:
- Fácil de uso: Não há necessidade de gerenciar ambientes Python, conflitos de versão ou inferno de dependência.
- Simulink integration: Para modelagem em nível de sistema, você pode incorporar blocos de aprendizagem profunda em simulações maiores.
- Iniciou o processamento de sinal e imagem: As etapas de pré-processamento podem ser escritas na mesma língua sem importar bibliotecas adicionais.
Para projetos onde a colaboração com usuários não-MATLAB é crítica, exportar para ONNX garante interoperabilidade. Saiba mais sobre exportação ONNX aqui.
Pistas comuns e como evitá - las
- [[FLT: 0]]Input size mismatch: Verifique sempre se a camada de entrada corresponde ao tamanho das suas imagens. Use [[FLT: 33]] para redimensionar.
- Sobreposição: Aumentar a ampliação, adicionar camadas de abandono, reduzir a capacidade de rede ou usar uma regularização mais forte.
- Treinamento lento: Certifique-se de que você tem uma GPU compatível e que a MATLAB está usando-a (consulte com ). Habilite trabalhadores paralelos se você tiver várias GPUs.
- Erros de memória : Reduzir o tamanho do mini-batch ou usar arrays para conjuntos de dados fora de memória.
- Ignorando o desequilíbrio de classe: Verifique sempre a distribuição de rótulos; use perda ponderada ou sobreamostragem.
Tópicos Avançados: Treinamento personalizado Loops e Pesquisa
Para pesquisadores que empurram as fases de ponta, o MATLAB suporta loops de treinamento personalizados usando objetos e diferenciação automática. Você pode implementar novas camadas, funções de perda ou procedimentos de treinamento (por exemplo, meta-aprendizagem, treinamento contraditório). A documentação sobre loops de treinamento personalizados ] fornece exemplos.
Conclusão
A Caixa de Ferramentas de Aprendizagem Profunda da MATLAB oferece um ambiente poderoso e amigável para lidar com problemas de classificação de imagens. Desde a aprendizagem de transferência direta até arquiteturas personalizadas, a caixa de ferramentas simplifica cada passo, mantendo a flexibilidade necessária para aplicações avançadas. Sua integração com o ecossistema mais amplo da MATLAB, combinado com várias opções de implantação, torna-o uma excelente escolha para pesquisa acadêmica e implantação industrial. Ao seguir o fluxo de trabalho estruturado descrito neste artigo, você pode aproveitar o pleno potencial de aprendizagem profunda para seus projetos de classificação de imagens.