Preparar dados de treinamento de vídeo para classificação

Nesta página, descrevemos como preparar dados de treinamento de vídeo para uso em um conjunto de dados da Vertex AI para treinar um modelo de classificação de vídeo.

As seções a seguir fornecem informações sobre requisitos de dados, arquivos de esquema e o formato dos arquivos de importação de dados (JSONL e CSV) definidos pelo esquema.

Como alternativa, é possível importar vídeos que não foram anotados e anotados posteriormente usando o console (consulte Como rotular usando o Console do Google Cloud).

Requisitos de dados

Os requisitos a seguir se aplicam a conjuntos de dados usados para treinar o AutoML ou modelos personalizados treinados.

  • A Vertex AI é compatível com os formatos de vídeo a seguir para treinar o modelo ou solicitar uma previsão (anotação de um vídeo).

    • .MOV
    • .MPEG4
    • .MP4
    • .AVI
  • Para ver o conteúdo de vídeo no console da Web ou fazer anotações em um vídeo, ele precisa estar em um formato compatível com o seu navegador. Como nem todos os navegadores processam nativamente o conteúdo .MOV ou .AVI, a recomendação é usar o formato de vídeo .MPEG4 ou .MP4.

  • O tamanho máximo do arquivo é de 50 GB (até 3 horas de duração). Arquivos de vídeo individuais com registros de data e hora inválidos ou vazios no contêiner não são aceitos.

  • O número máximo de rótulos em cada conjunto de dados é limitado a 1.000.

  • É possível atribuir rótulos "ML_USE" aos vídeos nos arquivos importados. No momento do treinamento, é possível usar esses rótulos para dividir os vídeos e as respectivas anotações em conjuntos de "treinamento" ou "teste". Para classificação de vídeo, observe o seguinte:

    • Pelo menos duas classes diferentes são necessárias para o treinamento do modelo. Por exemplo, "notícias" e "MTV" ou "jogo" e "outros".
    • Pense em incluir uma classe "None_of_the_above" e segmentos de vídeo que não correspondam a nenhuma das classes definidas.

Práticas recomendadas para dados de vídeo usados para treinar modelos do AutoML

As práticas a seguir se aplicam a conjuntos de dados usados para treinar modelos do AutoML.

  • Os dados de treinamento precisam estar o mais próximo possível dos dados que serão previstos. Por exemplo, se o caso de uso incluir vídeos desfocados e de baixa resolução (como de uma câmera de segurança), seus dados de treinamento precisarão ser compostos por vídeos desfocados e de baixa resolução. Em geral, pense também em fornecer vários ângulos, resoluções e planos de fundo nos vídeos de treinamento.

  • Os modelos da Vertex AI geralmente não podem prever rótulos que pessoas não possam atribuir. Se uma pessoa não puder ser treinada para atribuir rótulos olhando o vídeo por 1 ou 2 segundos, o modelo provavelmente não poderá ser treinado para fazer isso também.

  • O modelo funciona melhor quando há no máximo 100 vezes mais vídeos para o rótulo mais comum do que para o menos comum. Recomendamos remover os rótulos de baixa frequência. Para classificação de vídeo, o número recomendado de vídeos de treinamento por rótulo é de aproximadamente 1.000. O mínimo por rótulo é 10 ou 50 para modelos avançados. Em geral, são necessários mais exemplos por rótulo para treinar modelos com vários rótulos por vídeo, e os resultados são mais difíceis de interpretar.

Arquivos de esquema

  • Use o seguinte arquivo de esquema de acesso público ao criar o arquivo jsonl para importar anotações. Esse arquivo de esquema determina o formato dos arquivos de entrada de dados. A estrutura do arquivo segue o teste OpenAPI Schema.

    Arquivo de esquema de classificação de vídeo:

    gs://google-cloud-aiplatform/schema/dataset/ioformat/video_classification_io_format_1.0.0.yaml

    Arquivo de esquema completo

    
    title: VideoClassification
    description: >
      Import and export format for importing/exporting videos together with
      classification annotations with time segment. Can be used in
      Dataset.import_schema_uri field.
    type: object
    required:
    - videoGcsUri
    properties:
      videoGcsUri:
        type: string
        description: >
          A Cloud Storage URI pointing to a video. Up to 50 GB in size and
          up to 3 hours in duration. Supported file mime types: `video/mp4`,
          `video/avi`, `video/quicktime`.
      timeSegmentAnnotations:
        type: array
        description: >
          Multiple classification annotations. Each on a time segment of the video.
        items:
          type: object
          description: Annotation with a time segment on media (e.g., video).
          properties:
            displayName:
              type: string
              description: >
                It will be imported as/exported from AnnotationSpec's display name.
            startTime:
              type: string
              description: >
                The start of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision.
              default: 0s
            endTime:
              type: string
              description: >
                The end of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision, and "Infinity"
                is allowed, which corresponds to the end of the video.
              default: Infinity
            annotationResourceLabels:
              description: Resource labels on the Annotation.
              type: object
              additionalProperties:
                type: string
      dataItemResourceLabels:
        description: Resource labels on the DataItem.
        type: object
        additionalProperties:
          type: string
    

Arquivos de entrada

Veja a seguir o formato dos dados de treinamento para classificação de vídeos.

Para importar os dados, crie um arquivo JSONL ou CSV.

JSONL

JSON em cada linha:
Consulte o arquivo de esquema de classificação (global) para mais detalhes.


{
	"videoGcsUri": "gs://bucket/filename.ext",
	"timeSegmentAnnotations": [{
		"displayName": "LABEL",
		"startTime": "start_time_of_segment",
		"endTime": "end_time_of_segment"
	}],
	"dataItemResourceLabels": {
		"aiplatform.googleapis.com/ml_use": "train|test"
	}
}

Exemplo de JSONL: classificação de vídeo:


{"videoGcsUri": "gs://demo/video1.mp4", "timeSegmentAnnotations": [{"displayName": "cartwheel", "startTime": "1.0s", "endTime": "12.0s"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"videoGcsUri": "gs://demo/video2.mp4", "timeSegmentAnnotations": [{"displayName": "swing", "startTime": "4.0s", "endTime": "9.0s"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
...

CSV

Formato de uma linha no CSV:

[ML_USE,]VIDEO_URI,LABEL,START,END

Lista de colunas

  1. ML_USE (Opcional). Para fins de divisão de dados ao treinar um modelo. Use TREINAMENTO ou TESTE.
  2. VIDEO_URI Esse campo contém o URI do Cloud Storage para o vídeo Esses URIs diferenciam maiúsculas de minúsculas.
  3. LABEL Os rótulos precisam começar com uma letra e conter apenas letras, números e sublinhado (opcional). É possível especificar vários rótulos para um vídeo adicionando muitas linhas no arquivo CSV que identificam o mesmo trecho de vídeo, com um rótulo diferente para cada linha.
  4. START,END Essas duas colunas, START e END, respectivamente, identificam os horários de início e término do trecho de vídeo para análise, em segundos. O horário de início precisa ser menor que o de término. Os dois valores não podem ser negativos e precisam estar dentro do período do vídeo. Por exemplo, 0.09845,1.36005. Para usar o conteúdo inteiro do vídeo, especifique o horário de início como 0 e o horário de término da duração total do vídeo ou "inf". Por exemplo, 0,inf.

Exemplo de CSV: classificação usando um único rótulo

Rótulo único no mesmo trecho de vídeo:

TRAINING,gs://YOUR_VIDEO_PATH/vehicle.mp4,mustang,0,5.4
...

Exemplo de CSV com vários rótulos:

Vários rótulos no mesmo trecho de vídeo:

gs://YOUR_VIDEO_PATH/vehicle.mp4,fiesta,0,8.285
gs://YOUR_VIDEO_PATH/vehicle.mp4,ranger,0,8.285
gs://YOUR_VIDEO_PATH/vehicle.mp4,explorer,0,8.285
...

Exemplo de CSV sem rótulos:

Também é possível fornecer vídeos no arquivo de dados CSV sem especificar rótulos. Em seguida, use o Console do Google Cloud para aplicar rótulos aos dados antes de treinar o modelo. Para fazer isso, basta fornecer o URI do Cloud Storage para o vídeo seguido por três vírgulas, conforme mostrado no exemplo a seguir.

gs://YOUR_VIDEO_PATH/vehicle.mp4,,,
...