Dúvidas de treinamento do modelo

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #32768
    Bismarck
    Participante

      Mestre, estou fazendo um trabalho para reconhecimento de produtos em video.
      Gerei um data set com produtos e seus boundbox para esses produtos com imagens diferentes (deitada, em pé, etc)
      Estou fazendo treinamento com darknet, yolov4 e opencv. já estou com 17.000 interações e ainda a acertividade está baixa e estou achando lento o treinamento com essas interações estou com 2.01 de MAP.
      Este treinamento é lento mesmo e demora para fazer o aprendizado e melhorar o MAP.

      Por favor, gostaria saber a sua opnião que para esse tipo de trabalho estou no caminho utilizando esses modelos e pesos ?

      Caso tenha outra sugestão para esse tipo de aprendizado, por favor me informe.

      detections_count = 413, unique_truth_count = 178
      class_id = 0, name = Renu, ap = 0.00% (TP = 0, FP = 0)
      class_id = 1, name = Hersheys, ap = 0.00% (TP = 0, FP = 0)
      class_id = 2, name = XStick, ap = 0.00% (TP = 0, FP = 0)
      class_id = 3, name = XStick Jack, ap = 0.00% (TP = 0, FP = 0)
      class_id = 4, name = Trojan, ap = 0.00% (TP = 0, FP = 0)
      class_id = 5, name = Trojan Plus, ap = 0.00% (TP = 0, FP = 0)
      class_id = 6, name = Trojan ENZ, ap = 100.00% (TP = 3, FP = 1)
      class_id = 7, name = Colgate, ap = 100.00% (TP = 6, FP = 0)
      class_id = 8, name = Wheat Thins, ap = 100.00% (TP = 6, FP = 0)
      class_id = 9, name = Refrigerante DEW, ap = 100.00% (TP = 7, FP = 0)
      class_id = 10, name = Haribo Frogs, ap = 100.00% (TP = 6, FP = 0)
      class_id = 11, name = Chips Ahoy, ap = 100.00% (TP = 4, FP = 0)
      class_id = 12, name = JIF, ap = 100.00% (TP = 7, FP = 0)
      class_id = 13, name = Glaid, ap = 100.00% (TP = 5, FP = 0)
      class_id = 14, name = Twix, ap = 100.00% (TP = 8, FP = 0)
      class_id = 15, name = campBells Chicken, ap = 100.00% (TP = 8, FP = 0)
      class_id = 16, name = Chunck, ap = 100.00% (TP = 5, FP = 0)
      class_id = 17, name = Onze, ap = 100.00% (TP = 8, FP = 0)
      class_id = 18, name = Rock Star, ap = 100.00% (TP = 6, FP = 0)
      class_id = 19, name = Kodak Elite, ap = 100.00% (TP = 6, FP = 0)
      class_id = 20, name = Tostitos, ap = 100.00% (TP = 6, FP = 0)
      class_id = 21, name = Ritter Sport, ap = 100.00% (TP = 6, FP = 0)
      class_id = 22, name = Ruffles, ap = 100.00% (TP = 5, FP = 0)
      class_id = 23, name = Ben & Jerrys, ap = 100.00% (TP = 5, FP = 0)
      class_id = 24, name = Vegetable Thins, ap = 100.00% (TP = 4, FP = 0)
      class_id = 25, name = Snickers, ap = 100.00% (TP = 6, FP = 1)
      class_id = 26, name = YoplA, ap = 100.00% (TP = 2, FP = 0)
      class_id = 27, name = Yoplat Original, ap = 100.00% (TP = 1, FP = 0)
      class_id = 28, name = Clorex, ap = 100.00% (TP = 6, FP = 0)
      class_id = 29, name = Clinox, ap = 100.00% (TP = 9, FP = 1)
      class_id = 30, name = Gatorade, ap = 100.00% (TP = 6, FP = 0)
      class_id = 31, name = Snyders, ap = 100.00% (TP = 3, FP = 0)
      class_id = 32, name = Pente, ap = 89.26% (TP = 9, FP = 1)
      class_id = 33, name = Motin, ap = 0.00% (TP = 0, FP = 0)
      class_id = 34, name = Motrin, ap = 100.00% (TP = 15, FP = 0)
      class_id = 35, name = Neosporin, ap = 100.00% (TP = 8, FP = 0)
      class_id = 36, name = ChexMIx, ap = 100.00% (TP = 1, FP = 0)
      class_id = 37, name = Salsitas, ap = 0.00% (TP = 0, FP = 0)
      class_id = 38, name = TicTac, ap = 0.00% (TP = 0, FP = 0)
      class_id = 39, name = Dentine, ap = 0.00% (TP = 0, FP = 0)
      class_id = 40, name = Dentyne, ap = 0.00% (TP = 0, FP = 0)
      class_id = 41, name = Certs, ap = 0.00% (TP = 0, FP = 0)
      class_id = 42, name = Bayers, ap = 0.00% (TP = 0, FP = 0)
      class_id = 43, name = Bayer, ap = 0.00% (TP = 0, FP = 0)
      class_id = 44, name = Windex, ap = 0.00% (TP = 0, FP = 0)
      class_id = 45, name = Moça, ap = 0.00% (TP = 0, FP = 0)
      class_id = 46, name = Ziploc, ap = 0.00% (TP = 0, FP = 0)
      class_id = 47, name = Aleve, ap = 0.00% (TP = 0, FP = 0)
      class_id = 48, name = Gornettos, ap = 0.00% (TP = 0, FP = 0)
      class_id = 49, name = KitKate, ap = 0.00% (TP = 0, FP = 0)
      class_id = 50, name = Pieces, ap = 0.00% (TP = 0, FP = 0)
      class_id = 51, name = Sabonete, ap = 0.00% (TP = 0, FP = 0)
      class_id = 52, name = ChapStivk, ap = 0.00% (TP = 0, FP = 0)
      class_id = 53, name = ChapStick, ap = 0.00% (TP = 0, FP = 0)
      class_id = 54, name = Tide, ap = 0.00% (TP = 0, FP = 0)
      class_id = 55, name = Pingles, ap = 0.00% (TP = 0, FP = 0)
      class_id = 56, name = Starbust, ap = 0.00% (TP = 0, FP = 0)
      class_id = 57, name = Skittles, ap = 0.00% (TP = 0, FP = 0)
      class_id = 58, name = Claritin, ap = 0.00% (TP = 0, FP = 0)
      class_id = 59, name = Cherios, ap = 0.00% (TP = 0, FP = 0)
      class_id = 60, name = Cheerios, ap = 0.00% (TP = 0, FP = 0)
      class_id = 61, name = Friends, ap = 0.00% (TP = 0, FP = 0)
      class_id = 62, name = 409, ap = 0.00% (TP = 0, FP = 0)
      class_id = 63, name = Monster, ap = 0.00% (TP = 0, FP = 0)
      class_id = 64, name = Menthos, ap = 0.00% (TP = 0, FP = 0)
      class_id = 65, name = Tapio, ap = 0.00% (TP = 0, FP = 0)
      class_id = 66, name = Dove, ap = 0.00% (TP = 0, FP = 0)
      class_id = 67, name = Band-Aid, ap = 0.00% (TP = 0, FP = 0)
      class_id = 68, name = Carmex, ap = 0.00% (TP = 0, FP = 0)
      class_id = 69, name = RockStar, ap = 0.00% (TP = 0, FP = 0)
      class_id = 70, name = Vick Nyght, ap = 0.00% (TP = 0, FP = 0)
      class_id = 71, name = Vick NyQuit, ap = 0.00% (TP = 0, FP = 0)
      class_id = 72, name = Extra, ap = 0.00% (TP = 0, FP = 0)
      class_id = 73, name = Crunch, ap = 0.00% (TP = 0, FP = 0)
      class_id = 74, name = Lays, ap = 0.00% (TP = 0, FP = 0)
      class_id = 75, name = Kaking Soda, ap = 0.00% (TP = 0, FP = 0)
      class_id = 76, name = Baking Soda, ap = 0.00% (TP = 0, FP = 0)
      class_id = 77, name = Martinellis, ap = 0.00% (TP = 0, FP = 0)
      class_id = 78, name = Coke Lemo, ap = 0.00% (TP = 0, FP = 0)
      class_id = 79, name = Coke Lime, ap = 0.00% (TP = 0, FP = 0)
      class_id = 80, name = Sprite, ap = 0.00% (TP = 0, FP = 0)
      class_id = 81, name = Props, ap = 0.00% (TP = 0, FP = 0)
      class_id = 82, name = Aviator, ap = 0.00% (TP = 0, FP = 0)
      class_id = 83, name = ACT II, ap = 0.00% (TP = 0, FP = 0)
      class_id = 84, name = Dr Pepper, ap = 0.00% (TP = 0, FP = 0)
      class_id = 85, name = Double Mint, ap = 0.00% (TP = 0, FP = 0)
      class_id = 86, name = Tylenou PM, ap = 0.00% (TP = 0, FP = 0)
      class_id = 87, name = Red BUll, ap = 0.00% (TP = 0, FP = 0)
      class_id = 88, name = Red Bull, ap = 0.00% (TP = 0, FP = 0)
      class_id = 89, name = BlisTex, ap = 0.00% (TP = 0, FP = 0)
      class_id = 90, name = Linet, ap = 0.00% (TP = 0, FP = 0)
      class_id = 91, name = Lindt, ap = 0.00% (TP = 0, FP = 0)
      class_id = 92, name = Excellence, ap = 0.00% (TP = 0, FP = 0)
      class_id = 93, name = Haribo Gold, ap = 0.00% (TP = 0, FP = 0)
      class_id = 94, name = Toblerrone, ap = 0.00% (TP = 0, FP = 0)
      class_id = 95, name = Mammer, ap = 0.00% (TP = 0, FP = 0)
      class_id = 96, name = Big Red, ap = 0.00% (TP = 0, FP = 0)
      class_id = 97, name = Chunk, ap = 0.00% (TP = 0, FP = 0)
      class_id = 98, name = Milano, ap = 0.00% (TP = 0, FP = 0)
      class_id = 99, name = Tylenol Extra, ap = 0.00% (TP = 0, FP = 0)
      class_id = 100, name = Capuccino, ap = 0.00% (TP = 0, FP = 0)
      class_id = 101, name = Cappuccino, ap = 0.00% (TP = 0, FP = 0)
      class_id = 102, name = Yoo-Yoo, ap = 0.00% (TP = 0, FP = 0)
      class_id = 103, name = Bull, ap = 0.00% (TP = 0, FP = 0)
      class_id = 104, name = Symphony, ap = 0.00% (TP = 0, FP = 0)
      class_id = 105, name = Nilla, ap = 0.00% (TP = 0, FP = 0)
      class_id = 106, name = Orbeto, ap = 0.00% (TP = 0, FP = 0)
      class_id = 107, name = David, ap = 0.00% (TP = 0, FP = 0)
      class_id = 108, name = Vick DayKill, ap = 0.00% (TP = 0, FP = 0)
      class_id = 109, name = Vick DayQuil, ap = 0.00% (TP = 0, FP = 0)
      class_id = 110, name = Hunts Sauce, ap = 0.00% (TP = 0, FP = 0)
      class_id = 111, name = Kotex, ap = 0.00% (TP = 0, FP = 0)
      class_id = 112, name = Aways, ap = 0.00% (TP = 0, FP = 0)
      class_id = 113, name = Soft, ap = 0.00% (TP = 0, FP = 0)
      class_id = 114, name = Lipton, ap = 0.00% (TP = 0, FP = 0)
      class_id = 115, name = Raid, ap = 0.00% (TP = 0, FP = 0)
      class_id = 116, name = shout, ap = 0.00% (TP = 0, FP = 0)
      class_id = 117, name = Gillete, ap = 0.00% (TP = 0, FP = 0)
      class_id = 118, name = Gillette, ap = 0.00% (TP = 0, FP = 0)
      class_id = 119, name = Campbels, ap = 0.00% (TP = 0, FP = 0)
      class_id = 120, name = Campbells Soup, ap = 0.00% (TP = 0, FP = 0)
      class_id = 121, name = Campbels Soup, ap = 0.00% (TP = 0, FP = 0)
      class_id = 122, name = Campbels Tomato, ap = 0.00% (TP = 0, FP = 0)
      class_id = 123, name = Vivarin, ap = 0.00% (TP = 0, FP = 0)
      class_id = 124, name = Chezz IT, ap = 0.00% (TP = 0, FP = 0)
      class_id = 125, name = Raviolli, ap = 0.00% (TP = 0, FP = 0)
      class_id = 126, name = Life Stylles, ap = 0.00% (TP = 0, FP = 0)
      class_id = 127, name = Life Styles, ap = 0.00% (TP = 0, FP = 0)
      class_id = 128, name = Ceystal, ap = 0.00% (TP = 0, FP = 0)
      class_id = 129, name = Crystal, ap = 0.00% (TP = 0, FP = 0)
      class_id = 130, name = Luna, ap = 0.00% (TP = 0, FP = 0)
      class_id = 131, name = Raislin Brain, ap = 0.00% (TP = 0, FP = 0)
      class_id = 132, name = Raislin Bran, ap = 0.00% (TP = 0, FP = 0)
      class_id = 133, name = Honeu Nut, ap = 0.00% (TP = 0, FP = 0)
      class_id = 134, name = Honey Nut, ap = 0.00% (TP = 0, FP = 0)
      class_id = 135, name = Pepto Bisnol, ap = 0.00% (TP = 0, FP = 0)
      class_id = 136, name = Pepto Bismol, ap = 0.00% (TP = 0, FP = 0)
      class_id = 137, name = Pepto Bisnol Pastilhas, ap = 0.00% (TP = 0, FP = 0)
      class_id = 138, name = Tabasco, ap = 0.00% (TP = 0, FP = 0)
      class_id = 139, name = Plus Gold, ap = 0.00% (TP = 0, FP = 0)

      for conf_thresh = 0.25, precision = 0.98, recall = 0.99, F1-score = 0.99
      for conf_thresh = 0.25, TP = 177, FP = 4, FN = 1, average IoU = 76.56 %

      IoU threshold = 50 %, used Area-Under-Curve for each unique Recall
      mean average precision (mAP@0.50) = 0.213519, or 21.35 %
      Total Detection Time: 21 Seconds

      #32804
      Gabriel Alves
      Moderador

        Olá Bismarck!

        Antes de tudo seria bom saber mais ou menos quantas imagens de treinamento pra cada classe você adquiriu e está usando no treinamento. Embora 17.000 iterações possam parecer muito temos que lembrar que você está trabalhando com mais de 100 classes diferentes, que pro padrão já é algo bem elevado, então o número de iterações é relativamente pequeno se for considerar esse detalhe. Portanto pode deixar treinando por mais tempo se possível, enquanto notar que o mAP continua melhorando (no geral) e o loss diminuir pode deixar treinando.
        Como será treinado com um número de iterações bastante elevado recomendo você testar o modelo não só com os pesos que foi treinado por mais tempo mas também com os penúltimos, já que é sempre bom verificar se não está ocorrendo overfitting de algum modo.

        Quanto aos parâmetros do arquivo de configuração (ex: filters, etc.), confirme se você definiu os valores usando aquelas fórmulas que mostramos em aula, ou se não então informe quais valores você usou.

         

        #32807
        Bismarck
        Participante

          São ao todo 12.000 fotos dividos nas classes.
          Sim alterei os arquivos de configuração conforme informado nos vídeos.

          #32817
          Gabriel Alves
          Moderador

            Opa, então seria em média umas 85 fotos para cada classe. Isso se o dataset estiver bem balanceado, pois se tiver por exemplo classes com uma quantidade de fotos bem abaixo dessa média (ex: 10 fotos) isso será ainda outro problema, o ideal é que esteja bem distribuído e se tiver classes com poucas fotos será necessário completar com mais fotos (ou gerar amostras através de técnicas de sintetização de novas imagens) pois se não vai ocorrer muitas detecções incorretas para essas classes especialmente.

            Como está sendo treinado uma quantidade de classes muito elevada (140 é até bem acima do MS COCO, que já tem bastante) então pode esperar que seja necessário treinar por mais tempo ainda para conseguir resultados melhores. Pois é conforme eu comentei, 17.000 embora pareça muito nesse caso é pouco considerando o número de classes (não há uma quantidade “certa” pois depende de algumas coisas como a complexidade dos objetos).

            Enfim, a sugestão continua sendo treinar por mais tempo. Treine o máximo de tempo que for possível e use daquela dica que comentei para evitar um possível overfitting.

            Se tiver muita disposição você poderia fazer um teste mais tarde: escolha apenas umas 5 classes e faça o treinamento do modelo com elas apenas. E depois compare os resultados obtidos, para verificar se a precisão melhora mesmo com uma quantidade de iterações menor (5.000 pelo menos), o que é o esperado. Se ainda assim continuar com resultados ruins então o problema é outro e não adianta treinar o modelo de 140 classes por mais tempo. Não creio que seja isso pois você seguiu as formulas para definir os valores do arquivo de config e imagino que as imagens de treinamento são boas e abrangentes, mas se por um acaso no teste com 5 classes continuar com uma assertividade próxima dessa sua atual então tem que verificar com mais calma o que mais pode ser; rever os passos e se as imagens de treinamento são o suficiente para o modelo aprender a detectar bem esses mesmos objetos nos cenários reais que você está testando (pois se for muito diferente em ambiente/iluminação/ângulo então a rede não entregará resultados tão bons como esperado).

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.