Forum Replies Created

Viewing 15 posts - 331 through 345 (of 425 total)
  • Author
    Posts
  • in reply to: Criação Modelo Reconhecimento de Imagens #34506
    Gabriel Alves
    Keymaster

      Olá Bruno, que bom que esteja gostando dos cursos! =)

      Sobre sua dúvida, para fazer o que você deseja pode utilizar as técnicas de segmentação de instâncias ou utilizar um detector de objetos como o YOLO, que provavelmente nesses cenários dará resultados mais precisos. E para fazer a contagem dos objetos dê uma olhada no curso Detecção de Movimentos, lá tem uma seção onde mostra como implementar um contador de carros e caminhões em vídeos, basta adaptar para o objeto que você precisa.

      E em relação à sua outra dúvida, se refere à projetos práticos? Em quase todos os cursos (mais pro final) tem uma seção onde mostra algum projeto de como pode ser usado em um cenário real, como o curso de OCR por exemplo. Em outros fazemos em forma de mini projetos durante o curso (como você pode ver nesse curso sobre segmentação), com vários mini projetos ao longo das aulas, nesse caso é mais apropriado pois como pôde ver são muitas técnicas a serem abordadas.

      in reply to: Acesso ao código em MaskRcnn e ao Unet? #34453
      Gabriel Alves
      Keymaster

        Opa, esse erro acontece quando o programa não encontra o arquivo no diretório especificado. Verifique se o diretório que você informou no comando é exatamente o mesmo que está em execução no Colab – e se o balloon_dataset.zip está mesmo naquela pasta (ou seja, verifique se os nomes das pastas são exatamente aqueles, é normal que o nome de pelo menos uma das pastas possa estar diferente para você). Se após conferir que o diretório está correto e ainda assim o problema persistir, então peço que compartilhe aqui seu Colab, pois pode ter outra coisa em seu código interferindo.

        in reply to: Mrcnn #34359
        Gabriel Alves
        Keymaster

          Olá Luiz!

          Qual erro que aparece? Se puder verificar se você está no diretório certo (com o comando pwd).

          Sugiro fazer o seguinte: Reinicie o ambiente de execução no Colab e execute novamente os mesmos códigos e comandos apresentados em aula, naquela mesma ordem. Qualquer coisa, você pode também comparar com esse código aqui => https://colab.research.google.com/drive/1u32bsDb9M8ir2VaZvkOyUfJJV3v6OEML?usp=sharing

          in reply to: Visao Computaciona #34358
          Gabriel Alves
          Keymaster

            Olá Emerson!

            Mas em qual seção exatamente você não encontrou o arquivo? O Colab de cada seção vista no curso se encontra na primeira aula da seção, dentro da aba Materiais. Por exemplo, para a seção “Detecção de objetos com YOLO e Darknet” o link pro Colab se encontra na aula “Configuração do ambiente”. Veja que ao acessar essa aula, vai ter abaixo do título duas abas: Tópico (que já está selecionado e é onde aparece o vídeo) e Materiais. Ao clicar nessa aba Materiais vai aparecer um link, que redireciona para o Colab que contém o código das aulas em sequência do curso (nesse caso, o código da seção).

            Quanto à sua outra dúvida, não da para fazer uma comparação exata pois o TensorFlow na verdade é uma biblioteca e o YOLO é um algoritmo, que também pode ser referenciado como a arquitetura. A “melhor” vai depender muito do seu objetivo, até porque depende de qual técnica exatamente você vai implementar através do TensorFlow, mas ultimamente as versões mais modernas do YOLO têm demonstrado resultados bem interessantes. Mas caso esteja em dúvida entre o que usar, veja essa discussão aqui.

            in reply to: Acesso ao código em MaskRcnn e ao Unet? #34219
            Gabriel Alves
            Keymaster

              Olá Luiz,

              Os links para os Colabs contendo o código completo da seção estão na primeira aula de cada uma das seções. Basta acessar a aula e verá que vai ter uma aba com o nome “Materiais”, então ao clicar nessa opção será exibido o link pro Colab. Por exemplo, para o Colab do Unet que você citou, vá até a primeira aula da seção “Segmentação semântica” (aula chamada “Introdução”) e veja que lá vai ter essa aba “Materiais” conforme eu descrevi (que leva para esse link aqui).

              Já para o Mask R-CNN, caso você se refira ao Colab do treinamento então não é o que está na aula de introdução do módulo de Segmentação de instâncias (que é o com a implementação que usa o modelo pré-treinado), mas sim o link anexo na aula “Treinamento personalizado – balões 1”, que é a aula onde de fato iniciamos a implementação do treinamento personalizado (link). Ou seja, os links para os códigos estão na aba Materiais da primeira aula sobre o conteúdo da seção a ser visto.

              in reply to: Aula de implementação do Soebel e do Canny #34217
              Gabriel Alves
              Keymaster

                Olá Sergio!

                O que aconteceu na verdade é que essas duas aulas em específico (“Operador Sobel – implementação” e “Canny Edge – implementação”) estavam fora da ordem na listagem, após feita uma alteração, o que fazia com que essas duas aulas aparecessem mais pro final do módulo. Mas só para avisar que já foi retornado ao normal e agora já está na ordem correta.

                Quanto ao código, ele está disponível no Colab disponibilizado na primeira aula dessa seção (aula “Introdução”), na aba Materiais, então caso queira acessar esse colab com o código completo basta ir até essa aula e acessar o link lá (ou clique direto aqui).

                in reply to: [Recomendação] Anotação de imagem automatizada #33810
                Gabriel Alves
                Keymaster

                  Olá Eduardo,

                  Primeiramente, que bom que tenha gostado do curso!

                  Sobre sua dúvida, acho difícil encontrar alguma solução open source que possua a mesma precisão dessas ferramentas que você citou, que são privadas e portanto foi provavelmente investido bastante para transformar em um serviço pago. Por enquanto não encontrei alguma que possa oferecer resultados parecidos, mas como sugestão deixarei abaixo o link para um artigo bom que reúne algumas das melhores ferramentas open source para fazer a anotação de imagens, só que o detalhe é que muitas dessas ferramentas oferecem funções de automatização ou até mesmo funções baseadas em algoritmos de machine learning que permitem identificar facilmente as bordas do objeto (por exemplo), dessa maneira tornando o processo de anotação muito mais rápido e eficiente.

                  https://humansintheloop.org/10-of-the-best-open-source-annotation-tools-for-computer-vision-2021/

                  Encontrei também essa abordagem que pode ser útil dependendo do seu caso (link pro repositório).

                  Ainda sobre o tema, tem também esse artigo que pode dar algumas ideias.

                  in reply to: Erro na geração do arquivo vetorizado #33809
                  Gabriel Alves
                  Keymaster

                    Olá Fernando!

                    Esse erro pode acontecer quando ao criar o vetor é inserido um tamanho diferente daquele que foi treinado. O tamanho da largura (-w) e altura (-h) deve ser o mesmo informado nessas etapas.

                    Por exemplo, se na hora de gerar o vetor você colocar -w 24 -h 24 mas na hora de treinar colocar -w 20 -h 20 então vai gerar essa mensagem de erro.

                    Esse é o motivo mais provável, mas esse erro também pode ocorrer quando o valor informado nos parâmetros não é compatível com o que tem disponível na pasta. Exemplo: quando você informa como parâmetro um certo número de imagens negativas porém na pasta possui uma quantidade de imagens menor que a informada.

                    Verifique também se o caminho das imagens está correto (na etapa de geração do .vec).

                    Portanto, verifique se em todas as etapas o tamanho é o mesmo. Se continuar esse erro tente refazer as etapas e mudar as dimensões (-w e -h) para ver se permanece assim. É bom conferir pois as vezes pode acontecer do OpenCV mudar as dimensões no processo (embora seja raro, mas pode acontecer caso uma etapa não ocorra como esperado).

                    Se mesmo assim verificar que ocorre o erro, sugiro executar o mesmo comando que foi mostrado em aula (mesmos parâmetros de tamanho) e a partir daí você consegue ir testando e modificando aos poucos cada parâmetro e verificar exatamente quando (nesse caso, após qual mudança) que ocorre o erro.

                    in reply to: Wiliam script #33496
                    Gabriel Alves
                    Keymaster

                      Olá William,

                      No caso isso que citamos foi apenas uma ideia adicional, pois repare que nos exemplos de aula usamos no máximo 10 imagens positivas diferentes então é viável executar o comando 10 vezes (apenas alterando o parâmetro do nome da pasta). Já se for uma quantidade muito maior de imagens então ficaria ruim executar o comando tantas vezes, portanto para tornar o processo mais prático nós recomendamos criar um script onde você apenas informa os nomes das pastas (ou ainda, dois números, inicio e fim, por exemplo 1 e 10, já que as pastas vão de “positivas1” até “positivas10”) e o código automaticamente executa cada um dos comandos para cada uma das imagens diferentes.

                      Nós não temos aqui um código pronto de como fazer isso, mas se você precisa implementar vou te dar uma ideia. É bem simples na verdade, basta usar a biblioteca os do Python para executar comandos diretamente na linha de comandos, então você coloca esse comando que disponibilizamos em aula dentro de uma função no Python mesmo, só lembre de colocar uma variável no meio desse comando pois você vai ter que deixar o código dinâmico de modo que seja possível informar a ele quais os nomes das pastas (seja inserindo cada um dos nomes por extenso, ou seja através aquela forma mais prática que comentei que consiste em especificar o numero que inicia e o numero que termina). Aí basta fazer um loop para percorrer toda essa lista de pastas que você definiu e executar o comando de geração de positivas para cada iteração.

                      Caso tenha dúvidas de como executar essas funções, dê uma olhada aqui: https://janakiev.com/blog/python-shell-commands/

                      in reply to: Extrair textos em arquivos no formato pdf #33495
                      Gabriel Alves
                      Keymaster

                        Olá Wagner!

                        Para fazer o OCR direto em um arquivo PDF usando o Tesseract é um pouco mais diferente, mas você pode fazer assim: https://www.geeksforgeeks.org/python-reading-contents-of-pdf-using-ocr-optical-character-recognition/

                        Também da para fazer conforme mostra esse código aqui: https://colab.research.google.com/github/ravi-annaswamy/tamil-ebook-recipes/blob/master/OCR_Tamil_PDFs_using_Tesseract.ipynb

                        Como alternativa, você pode também fazer antes a conversão do PDF para um arquivo de imagem .jpg ou .png e depois criar um loop para percorrer todas essas fotos (após a conversão, seria 1 arquivo de imagem para cada página do seu PDF). E por fim bastaria agrupar todo esse conteúdo extraído em um documento único (da para fazer fácil isso através das funções usadas para escrever o texto em um documento).

                        in reply to: Overfitining #33090
                        Gabriel Alves
                        Keymaster

                          Olá Rafael!

                          Na verdade isso é uma coisa que depende muito do dataset com o qual você está trabalhando, pois está ligado às “características” do seu set de treinamento. Primeiramente, qual dataset você está tentando fazer transfer learning? E quantas imagens ele possui (pra treinamento e validação)?

                          Pois em alguns conjuntos é necessário ajustes mais complexos já que isso depende das características dos próprios dados (nesse caso, imagens).

                          Outra coisa: é possível aumentar a quantidade de imagens em seu dataset? Se sim, sugiro fazer esse experimento e realizar o treinamento novamente. Se a acurácia do set de validação está ruim significa que o modelo não está conseguindo aprender com os dados e extrair as features relevantes necessárias para ter um bom desempenho.

                          Revise o dataset e garanta que as imagens de treinamento sejam uma boa referência para que o modelo consiga prever o set de validação, pois não adianta as imagens de validação serem muito diferentes também e esperar que com poucos ajustes o modelo vai aprender a identificar bem esses padrões. Caso não possa capturar mais imagens, pode usar a técnica de Data Augmentation.

                          Minha recomendação então é fazer mais experimentos nessas camadas conforme você está fazendo – deixo como sugestão a leitura desse guia aqui que acho que vai te ajudar.

                          Além disso, o que vai melhorar os resultados é descongelar (unfreeze) as camadas do modelo. Esse método de manter as camadas congeladas garante uma melhora incrivel na velocidade de treinamento, porém fica muito limitado à acurácia, então se precisa melhorar essa acurácia – especialmente porque a precisão no set de validação está ruim – o mais indicado é testar isso (ou seja, diminuir as camadas congeladas e aumentar camadas treináveis).

                          in reply to: PySerial #33002
                          Gabriel Alves
                          Keymaster

                            Olá Israel!

                            Infelizmente não possuimos nenhum curso que aborde essa área, porém vou deixar abaixo alguns materiais que podem te ajudar. E a posição dos objetos você pode obter através das coordenadas das caixas delimitadoras, retornadas pela função que faz a predição na implementação com OpenCV.

                            in reply to: Dúvidas de treinamento do modelo #32817
                            Gabriel Alves
                            Keymaster

                              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).

                              Gabriel Alves
                              Keymaster

                                Olá Gerson!

                                Os parâmetros -w e -h do comando opencv_createsamples para geração do vetor servem para definir o tamanho final das imagens do cascade. Na etapa anterior você pode ter usado por exemplo outros tamanhos de largura e altura para a criação das amostras (também com o comando opencv_createsamples), pois você poderia por exemplo criar amostras com tamanhos maiores, só que ao treinar pode ter preferido usar um tamanho um pouco menor, já que você pode querer reduzir esse tamanho para demorar menos tempo no treinamento. Então você poderia fazer isso, embora recomendamos definir um tamanho inicial e usar ele com os 3 comandos.

                                Ou seja, nessa etapa da criação do vetor o tamanho escolhido através dos parâmetros -w e -h é definido com o tamanho final do cascade e portanto esses valores devem ser o mesmos usados na etapa seguinte (com o comando de treinamento).

                                in reply to: Dúvidas de treinamento do modelo #32804
                                Gabriel Alves
                                Keymaster

                                  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.

                                   

                                Viewing 15 posts - 331 through 345 (of 425 total)