
Detecção em imagem
Uma linha de código e a foto volta com caixas, classes e confiança. Depois você lê esses números como dados e vê o que muda quando sobe o limite de confiança.
Abrir no ColabUma câmera filma um pátio e o programa diz quantas pessoas diferentes passaram por ali. Quem faz isso é o YOLO, uma rede que olha a imagem inteira de uma vez e devolve caixas com o que encontrou.
São quatro notebooks curtos. Cada um abre no Google Colab, instala o que precisa e roda com vídeos de menos de 10 MB. Não precisa instalar nada no seu computador.
São 24 exercícios, seis por aula, e cada um tem um notebook próprio. Você escreve a resposta, roda a célula e o notebook diz na hora se acertou. Ver os 24 exercícios.

Uma linha de código e a foto volta com caixas, classes e confiança. Depois você lê esses números como dados e vê o que muda quando sobe o limite de confiança.
Abrir no ColabVídeo é uma sequência de fotos. O laço é ler o quadro, detectar, desenhar e gravar. No fim, o vídeo anotado toca no próprio notebook e você baixa o arquivo.
Abrir no ColabO rastreador dá a cada pessoa um ID que se mantém entre os quadros. Com isso dá para contar gente diferente e quem cruzou uma linha. E também ver quando o ID falha.
Abrir no Colabmodel = YOLO("yolov8n.pt")
model.train(
data="coco8.yaml",
epochs=5,
imgsz=320,
)
melhor = YOLO("best.pt")Como é um dataset no formato YOLO, como treinar a partir de pesos prontos e onde ficam as métricas. Oito fotos servem para entender o processo; um modelo bom pede centenas.
Abrir no ColabCada exercício tem um notebook só dele, que já vem executado do começo ao fim. Ele prepara os dados da aula, deixa uma célula para você tentar e mostra uma solução conferida. É só clicar em Abrir no Colab.
Quantas pessoas o modelo encontrou em resultado? A classe person tem índice 0.
Monte um conjunto (set) com os nomes das classes que apareceram na imagem.
Qual é a maior confiança entre todas as caixas? Responda com um número entre 0 e 1.
Abrir no ColabQual é a área, em pixels, da maior caixa? Área é largura vezes altura, e xyxy dá os dois cantos.
Rode o modelo de novo na mesma imagem, mas pedindo só pessoas com classes=[0]. Quantas caixas vieram?
Recorte só o ônibus da imagem original. Leia a foto com cv2.imread, ache a caixa da classe bus e fatie o array. A resposta é o recorte.
Quantos segundos tem o vídeo inteiro? Use o total de quadros e o FPS do arquivo.
Abrir no ColabQual classe teve mais detecções no vídeo processado? Responda com o nome.
Abrir no ColabProcessar todo quadro é caro. Nos primeiros 50 quadros, rode o modelo só em 1 a cada 5 (quadros 0, 5, 10...) e some quantas cadeiras (chair) foram detectadas.
Em quantos dos primeiros 60 quadros aparece pelo menos uma cadeira?
Abrir no ColabGrave um vídeo novo com os primeiros 60 quadros, desenhando só as detecções de potted plant. A resposta é o caminho do arquivo. Descubra o índice da classe em model.names.
Em média, quantas cadeiras o modelo detectou por quadro no vídeo processado?
Abrir no ColabQual foi o maior número de pessoas rastreadas ao mesmo tempo num quadro?
Abrir no ColabEm qual quadro (índice começando em 0) esse pico aconteceu pela primeira vez?
Abrir no ColabQuantas pessoas, em média, estavam em cena por quadro?
Abrir no ColabQuantos IDs apareceram no vídeo mas não cruzaram a linha?
Abrir no ColabRastreie de novo os primeiros 100 quadros com um modelo novo (YOLO("yolov8n.pt"), para os IDs começarem do zero). Quantas pessoas apareceram em pelo menos 50 desses quadros?
Troque a linha vertical por uma horizontal no meio da imagem (y = altura // 2). Rastreando os primeiros 100 quadros com um modelo novo, quantas pessoas cruzaram essa linha?
Quantas imagens há na pasta de treino do coco8?
Quantos objetos rotulados existem, somando todos os arquivos .txt do treino? Cada linha é um objeto.
Qual classe mais aparece nos rótulos de treino? Responda com o nome, não com o número.
Abrir no ColabPegue a primeira linha do rótulo 000000000009.txt e converta para pixels no formato (x1, y1, x2, y2), usando o tamanho real da imagem 000000000009.jpg.
Em qual época a train/box_loss foi a menor?
Rode a validação do modelo treinado com melhor.val(data="coco8.yaml", imgsz=320) e responda com o mAP50.
resposta = None pela sua resposta e rode a célula. No fim, placar() mostra quantos você acertou.