Ir para o conteúdo

Conjuntos de dados

Os conjuntos de dados da Ultralytics Platform oferecem uma solução otimizada para gerenciar os seus dados de treino. Uma vez carregados, os conjuntos de dados podem ser imediatamente utilizados para o treino de modelos, com processamento automático e geração de estatísticas.

Fazer Upload do Conjunto de Dados

Ultralytics aceita vários formatos de upload para maior flexibilidade.

Formatos Suportados

FormatoExtensõesNotasTamanho Máximo
JPEG.jpg, .jpegMais comum, recomendado50 MB
PNG.pngApoia a transparência50 MB
WebP.webpModerno, boa compressão50 MB
BMP.bmpNão comprimido50 MB
TIFF.tiff, .tifAlta qualidade50 MB
HEIC.heicFotos do iPhone50 MB
AVIF.avifFormato de última geração50 MB
JP2.jp2JPEG 200050 MB
DNG.dngCâmara bruta50 MB
MPO.mpoObjeto de múltiplas imagens50 MB

Os vídeos são automaticamente extraídos para quadros no lado do cliente a 1 FPS (máximo de 100 quadros por vídeo).

FormatoExtensõesExtraçãoTamanho Máximo
MP4.mp41 FPS, máximo de 100 fotogramas1 GB
WebM.webm1 FPS, máximo de 100 fotogramas1 GB
MOV.mov1 FPS, máximo de 100 fotogramas1 GB
AVI.avi1 FPS, máximo de 100 fotogramas1 GB
MKV.mkv1 FPS, máximo de 100 fotogramas1 GB
M4V.m4v1 FPS, máximo de 100 fotogramas1 GB

Extração de Frames de Vídeo

Os quadros de vídeo são extraídos a 1 quadro por segundo no navegador antes do upload. Um vídeo de 60 segundos produz 60 quadros. O máximo é de 100 quadros por vídeo, portanto, vídeos com mais de ~100 segundos serão amostrados.

Os arquivos são extraídos e processados automaticamente.

FormatoExtensõesNotasTamanho Máximo
ZIP.zipMais comum10 GB
TAR.tarArquivo descompactado10 GB
TAR.GZ.tar.gz, .tgzArquivo compactado10 GB
GZ.gzComprimido com Gzip10 GB

Preparar o Seu Conjunto de Dados

A Plataforma suporta dois formatos de anotação, além de uploads brutos: Ultralytics YOLO, COCO e brutos (imagens não anotadas):

Utilize a estrutura de diretórios padrão YOLO com um data.yaml arquivo:

my-dataset/
├── images/
│   ├── train/
│   │   ├── img001.jpg
│   │   └── img002.jpg
│   └── val/
│       ├── img003.jpg
│       └── img004.jpg
├── labels/
│   ├── train/
│   │   ├── img001.txt
│   │   └── img002.txt
│   └── val/
│       ├── img003.txt
│       └── img004.txt
└── data.yaml

O arquivo yaml define a configuração do seu conjunto de dados:

# data.yaml
path: .
train: images/train
val: images/val

names:
    0: person
    1: car
    2: dog

Utilize arquivos de anotação JSON com a estrutura COCO padrão:

my-coco-dataset/
├── train/
│   ├── _annotations.coco.json
│   ├── img001.jpg
│   └── img002.jpg
└── val/
    ├── _annotations.coco.json
    ├── img003.jpg
    └── img004.jpg

O arquivo JSON contém images, annotations, e categories matrizes:

{
    "images": [{ "id": 1, "file_name": "img001.jpg", "width": 640, "height": 480 }],
    "annotations": [{ "id": 1, "image_id": 1, "category_id": 0, "bbox": [100, 50, 200, 300] }],
    "categories": [{ "id": 0, "name": "person" }]
}

As anotações COCO são automaticamente convertidas durante o upload. Detecção (bbox), segment (segmentation polígonos), e pose (keypoints) tarefas são suportadas. Os IDs de categoria são remapeados para uma sequência densa com índice 0 em todos os arquivos de anotação. Para converter entre formatos, consulte ferramentas de conversão de formato.

Envios Brutos

Bruto: Carregue imagens não anotadas (sem rótulos). Útil quando planeia anotar diretamente na plataforma usando o editor de anotações.

Estrutura de Diretório Plana

Você também pode carregar imagens sem a estrutura de pastas train/val. Imagens carregadas sem pastas de divisão são atribuídas ao train divididos por padrão. Você pode reatribuí-los posteriormente usando o recurso de mover para divisão em massa.

Deteção Automática de Formato

O formato é detectado automaticamente: conjuntos de dados com um data.yaml contendo names, train, ou val as chaves são tratadas como YOLO. Conjuntos de dados com arquivos JSON COCO (contendo images, annotations, e categories matrizes) são tratados como COCO. Conjuntos de dados com apenas imagens e sem anotações são tratados como brutos.

Para detalhes de formato específicos da tarefa, consulte tarefas suportadas e a Visão Geral dos Datasets.

Processo de Carregamento

  1. Navegue até Datasets na barra lateral
  2. Clique New Dataset ou arraste arquivos para a zona de upload
  3. Selecione o tipo de tarefa (consulte tarefas suportadas)
  4. Adicione um nome e uma descrição opcional
  5. Definir visibilidade (pública ou privada) e licença opcional (ver licenças disponíveis)
  6. Clique Create

Plataforma Ultralytics Conjuntos de Dados Seletor de Tarefas do Diálogo de Upload

Após o upload, a plataforma processa os seus dados através de um pipeline multi-estágio:

graph LR
    A[Upload] --> B[Validate]
    B --> C[Normalize]
    C --> D[Thumbnail]
    D --> E[Parse Labels]
    E --> F[Statistics]

    style A fill:#4CAF50,color:#fff
    style B fill:#2196F3,color:#fff
    style C fill:#2196F3,color:#fff
    style D fill:#2196F3,color:#fff
    style E fill:#2196F3,color:#fff
    style F fill:#9C27B0,color:#fff
  1. Validação: Verificações de formato e tamanho
  2. Normalização: Imagens grandes redimensionadas (máx. 4096px, dimensão mín. 28px)
  3. Miniaturas: Pré-visualizações WebP de 256px geradas
  4. Análise de Rótulos: Rótulos nos formatos YOLO e COCO extraídos
  5. Estatísticas: Distribuições de classes e dimensões de imagem calculadas

Plataforma Ultralytics Conjuntos de Dados Barra de Progresso de Upload

Validar Antes do Upload

Você pode validar seu conjunto de dados localmente antes de fazer o upload:

from ultralytics.hub import check_dataset

check_dataset("path/to/dataset.zip", task="detect")

Requisitos de Tamanho da Imagem

As imagens devem ter pelo menos 28px no seu lado mais curto. Imagens menores que isso são rejeitadas durante o processamento. Imagens maiores que 4096px no seu lado mais longo são automaticamente redimensionadas com a proporção preservada.

Explorar Imagens

Visualize as imagens do seu conjunto de dados em múltiplos layouts:

VisualizarDescrição
GradeGrade de miniaturas com sobreposições de anotação (padrão)
CompactoMiniaturas menores para uma varredura rápida
TabelaLista com miniatura, nome do arquivo, dimensões, tamanho, divisão, classes e contagens de rótulos

Plataforma Ultralytics Conjuntos de Dados Visualização em Grade da Galeria com Anotações

Ordenação e Filtragem

As imagens podem ser classificadas e filtradas para uma navegação eficiente:

OrdenarDescrição
Mais RecenteAdicionados mais recentemente
Mais antigoAdicionado mais cedo
Nome A-ZAlfabética
Nome Z-AAlfabética inversa
Tamanho (menor)Arquivos menores primeiro
Tamanho (maior)Arquivos maiores primeiro
Mais rótulosMais anotações
Menor número de rótulosMenor número de anotações
FiltrarOpções
Filtro de divisãoTreino, Validação, Teste ou Todos
Filtro de rótulosTodas as imagens, Anotadas ou Não Anotadas
PesquisarFiltrar imagens por nome de arquivo

Encontrando Imagens Não Rotuladas

Utilize o filtro de rótulo definido como Unannotated para encontrar rapidamente imagens que ainda precisam de anotação. Isto é especialmente útil para grandes conjuntos de dados onde se pretende acompanhar o progresso da rotulagem.

Visualizador em Ecrã Inteiro

Clique em qualquer imagem para abrir o visualizador em tela cheia com:

  • Navegação: Teclas de seta ou miniaturas para navegar
  • Metadados: Nome do arquivo, dimensões, crachá de divisão, contagem de anotações
  • Anotações: Alternar visibilidade da sobreposição de anotações
  • Detalhes por Classe: Contagens de rótulos por classe com indicadores de cor
  • Editar: Entre no modo de anotação para adicionar ou modificar rótulos
  • Download: Baixar o arquivo de imagem original
  • Excluir: Excluir a imagem do conjunto de dados
  • Zoom: Cmd/Ctrl+Scroll para ampliar/reduzir
  • Visualização de pixel: Alternar renderização pixelizada para inspeção detalhada

Plataforma Ultralytics Conjuntos de Dados Visualizador em Tela Cheia com Painel de Metadados

Filtrar por Divisão

Filtre imagens pela divisão do seu conjunto de dados:

DivisãoPropósito
TreinarUtilizado para o treinamento do modelo
ValidarUtilizado para validação durante o treinamento
TestarUtilizado para avaliação final

Abas do Conjunto de Dados

Cada página de conjunto de dados possui seis abas acessíveis na barra de abas:

Aba Imagens

A visualização padrão exibe a galeria de imagens com sobreposições de anotações. Suporta modos de visualização em grade, compacto e tabela. Arraste e solte arquivos aqui para adicionar mais imagens.

Aba Classes

Gerir classes de anotação para o seu conjunto de dados:

  • Histograma de classes: Gráfico de barras mostrando a contagem de anotações por classe com alternância de escala linear/logarítmica
  • Tabela de classes: Tabela classificável e pesquisável com nome da classe, contagem de rótulos e contagem de imagens
  • Editar nomes das classes: Clique em qualquer nome de classe para renomeá-lo diretamente
  • Editar cores da classe: Clique em uma amostra de cor para alterar a cor da classe
  • Adicionar nova classe: Use o campo de entrada na parte inferior para adicionar classes

Plataforma Ultralytics Conjuntos de Dados Aba Classes Histograma e Tabela

Escala Logarítmica para Conjuntos de Dados Desbalanceados

Se seu conjunto de dados tiver desequilíbrio de classes (por exemplo, 10.000 anotações de "pessoa", mas apenas 50 de "bicicleta"), use o Log Scale ativar o histograma de classes para visualizar todas as classes claramente.

Guia de Gráficos

Estatísticas automáticas calculadas a partir do seu conjunto de dados:

GráficoDescrição
Distribuição de DivisãoGráfico de rosca das contagens de imagens de treino/validação/teste e percentual rotulado
Principais ClassesGráfico de rosca das 10 classes de anotação mais frequentes
Larguras das ImagensHistograma da distribuição da largura da imagem com média
Alturas das ImagensHistograma da distribuição da altura da imagem com média
Pontos por InstânciaContagem de vértices de polígono ou keypoints por anotação (segment/pose)
Localizações das AnotaçõesMapa de calor 2D das posições centrais das caixas delimitadoras
Dimensões da ImagemMapa de calor 2D largura vs altura com linhas-guia de proporção

Plataforma Ultralytics Conjuntos de Dados Aba Gráficos Grade de Estatísticas

Cache de Estatísticas

As estatísticas são armazenadas em cache por 5 minutos. As alterações nas anotações serão refletidas após a expiração do cache.

Mapas de Calor em Tela Cheia

Clique no botão de expandir em qualquer mapa de calor para visualizá-lo em modo de tela cheia. Isso proporciona uma visão maior e mais detalhada — útil para compreender padrões espaciais em grandes conjuntos de dados.

Aba de Modelos

Visualize todos os modelos treinados neste conjunto de dados em uma tabela pesquisável:

ColunaDescrição
NomeNome do modelo com link
ProjetoProjeto pai com ícone
StatusEmblema de status do treino
TarefaTipo de tarefa YOLO
ÉpocasMelhor época / total de épocas
mAP50-95Precisão média média
mAP50mAP em IoU 0.50
Criado emData de criação

Plataforma Ultralytics Conjuntos de Dados Aba Modelos Tabela de Modelos Treinados

Aba de Erros

As imagens que falharam no processamento são listadas aqui com:

  • Banner de erro: Contagem total de imagens com falha e orientação
  • Tabela de erros: Nome do arquivo, descrição de erro amigável, dicas de correção e miniatura de pré-visualização
  • Erros comuns incluem arquivos corrompidos, formatos não suportados, imagens muito pequenas (mín. 28px) e modos de cor não suportados

Falhas no processamento do separador «Erros» dos conjuntos de dados Ultralytics

Erros Comuns de Processamento
ErroCausaCorreção
Não foi possível ler o arquivo de imagemFormato corrompido ou não suportadoReexportar do editor de imagens
Incompleto ou corrompidoO arquivo foi truncado durante a transferênciaBaixar novamente o arquivo original
Imagem muito pequenaDimensão mínima abaixo de 28pxUtilize imagens de origem de maior resolução
Modo de cor não suportadoCMYK ou modo de cor indexadoConverter para o modo RGB

Guia Versões

Crie snapshots NDJSON imutáveis do seu conjunto de dados para treinamento reproduzível. Cada versão captura contagens de imagens, contagens de classes, contagens de anotações e o tamanho do arquivo no momento da criação.

ColunaDescrição
VersãoNúmero da versão (v1, v2, ...)
DescriçãoDescrição fornecida pelo usuário (editável)
ImagensContagem de imagens no momento do snapshot
ClassesContagem de classes no momento do snapshot
AnotaçõesContagem de anotações no momento do snapshot
TamanhoTamanho do arquivo de exportação NDJSON
Criado emQuando a versão foi criada

Para criar uma versão:

  1. Abra a aba Versões
  2. Opcionalmente, insira uma descrição (por exemplo, "Adicionadas 500 imagens de treinamento" ou "Classes mal rotuladas corrigidas")
  3. Clique em + Nova Versão
  4. O snapshot NDJSON é gerado e baixado automaticamente

Cada versão é numerada sequencialmente (v1, v2, v3...) e armazenada permanentemente. Você pode baixar qualquer versão anterior a qualquer momento na tabela de versões.

Quando criar versões

Crie uma versão antes e depois de grandes alterações no seu conjunto de dados — adicionando imagens, corrigindo anotações ou reequilibrando divisões. Isso permite comparar o desempenho do modelo em diferentes estados do conjunto de dados.

Tamanho do Arquivo NDJSON

O tamanho exibido é o tamanho do arquivo de exportação NDJSON, que contém URLs de imagens e anotações — não as próprias imagens. Os dados reais das imagens são armazenados separadamente e acessados via URLs assinadas.

Exportar Conjunto de Dados

Exporte o seu conjunto de dados em NDJSON formato para uso offline:

  1. Clique no ícone de download no cabeçalho do conjunto de dados
  2. O arquivo NDJSON é baixado automaticamente

Plataforma Ultralytics Conjuntos de Dados Exportar Download NDJSON

O formato NDJSON armazena um objeto JSON por linha. A primeira linha contém metadados do conjunto de dados, seguida por uma linha por imagem:

{"type": "dataset", "task": "detect", "name": "my-dataset", "description": "...", "url": "https://platform.ultralytics.com/...", "class_names": {"0": "person", "1": "car"}, "version": 1, "created_at": "2026-01-15T10:00:00Z", "updated_at": "2026-02-20T14:30:00Z"}
{"type": "image", "file": "img001.jpg", "url": "https://...", "width": 640, "height": 480, "split": "train", "annotations": {"boxes": [[0, 0.5, 0.5, 0.2, 0.3]]}}
{"type": "image", "file": "img002.jpg", "url": "https://...", "width": 1280, "height": 720, "split": "val"}

URLs Assinadas

As URLs das imagens no NDJSON exportado são assinadas e válidas por 7 dias. Se precisar de URLs atualizadas, reexporte o conjunto de dados ou crie uma nova versão.

Consulte a documentação do formato NDJSON da Ultralytics para a especificação completa.

Operações de Imagem

Ações Rápidas

Clique com o botão direito em qualquer imagem na visualização Grade ou Compacta para acessar ações rápidas:

AçãoDescrição
Mover para DivisãoReatribuir a imagem para a divisão de Treinamento, Validação ou Teste
BaixarBaixar o arquivo de imagem original
ExcluirExclua a imagem do conjunto de dados

Plataforma Ultralytics Conjuntos de Dados Menu de Contexto do Cartão de Imagem

Individual vs. Em Massa

O menu de contexto da imagem opera em uma única imagem. Para operações em massa em várias imagens, utilize a visualização Tabela com seleção por caixa de seleção.

Mover em Massa para Divisão

Reatribuir imagens selecionadas para uma divisão diferente dentro do mesmo conjunto de dados:

  1. Mudar para a visualização de Tabela
  2. Selecione imagens usando caixas de seleção
  3. Clique com o botão direito para abrir o menu de contexto
  4. Escolher Move to split > Treinar, Validação, ou Testar

Você também pode arrastar e soltar imagens nas abas de filtro de divisão na visualização em grade.

Organizando as Divisões de Treino/Validação

Carregue todas as imagens para um único conjunto de dados e, em seguida, use a movimentação em massa para dividir e organizar os subconjuntos em divisões de treino, validação e teste.

Exclusão em Massa

Exclua várias imagens de uma vez:

  1. Selecione imagens na visualização em tabela
  2. Clique com o botão direito e escolha Delete
  3. Confirmar exclusão

URI do Conjunto de Dados

Referencie conjuntos de dados da Plataforma usando o ul:// Formato URI (ver Utilizar Conjuntos de Dados da Plataforma):

ul://username/datasets/dataset-slug

Use este URI para treinar modelos de qualquer lugar:

export ULTRALYTICS_API_KEY="your_api_key"
yolo train model=yolo26n.pt data=ul://username/datasets/my-dataset epochs=100
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(data="ul://username/datasets/my-dataset", epochs=100)

Treine em Qualquer Lugar com Dados da Plataforma

O ul:// O URI funciona em qualquer ambiente:

  • Máquina local: Treine no seu hardware, com dados baixados automaticamente
  • Google Colab: Acesse seus conjuntos de dados da Plataforma em notebooks
  • Servidores remotos: Treine em VMs na nuvem com acesso total aos conjuntos de dados

Licenças Disponíveis

A Plataforma suporta as seguintes licenças para conjuntos de dados:

LicençaTipo
NenhumNenhuma licença selecionada
CC0-1.0Domínio público
CC-BY-2.5Permissivo
CC-BY-4.0Permissivo
CC-BY-SA-4.0Copyleft
CC-BY-NC-4.0Não comercial
CC-BY-NC-SA-4.0Copyleft
CC-BY-ND-4.0Sem derivativos
CC-BY-NC-ND-4.0Não comercial
Apache-2.0Permissivo
MITPermissivo
AGPL-3.0Copyleft
GPL-3.0Copyleft
Apenas para PesquisaRestrito
OutrosPersonalizado

Licenças Copyleft

Ao clonar um dataset com uma licença copyleft (AGPL-3.0, GPL-3.0, CC-BY-SA-4.0, CC-BY-NC-SA-4.0), o clone herda a licença e o seletor de licença é bloqueado.

Configurações de Visibilidade

Controle quem pode ver seu conjunto de dados:

ConfigurandoDescrição
PrivadoApenas você pode acessar
PúblicoQualquer pessoa pode visualizar na página Explorar

A visibilidade é definida ao criar um conjunto de dados no New Dataset diálogo usando um interruptor de alternância. Conjuntos de dados públicos são visíveis no Explorar página.

Editar Conjunto de Dados

Metadados do conjunto de dados são editados diretamente na página do conjunto de dados — nenhum diálogo é necessário:

  • Nome: Clique no nome do conjunto de dados para editá-lo. As alterações são salvas automaticamente ao perder o foco ou Enter.
  • Descrição: Clique na descrição (ou no marcador "Adicionar uma descrição...") para editar. As alterações são salvas automaticamente.
  • Tipo de tarefa: Clique no distintivo da tarefa para selecionar um tipo de tarefa diferente.
  • Licença: Clique no seletor de licença para alterar a licença do conjunto de dados.

Alterar Tipo de Tarefa

A alteração do tipo de tarefa pode afetar a forma como as anotações existentes são visualizadas. Anotações incompatíveis não serão exibidas.

Clonar Conjunto de Dados

Ao visualizar um conjunto de dados público que você não possui, clique Clone Dataset para criar uma cópia em seu espaço de trabalho. O clone inclui todas as imagens, anotações e definições de classe. Se o conjunto de dados original tiver uma licença copyleft, o clone a herda e o seletor de licença é bloqueado.

Favoritar e Compartilhar

  • Favoritar: Clique no botão de estrela para favoritar um conjunto de dados. A contagem de favoritos é visível para todos os usuários.
  • Compartilhar: Para conjuntos de dados públicos, clique no botão de compartilhamento para copiar um link ou compartilhar em plataformas sociais.

Excluir Conjunto de Dados

Exclua um conjunto de dados que você não precisa mais:

  1. Abra o menu de ações do conjunto de dados
  2. Clique Delete
  3. Confirmar na caixa de diálogo: "Isso moverá [nome] para a lixeira. Você pode restaurá-lo em até 30 dias."

Lixeira e Restaurar

Conjuntos de dados excluídos são movidos para a Lixeira — não são excluídos permanentemente. Você pode restaurá-los em até 30 dias em Settings > Trash.

Treinar no Conjunto de Dados

Inicie o treinamento diretamente do seu conjunto de dados:

  1. Clique New Model na página do conjunto de dados
  2. Selecione um projeto ou crie um novo
  3. Configure os parâmetros de treinamento
  4. Iniciar treinamento
graph LR
    A[Dataset] --> B[New Model]
    B --> C[Select Project]
    C --> D[Configure]
    D --> E[Start Training]

    style A fill:#2196F3,color:#fff
    style E fill:#4CAF50,color:#fff

Consulte Treinamento em Nuvem para mais detalhes.

FAQ

O que acontece com os meus dados depois de carregados?

Os seus dados são processados e armazenados na região selecionada (EUA, UE ou AP). As imagens são:

  1. Validado para formato e tamanho
  2. Rejeitado se a dimensão mínima for inferior a 28px
  3. Normalizado se maior que 4096px (preservando a proporção; codificado para armazenamento otimizado)
  4. Armazenado utilizando Armazenamento Endereçável por Conteúdo (CAS) com hashing XXH3-128
  5. Miniaturas geradas em 256px WebP para navegação rápida

Como funciona o armazenamento?

A Plataforma Ultralytics utiliza Armazenamento Endereçável por Conteúdo (CAS) para um armazenamento eficiente:

  • Desduplicação: Imagens idênticas carregadas por diferentes utilizadores são armazenadas apenas uma vez
  • Integridade: O hashing XXH3-128 garante a integridade dos dados
  • Eficiência: Reduz os custos de armazenamento e acelera o processamento
  • Regional: Os dados permanecem na sua região selecionada (EUA, UE ou AP)

Posso adicionar imagens a um conjunto de dados existente?

Sim, arraste e solte ficheiros na página do conjunto de dados ou utilize o botão de upload para adicionar imagens adicionais. Novas estatísticas serão calculadas automaticamente.

Como movo imagens entre divisões?

Utilize o recurso de movimento em massa para divisão:

  1. Selecione imagens na visualização em tabela
  2. Clique com o botão direito e escolha Move to split
  3. Selecione a divisão de destino (Treino, Validação ou Teste)

Quais formatos de rótulo são suportados?

A Plataforma Ultralytics suporta dois formatos de anotação para upload:

Um .txt arquivo por imagem com coordenadas normalizadas (intervalo 0-1):

TarefaFormatoExemplo
Detectarclass cx cy w h0 0.5 0.5 0.2 0.3
Segmentarclass x1 y1 x2 y2 ...0 0.1 0.1 0.9 0.1 0.9 0.9
Poseclass cx cy w h kx1 ky1 v1 ...0 0.5 0.5 0.2 0.3 0.6 0.7 2
OBBclass x1 y1 x2 y2 x3 y3 x4 y40 0.1 0.1 0.9 0.1 0.9 0.9 0.1 0.9
ClassificarEstrutura do diretóriotrain/cats/, train/dogs/

Flags de visibilidade da pose: 0=não rotulado, 1=rotulado mas ocluído, 2=rotulado e visível.

Arquivos JSON com images, annotations, e categories matrizes. Suporta detect (bbox), segmentação (polígono) e pose (keypoints) tarefas. COCO usa coordenadas de pixel absolutas que são automaticamente convertidas para o formato normalizado durante o upload.



📅 Criado há 2 meses ✏️ Atualizado há 2 dias
glenn-jochert-hakobyanmykolaxboikosergiuwaxmannLaughing-q

Comentários