Forum Replies Created

Viewing 15 posts - 286 through 300 (of 425 total)
  • Author
    Posts
  • in reply to: Segmentar (Colorir) objeto da classe detectada #37262
    Gabriel Alves
    Keymaster

      Olá!

      Para colorir a “área” de cada porco seria aconselhável você treinar novamente com Mask R-CNN pois ele é próprio para segmentação, e com detecção você apenas consegue as coordenadas da caixa delimitadora. Mas se você já tem o modelo treinado com YOLO então você pode tentar algumas opções.

      A primeira alternativa seria usar um detector de contornos como o Canny Edge (mostrado no curso), e após processar a imagem fazer o preenchimento do objeto central. Tem um código aqui completo que mostra como fazer isso. Essa imagem processada pode ser usada como a máscara de uma outra imagem, que será uma imagem do tamanho da imagem original e preenchida inteiramente com a cor desejada (e aí você pode aplicar uma transparência a ela, que já é feito pelas funções nativas do repositório do mask R-CNN mas se você quiser implementar manualmente pode fazer como demonstrado aqui).

      Observação: essa operação é feita para cada ROI (região de interesse) detectada, ou seja, para cada pedaço da imagem dentro de cada uma das caixas delimitadoras, pois todo o resto da imagem não é de interesse então pode ser ignorado.

      Essa opção exige bastante ajustes e testes pra deixar o contorno bem perfeito, então se quiser algo mais “pronto” e genérico pode usar uma técnica para extração do objeto principal da imagem usando deep learning, como essa aqui https://towardsdatascience.com/background-removal-with-deep-learning-c4f2104b3157  (também são usadas para remoção de fundo). Novamente, deve ser aplicado a cada caixa delimitadora, e será mais custosa computacionalmente pois envolve deep learning só para essa função.

      Gabriel Alves
      Keymaster

        Opa!

        Então quanto à versão, você pode usar a mesma que está sendo usado pelo Colab, conforme no código fonte aqui, que está em funcionamento (recomendo também dar uma olhada no código e comparar com o seu).

        Segundo o comando cv2.__version__, a versão é a 4.6.0.

         

        Recomendo verificar mais duas coisas:

        • Se pro tamanho do vídeo lá em cv2.VideoWriter() foi passado como parâmetro a altura e largura exatas que estão sendo salvas os frames (com o salvar_video.write()). Tem que estar o mesmo tamanho, ou ele vai dar esse problema no salvamento do vídeo e o arquivo ficará com poucos bytes de tamanho.
        • Se mudou para .avi a extensão do arquivo salvo (saída). Se sim, me passe a mensagem que aparece (se aparecer) ou qual tamanho ficou o arquivo.

         

        Mas em último caso você pode desinstalar mesmo o OpenCV e instalar novamente essa versão. Pois pode ser até o caso de estar faltando alguma config necessária para os vídeos, para visualizar essas informações execute print(cv2.getBuildInformation()) e veja por exemplo se lá em “Video I/O” o “FFMPEG” está como “YES”.

        in reply to: Forma certa de customizar um modelo #36891
        Gabriel Alves
        Keymaster

          Olá!

          Nesse caso recomenda-se fazer a anotação de todos os porcos pois o algoritmo tenta associar as regiões não marcadas como sendo o “fundo”, ou seja funciona parecido com essa ideia das imagens negativas. Portanto, o ideal é que todos os “objetos” da classe específica estejam marcados, de modo que não confunda o modelo e assim acabe gerando resultados menos confiáveis. Ou seja, é recomendado fazer a anotação de todos mesmo que dê mais trabalho, vai garantir resultados melhores, não apenas porque há mais instâncias anotadas mas também por esse outro motivo, que querendo ou não pode ter um certo impacto (mesmo que não seja tão considerável, dependendo do caso).

          Gabriel Alves
          Keymaster

            Opa!

            Experimente fazer a seguinte substituição: de cv2.VideoWriter_fourcc(*’mp4v’) para cv2.VideoWriter_fourcc(‘m’, ‘p’, ‘4’, ‘v’) 

            Faça essa mudança, tente executar e veja se dá certo (se não, me passe o erro exato que apareceu agora, caso seja diferente). Se não der tente também remover a extensão “.mp4” do nome do arquivo, que foi passado como parâmetro.

            A propósito, no nome do arquivo você tava colocando de início para salvar em .mp4 ou .avi? Então tente salvar direto na extensão .avi mesmo, basta mudar o nome do arquivo ali na variável resultado, ficando assim: resultado = ‘../content/gesture1_novo.avi′  e mude novamente para cv2.VideoWriter_fourcc(*’XVID’)

            Caso realmente isso não funcione também aí sugiro fazer o downgrade de sua versão do OpenCV pois pode ser até que seja algum bug recente, mas acredito que fazendo essa mudança já funcione aí em seu ambiente.

            in reply to: Como contar quantos objetos existem na imagem ? #36860
            Gabriel Alves
            Keymaster

              Olá Felipe!

              Para imagens é mais fácil, você só precisa contar quantas detecções houveram para determinada classe. Para isso pode usar por exemplo uma condição if para conferir se a classe do objeto x na imagem corresponde à classe que deseja contar. Isso é explicado também na aula “Contagem de objetos em múltiplas imagens”, no módulo “Detecção de objetos com YOLO e OpenCV”.

              Gabriel Alves
              Keymaster

                Olá Gabriel!

                Qual versão do OpenCV você está usando? Pode ser algum bug com a versão, pois aqui com o mesmo código ele roda sem esse problema.
                Se puder conferir também se todas as variáveis anteriores estão com os valores esperados, pois as vezes tem ali algum detalhe (ex: alguma linha executada fora de ordem) que deixou com esse comportamento.

                Mas se conferiu e está tudo certo então tenta substituir o XVID por mp4v (tem que ser minúsculo).

                in reply to: Couldn’t open file: /data/train.txt #36798
                Gabriel Alves
                Keymaster

                  Olá Felipe!

                  Pela mensagem de erro, o darknet não conseguiu localizar o arquivo .txt de treinamento. Verifique se o comando  (!./darknet detector …) foi executado no diretório correto, conforme mostrado em aula, ou se foi executado a partir de outro diretório. Pois nesse caso ele não vai encontrar o arquivo no caminho especificado em obj.data. Então você pode conferir se está no diretório relativo correto; ou atualizar o caminho no obj.data e colocar o caminho absoluto.

                  in reply to: Emissão do Certificado #36797
                  Gabriel Alves
                  Keymaster

                    Olá Gustavo! Tudo bem?

                    Para quais aulas exatamente está acontecendo isso para você? Se puder informar o nome, que iremos verificar aqui e resolver para você.

                    in reply to: Problemas para concluir o curso #36795
                    Gabriel Alves
                    Keymaster

                      Olá Vitoriano!

                      Só para avisar que o problema já foi corrigido, caso não tenha visto.

                      A aula que faltava você dar check já foi reconhecida no seu progresso (marcada como visualizada), portanto quando você quiser já pode acessar a página Meus Cursos e fazer o download do seu certificado!

                      in reply to: Segmentação de objetos no YoLov7 #36500
                      Gabriel Alves
                      Keymaster

                        Olá Leandro!

                        Para segmentação, veja aqui o código.

                        Ele foi lançado muito recentemente, então sugiro dar uma olhada no repositório oficial, até mesmo para acompanhar pois eles podem fazer alguma correção de bugs ou problemas: https://github.com/WongKinYiu/yolov7

                        in reply to: Treinamento da Rede Neural #36499
                        Gabriel Alves
                        Keymaster

                          Opa, disponha =)

                          in reply to: Treinamento da Rede Neural #36473
                          Gabriel Alves
                          Keymaster

                            Olá Fogaça!

                            Sim, você pode continuar o treinamento usando como peso “inicial” aquele que você já treinou antes, então não há a necessidade de treinar tudo do zero. Seria como continuar o treinamento interrompido (conforme mostrado em aula), basta informar como parâmetro os pesos que foram treinados anteriormente. Além disso, antes de executar o comando novamente você precisa certificar também de fazer as modificações necessárias no arquivo .cfg para atualizar lá onde precisa indicar o número de classes treinadas, filtros, etc. E também é necessário atualizar todos os arquivos onde é definido informações sobre as classes que serão treinadas. Recomendo que ao fazer isso você carregue junto também as imagens usadas para o treinamento anterior, junto com as anotações – ou seja, estaria na prática apenas continuando o treinamento e adicionando mais imagens ao seu dataset (embora sejam imagens de classes antes não vistas).

                            in reply to: Onde estao os .py ? #36146
                            Gabriel Alves
                            Keymaster

                              Olá Eduardo!

                              O Drive com todos os recursos do curso (assim como os arquivos .py que você citou) estão no link compartilhado dentro da aula Recursos para download, na seção de Introdução.

                              in reply to: duvida na segmentação por regiões #36145
                              Gabriel Alves
                              Keymaster

                                Olá Matheus!

                                Esse é um problema que depende da imagem e que passou a acontecer após alguma atualização bem recente das bibliotecas. É um erro relacionado ao formato e tipo da imagem que é exibido, para resolvê-lo de forma prática basta mudar o type através da função .astype()

                                Portanto, acima de

                                mostrar(seg_regiao)

                                basta adicionar

                                seg_regiao = seg_regiao.astype(np.uint8)

                                Ou pode adicionar direto, assim mostrar(seg_regiao.astype(np.uint8))

                                in reply to: Detecção de faces com CNN e Dlib #36144
                                Gabriel Alves
                                Keymaster

                                  Olá Julio!

                                  Esse problema pode ocorrer dependendo de qual GPU foi atribuída em sua sessão do Colab. Na verdade, foi devido a uma mudança muito recente que esse erro começou a acontecer, mais especificamente após uma atualização do Dlib, que gerou um conflito com a GPU utilizada pelo Colab. Portanto, a solução é utilizar uma versão anterior àquela em que ocorre o problema. Escolhi a 19.22.1, que é uma versão recente também (e antes daquela que começou a dar esse problema) então se você usar essa versão o erro não ocorrerá.

                                  Então, para resolver esse erro você precisa executar antes de import dlib a linha abaixo:

                                  !pip install dlib==19.22.1
                                  em seguida, execute import dlib. Se você já importou o dlib nesta sessão, basta reiniciar o ambiente de execução (selecione Runtime > Restart runtime).

                                  A melhor solução acredito ser essa, até o problema ser resolvido em alguma versão futura.

                                  Qualquer coisa, veja aqui o Colab da aula atualizado.

                                Viewing 15 posts - 286 through 300 (of 425 total)