Se você está lendo este blog, provavelmente tem interesse em criar um modelo personalizado de aprendizado de máquina (ML). Recentemente, eu passei por esse processo ao criar um detector de cães personalizado para acompanhar o codelab Criar um app personalizado da Web para detecção de objetos com o MediaPipe. Como qualquer nova tarefa de codificação, o processo exigiu algumas tentativas e erros até que eu entendesse o que estava fazendo. Para minimizar a parte dos erros de sua experiência de "tentativa e erro", tenho o prazer de compartilhar com você cinco conclusões da minha experiência de treinamento de modelo.
A preparação dos dados para o treinamento será diferente para cada tipo de modelo a ser personalizado. Em geral, há uma etapa para a aquisição dos dados e outra para a anotação desses dados.
Encontrar pontos de dados suficientes que representem adequadamente um caso de uso pode ser um desafio. Primeiro, porque você quer ter certeza de que tem o direito de usar as imagens ou os textos incluídos nos dados. Verifique o licenciamento dos dados antes do treinamento. Uma maneira de resolver isso é fornecer seus próprios dados. Por acaso, eu tenho centenas de fotos dos meus cães, e selecioná-las para o meu detector de objetos foi fácil. Você também pode buscar conjuntos de dados existentes no Kaggle. Existem muitas opções no Kaggle que abrangem uma ampla gama de casos de uso. Com sorte, você encontrará um conjunto de dados existente que atenda às suas necessidades e talvez já tenha anotações!
O MediaPipe Model Maker aceita dados nos quais cada entrada tenha um arquivo XML correspondente listando as anotações. Por exemplo:
Existem vários programas de software que podem ajudar com a anotação. Isso é especialmente útil quando você precisa destacar áreas específicas das imagens. Alguns programas de software são projetados para permitir a colaboração. Uma IU intuitiva e instruções para anotadores significam que você pode contar com a ajuda de outras pessoas. Uma opção comum de código aberto é o Label Studio, que eu usei para anotar minhas imagens.
Portanto, saiba que esta etapa vai tomar muito tempo, e lembre-se de que ela levará mais tempo do que você espera.
Se você é como eu, já tem uma ideia maravilhosamente ótima e planejada para seu primeiro modelo personalizado. Meu cachorro Ben foi a inspiração para meu primeiro modelo. Ele veio de um abrigo local de golden retrievers, mas quando fiz um teste de DNA, descobri que ele é 0% golden retriever! Minha primeira ideia foi criar um detector de golden retrievers, uma solução que pudesse dizer se um cão era um golden retriever "original" ou "genérico". Achei que poderia ser divertido ver o que o modelo achava do Ben, mas rapidamente percebi que teria que adquirir muito mais imagens de cães do que eu ja tinha para poder utilizar o modelo também com outros cães. E eu teria que ter certeza de que ele seria capaz de identificar com precisão os golden retrievers de todas as tonalidades. Depois de horas nessa tarefa, percebi que precisava simplificar as coisas. Foi quando decidi tentar criar uma solução apenas para meus três cães. Eu tinha muitas fotos à escolha, então selecionei aquelas que mostravam melhor os detalhes dos cães. Essa foi uma solução muito mais bem-sucedida e uma ótima prova de conceito para meu modelo de golden retriever, porque eu me recusava a abandonar essa ideia.
Estas são algumas maneiras de simplificar seu primeiro modelo personalizado:
Portanto, em sua primeira experiência de treinamento de ML, lembre-se de simplificar, simplificar e simplificar.
Simplifique.
Simplifique.
Por mais que eu queira afirmar com segurança que você obterá os resultados certos com seu modelo no primeiro treinamento, isso provavelmente não acontecerá. A escolha cuidadosa de exemplos de dados e anotações com certeza elevará sua taxa de sucesso, mas há muitos fatores que podem mudar o comportamento do modelo. Talvez você precise começar com uma arquitetura de modelo diferente para alcançar a acurácia desejada. Ou você pode tentar uma divisão diferente de dados de treinamento e validação. Talvez seja necessário adicionar outros exemplos ao conjunto de dados. Felizmente, o aprendizado por transferência com o MediaPipe Model Maker geralmente leva vários minutos, e você pode reverter novas iterações rapidamente.
Ao terminar de treinar um modelo, você provavelmente não verá a hora de adicioná-lo ao app. No entanto, eu recomendo experimentar o modelo no MediaPipe Studio primeiro, por estes motivos:
Com o MediaPipe Studio, eu consegui experimentar rapidamente diferentes limites de pontuação em várias imagens para determinar qual limite devia usar no app. Também eliminei meu próprio app da Web como um fator para esse desempenho.
Depois de adquirir dados de qualidade, simplificar o caso de uso e fazer o treinamento e a prototipagem, talvez você precise repetir o ciclo para obter o resultado certo. Quando isso acontecer, escolha apenas uma parte do processo para mudar e faça uma pequena mudança. No meu caso, muitas fotos dos meus cães foram tiradas no mesmo sofá azul. Se o modelo começasse a considerar esse sofá, já que ele muitas vezes estava dentro da caixa delimitadora, isso poderia afetar a maneira como ele categorizaria as imagens nas quais os cães não estivessem no sofá. Em vez de jogar fora todas as fotos no sofá, eu removi apenas algumas e adicionei mais umas dez de cada cão fora do sofá. Isso melhorou muito meus resultados. Se você tentar fazer uma grande mudança logo de cara, poderá acabar introduzindo novos problemas em vez de resolvê-los.
Com essas dicas em mente, é hora de você personalizar sua própria solução de ML! Você pode personalizar a classificação de imagens, o reconhecimento de gestos, a classificação de textos ou o modelo de detecção de objetos para usar no MediaPipe Tasks.
Se você quiser compartilhar os aprendizados adquiridos no treinamento de seu primeiro modelo, poste os detalhes no LinkedIn junto com um link para esta postagem do blog e, depois, marque-me. Mal posso esperar para ver o que você vai aprender e criar!