Práticas recomendadas

Nesta página, você encontra práticas recomendadas para preparar dados, além de avaliar modelos e melhorar o desempenho deles.

Como preparar os dados

  • Os dados usados no treinamento precisam ser o mais parecidos possível com aqueles em que você fará predições. Por exemplo, se o caso de uso incluir vídeos desfocados e de baixa resolução (como filmagens de uma câmera de segurança), os dados de treinamento precisarão ter vídeos desfocados e de baixa resolução. Em geral, forneça também vários ângulos, resoluções e planos de fundo nos vídeos de treinamento.
  • Os dados de treinamento precisam atender a alguns requisitos mínimos:

    • O número mínimo de caixas delimitadoras por rótulo é 10.
    • Os rótulos precisam ser strings válidas sem vírgulas.
    • Todos os frames de vídeo precisam ter carimbos de data/hora válidos.
    • Todos os URIs de vídeo no CSV precisam ser armazenados em um bucket acessível do Cloud Storage.
  • Quanto mais dados de treinamento e teste, melhor. Quanto mais avançado o modelo, mais ele precisa de dados.

  • A quantidade de dados necessária para treinar um bom modelo depende de diferentes fatores:

    • A quantidade de classes. Quanto mais classes únicas você tiver, mais amostras por classe serão necessárias.

    • Você precisa ter cerca de 100 frames de vídeo de treinamento por rótulo. Em cada frame, todos os objetos dos rótulos de interesse precisam ser rotulados.

    • Complexidade ou diversidade das classes. As redes neurais podem distinguir rapidamente entre gatos e pássaros, mas precisam de muito mais amostras para classificar corretamente 30 espécies diferentes de pássaros.

    • A qualidade de algumas imagens pode ser perdida durante o processo de normalização de frame para resoluções de frame de vídeo maiores que 1.024 x 1024 pixels.

  • Evite treinar um modelo com dados muito desequilibrados. Em diversos casos, o número de amostras por classe não é igual. Quando as diferenças não são grandes, não é tão ruim. No entanto, isso se torna um problema quando há um desequilíbrio maior. Por exemplo, algumas classes são apresentadas 10 vezes mais do que outras.

Para saber mais, consulte as informações sobre como preparar os dados.

Como dividir os dados

No machine learning, você normalmente divide os conjuntos de dados em três subconjuntos separados: treinamento, validação e teste. O conjunto de dados de treinamento é usado para criar um modelo, que testa vários algoritmos e parâmetros enquanto procura padrões nos dados de treinamento. À medida que o modelo identifica padrões, ele usa o conjunto de dados de validação para testar os algoritmos e padrões. Aqueles que tiverem melhor desempenho serão escolhidos entre os identificados durante o estágio de treinamento.

Depois que os algoritmos e padrões de melhor desempenho forem identificados, eles serão testados quanto à taxa de erros, qualidade e acurácia usando o conjunto de dados de teste. Você precisa ter um conjunto de dados de teste separado que possa ser usado para testar o modelo de forma independente.

Tanto um conjunto de dados de validação quanto um de teste são usados para evitar vieses no modelo. Durante o estágio de validação, são usados os parâmetros ideais do modelo, o que pode resultar em métricas tendenciosas. Usar o conjunto de dados de teste para avaliar a qualidade do modelo após o estágio de validação fornece uma avaliação imparcial da qualidade.

Siga estas práticas recomendadas ao dividir os dados:

  • Recomendamos que todos os conjuntos de dados, também chamados de divisões, representem a mesma população e tenham vídeos semelhantes, com distribuição de rótulos parecida.

    Quando você fornece seus dados, o rastreamento de objetos do AutoML Video pode dividi-los automaticamente em conjuntos de dados de treinamento, validação e teste. Também é possível atribuir os rótulos de divisão de treinamento. Observe que, quando o rastreamento de objetos do AutoML Video gera as divisões de treinamento, validação e teste do arquivo CSV, ele opera no nível do vídeo. Todos os rótulos de um vídeo só podem estar em um dos três conjuntos de dados. Portanto, não é recomendável ter apenas alguns vídeos se eles forem diferentes ou se a distribuição do rótulo não for a mesma entre os vídeos.

    Por exemplo, se você tem apenas três vídeos com milhares de segmentos anotados, mas algumas classes estão apenas em alguns vídeos, é possível que o modelo não seja treinado para alguns rótulos. Assim, o modelo pode perdê-los durante a predição.

  • Evite vazamento de dados. Isso acontece quando o algoritmo é capaz de usar durante o treinamento do modelo informações não disponibilizadas normalmente a ele, e elas não ficam disponíveis durante predições futuras. Isso gera resultados excessivamente otimistas nos conjuntos de dados de treinamento, validação e teste. No entanto, leva a um desempenho ruim ao fazer predições futuras de dados não vistos.

    Alguns exemplos de vazamento incluem determinados vieses: um baseado no ângulo de visão da câmera ou nas condições de iluminação (manhã/noite), um em vídeos com e sem comentaristas e um baseado nos vídeos com certos rótulos provenientes de regiões específicas, grupos de idiomas e comentaristas ou que incluam o mesmo logotipo.

    Para evitar o vazamento de dados, faça o seguinte:

    • Tenha um conjunto bem diversificado de vídeos e de amostras de vídeos.
    • Analise os vídeos para garantir que não haja dicas ocultas. Por exemplo, quando vídeos com amostras positivas são feitos durante a tarde, e os com amostras negativas são feitos durante a manhã.

Para saber mais, consulte as informações sobre como preparar os dados.

Exemplos de fontes de dados

Para um exemplo de fonte de dados, consulte os seguintes conjuntos de dados de detecção de vídeo disponíveis ao público:

  • YouTube-BB: conjunto de dados de detecção de objetos em vídeo (5,6 milhões de caixas delimitadoras, 240.000 vídeos, 23 tipos de objeto)
  • ImageNet-VID: desafio de detecção de objetos em vídeo da ImageNet (30 categorias básicas)

Treinar o modelo

É possível usar os mesmos dados para treinar diferentes modelos e gerar tipos de predição distintos, dependendo do que você precisa. Além disso, treinar o mesmo modelo em dados iguais gera resultados um pouco diferentes. O treinamento do modelo de rede neural inclui operações aleatórias. Isso é para garantir que não seja possível treinar o mesmo modelo com entradas iguais, e as predições podem ser um pouco diferentes.

Para saber mais, consulte as informações sobre como gerenciar modelos.

Como avaliar o modelo

Depois que o modelo terminar o treinamento, será possível avaliar o desempenho em conjuntos de dados de validação e teste ou em outros novos.

Conceitos e métricas comuns da avaliação de rastreamento de objetos incluem:

  • A interseção sobre união (IOU, na sigla em inglês) mede a sobreposição entre duas caixas delimitadoras, que geralmente estão entre verdade e a predição. É possível usar isso para medir o quanto nossa caixa delimitadora prevista se sobrepõe à verdade.
  • Área sob a curva de precisão/recall (AuPRC, na sigla em inglês), também conhecida como precisão média (AP, na sigla em inglês). É a integral dos valores de precisão sobre a faixa dos valores de recall. Ela é mais bem interpretada em problemas binários.
  • Valor intermediário da precisão média (mAP ou MAP, na sigla em inglês) é a média da AP em várias classes ou rótulos. Às vezes, a mAP e a AP são usadas de forma intercambiável.
  • Nos problemas de binários e multiclasse, também é possível examinar a precisão e o recall em vários limites de pontuação de confiança de forma independente.
  • Se não houver muitos rótulos multiclasse, será possível examinar a matriz de confusão que mostra quais rótulos estavam faltando.

Nem todas as métricas podem ser usadas para os diferentes problemas de rastreamento de objetos de vídeo. Por exemplo, a compreensão intuitiva de precisão e recall de um problema de rastreamento de objetos se torna mais ambígua ao considerar várias classes (problema de multiclasse) ou se houver vários rótulos válidos por amostra (problema de vários rótulos). Principalmente no último caso, não há uma métrica única muito adotada. No entanto, considere a métrica de precisão média para tomar decisões de avaliação.

Lembre-se de que avaliar o desempenho do modelo com base em um único número ou métrica é uma abordagem muito simplificada. Analise métricas diferentes e as curvas de precisão e recall para cada uma das classes de objeto.

Veja outras dicas excelentes para avaliar o modelo:

  • Tenha cuidado com a distribuição de rótulos nos conjuntos de dados de treinamento e teste. Se os conjuntos estiverem desequilibrados, as métricas de alta acurácia podem estar incorretas. Como todas as amostras têm o mesmo peso durante a avaliação por padrão, um rótulo mais frequente pode ser mais pesado. Por exemplo, se houver 10 vezes mais rótulos positivos do que negativos, e a rede decidir simplesmente atribuir todas as amostras aos rótulos positivos, você ainda terá uma acurácia de 91%. No entanto, isso não significa que o modelo treinado seja tão útil assim.

  • Tente também analisar as informações e os rótulos de predição. Por exemplo, em um script Python usando o scikit-learn. Nele, você garante diferentes maneiras de analisar o peso dos rótulos durante a avaliação. As abordagens comuns incluem média macro (as métricas são calculadas por classe e, em seguida, a média é feita), ponderada (as métricas são calculadas por classe e, em seguida, a média é feita com base nos pesos de acordo com a frequência de classes individuais) e micro (cada amostra tem o mesmo peso, mesmo se houver qualquer desequilíbrio).

  • A depuração de um modelo se concentra mais nos dados do que no modelo em si. A qualquer momento, se o modelo começar a agir de maneira inesperada enquanto você estiver avaliando o desempenho antes e depois da produção, volte e verifique os dados para ver como o modelo pode ser melhorado.

  • Às vezes, um vídeo de teste tem alguns casos de corte de cena em que novas cenas aparecem sem muita associação de contexto. Por exemplo, em transmissões de jogos de futebol ao vivo, a visualização da câmera muda de visualização de cima para baixo para lateral. Nessa situação, normalmente leva de dois a três frames para que o modelo se mantenha atualizado.

Para saber mais, consulte as informações sobre como avaliar o modelo.

Como testar o modelo

O rastreamento de objetos de vídeo do AutoML usa 20% dos dados automaticamente ou, se você escolher a divisão de dados, qualquer porcentagem que você escolheu usar, para testar o modelo.

Como melhorar o desempenho do modelo

Para continuar melhorando o desempenho inicial do modelo, adote algumas abordagens diferentes:

  • Aumente o número de amostras rotuladas, especialmente nas classes sub-representadas.
  • Rotule mais frames significativos:
    • Selecione frames para rotular onde vários objetos estão no lugar de um único objeto ou nenhum objeto presente.
    • Selecione os frames que contêm mais objetos em movimento. Isso fornece mais informações temporais para o modelo aprender durante o treinamento.
    • Verifique se todos os frames selecionados estão marcados completamente. Por exemplo, ao treinar um modelo de detecção de veículos, é preciso rotular todos os veículos que podem ser visualmente observados em um frame.
    • Não selecione frames no começo de um vídeo. O algoritmo pode se recuperar para buscar frames para treinamento para capturar o contexto do movimento. Essas informações podem ser perdidas se não houver ou houver menos frames antes dos frames selecionados.
  • Examine atentamente onde o modelo não tem um desempenho tão bom:

    • Talvez uma classe seja muito ampla e precise ser dividida em duas ou mais?
    • Ou talvez algumas classes sejam muito específicas e possam ser mescladas sem afetar o objetivo final do projeto?
    • Considere rotular mais amostras, especialmente nas classes com desempenho relativamente pior.
  • Reduza o desequilíbrio dos dados. Adicione mais amostras ou tente reduzir o número das que têm classe de alta frequência, especialmente nos casos em que há um grande desequilíbrio. Por exemplo, de 1 a 100 ou mais.

  • Verifique cuidadosamente e tente evitar qualquer vazamento de dados.

  • Elimine classes menos críticas para se concentrar em algumas mais importantes.

  • Revise outras opções disponíveis para você na página de suporte.