Forum Replies Created

Viewing 15 posts - 391 through 405 (of 434 total)
  • Author
    Posts
  • in reply to: Reconhecimento de texto em várias linhas #29663
    Gabriel Alves
    Keymaster

      Olá Guilherme! Primeiramente, ficamos felizes que esteja gostando do curso!

      Sobre sua dúvida, você poderia usar uma função do Python para substituir por espaço (” “) os caracteres que determinam uma nova linha em sua string. Talvez o modo mais simples seria usando a função replace(), cujo primeiro parâmetro é o “alvo” que você quer substituir e o segundo parâmetro é o que você quer que fique no lugar.

      Por exemplo, vamos assumir que seu texto esteja em uma variável chamada “texto” (que é populada com o retorno da função que fez o OCR). Caso você tenha usado a função image_to_string() do Pytesseract o texto vem com a formatação que ele identificou na imagem, ou seja, incluindo as quebras de linha. Então para colocar espaço no lugar das quebras de linha basta fazer assim:

      texto = texto.replace("\n", " ")

      como resultado você terá

      '515 097'

      Caso use a função image_to_data() para fazer o OCR será fácil também, você pode primeiro inicializar uma nova variável com uma string vazia

      texto_completo = “”

      obs: você coloca isso antes do for que percorrerá cada resultado retornado pela função de OCR.

      E dentro do for, pra cada iteração, você vai deixar assim

      for i in range(0, len(resultado["text"])):
      
          ....
      
          texto = resultado["text"][i]
      
          texto_completo = texto_completo + texto + " "

      ao final, a variável texto_completo conterá esse resultado “515 097”

      Se você está utilizando uma abordagem que detecta antes o texto na imagem então para fazer isso que você quer vai ser um pouco mais complexo e exige uma codificação mais específica. Caso esteja usando um detector específico para textos (como o EAST por exemplo) provavelmente será um pouco mais fácil, já que ele deve agrupar os caracteres que estejam lado a lado (igual ao image_to_data), assim:

      “515”  “097”

      ou seja, são duas detecções separadas na imagem. Basta fazer um for para percorrer os resultados e concatenar cada bloco de texto, conforme nesse ultimo código que te passei acima (e também, antes de fazer o for, de preferência agrupe pela coordenada x e y onde a bounding box inicia, para evitar que o texto final fique na ordem errada).

      E caso esteja utilizando a técnica para detectar cada caractere individualmente será um pouquinho ainda mais trabalhoso e chato, mas o conceito é igual. Você terá que agrupar cada caractere próximo a partir da coordenada x (onde inicia a bounding box do caractere) e então programar um modo de separar os caracteres cuja coordenada y (do inicio da bounding box) esteja muito acima ou muito abaixo, o que configura como uma nova linha (já que se estivesse em uma nova linha teria a coordenada y bem próxima, lembrando que o y corresponde à “altura” do ponto de início dentro da imagem).

      Obs: pelo que vejo você deseja fazer a detecção de texto em cenários naturais, buscando texto em lugares que são “comuns” e esperados (no caso, postes). Sugiro considerar a possibilidade de criar um detector de objetos (com a técnica YOLO por exemplo) para que antes de realizar o OCR seja detectada a região de interesse do objeto na imagem que você quer realizar o reconhecimento de texto, e assim, após detectada a região é possível realizar o OCR apenas dentro da área da caixa delimitadora. Ou, se não for usar um detector, utilize técnicas de processamento para considerar apenas a área que você deseja realizar o OCR (igual no exemplo do projeto para deteçcão de placas de carros), pois caso contrário o Tesseract vai ter muita dificuldade de reconhecer  (já com o EasyOCR vai ser um pouco mais fácil). Isso é interessante para descartar tudo o que estiver fora da região de interesse na imagem – o que no seu exemplo seria o próprio poste – pois talvez em algumas das fotos tiradas haja a presença de texto em outros lugares, que não seja dentro do poste (por exemplo, a foto tirada pode conter ao fundo o número da casa ou outro número que não é de seu interesse detectar) e isso vai atrapalhar mais ainda seus resultados.

      Gabriel Alves
      Keymaster

        Olá Kezia!

        De cara eu recomendaria pelo menos 1500 imagens para cada classe se você deseja obter uma precisão boa, mas no geral vai depender muito das próprias características do objeto, da complexidade de sua forma. Além disso, depende um pouco da qualidade das imagens de treinamento. Em todo o caso, o autor do repositório darknet recomenda 2000 para cada classe.

        Essa quantidade para cada classe também pode depender do seu cenário, por exemplo, pode ser que algumas classes para o seu caso sejam muito mais importante de detectar do que outras, se for esse o caso então não precisa necessariamente igualar a quantidade de imagens para essas que não são tão fundamentais detectar (mas se possível deixe a quantidade igual pois é o recomendado).

        in reply to: Duvida sobre detecção de obejetos e separação por cores #29637
        Gabriel Alves
        Keymaster

          Olá Felix!

          O que eu mais recomendo para o seu caso seria então fazer uma detecção de cor posteriormente à detecção do objeto. Ou seja, não treinar o modelo para reconhecer bolas de cores diferentes como classes individuais (ex: 1 = bola vermelha; 2 = bola azul, etc.) mas sim treiná-lo para reconhecer o objeto independente da cor (ex: classe 1 = bola).

          Ou seja, até aí seria exatamente como está sendo agora, utilizar o YOLO para detectar o(s) objeto(s) na imagem. Após fazer essa detecção, você pode implementar uma técnica que irá extrair qual é a cor mais predominante, para cada uma das regiões de interesse (área dentro da caixa delimitadora do objeto localizado).

          Tem esse tutorial aqui que explica muito bem como fazer essa detecção de cor.

          Encontrei também esse código completo se você quiser implementar: https://pastebin.com/WVhfmphS

          in reply to: Curso de detecção de Audio #29636
          Gabriel Alves
          Keymaster

            Olá Pedro! Por enquanto não possuímos tal curso, porém está em nosso planejamento lançar um curso sobre reconhecimento de áudios ainda no segundo semestre desse ano.

            Caso você precise implementar essa técnica, recomendo a leitura desse artigo: https://letscode.com.br/blog/speech-recognition-com-python

            in reply to: Base treinamento minúscula #29633
            Gabriel Alves
            Keymaster

              Olá! Tudo bem?

              Infelizmente não temos como dizer como a SS 5520 funciona exatamente por não ser uma informação pública (até onde sei), além disso o código do software usado por ela não é aberto. Portanto, se quiser descobrir mais informações sobre qual algoritmo e técnica ela utiliza teria que consultar talvez o manual ou, mais provavelmente, tentar buscar a informação em uma fonte que não seja tão pública (pelo que pude pesquisar na internet não foi encontrado nada a respeito do seu funcionamento).

              Hoje em dia existem técnicas melhores que essas do OpenCV, que inclusive são muito mais precisas quando há apenas uma foto a disposição. As melhores para essa tarefa são as técnicas baseadas em Deep Learning, que são até mais robustas e portanto tendem a obter melhores resultados em cenários mais desafiadores (como por exemplo é o caso de locais onde a iluminação não é tão boa, conforme você comentou). Principalmente nas versões mais recentes, o OpenCV tem focado bastante no módulo DNN, que permite implementar essas técnicas de Deep Learning. Por isso, o que muitos acabam fazendo hoje para obter bons resultados é utilizar o OpenCV em conjunto com a biblioteca Dlib para fazer o reconhecimento facial. Recomendo esse artigo que explica mais detalhes sobre a técnica e como fazer a implementação:  https://www.pyimagesearch.com/2018/09/24/opencv-face-recognition/

              Outra técnica muito boa para reconhecimento facial é a FaceNet, você pode saber mais sobre ela aqui: https://machinelearningmastery.com/how-to-develop-a-face-recognition-system-using-facenet-in-keras-and-an-svm-classifier/

              Há também um projeto open source baseado em FaceNet, chamado OpenFace: https://cmusatyalab.github.io/openface/

              in reply to: Material detecção de objetos com yolo e opencv faltando #29485
              Gabriel Alves
              Keymaster
                in reply to: arquivo tutorial Linux #29484
                Gabriel Alves
                Keymaster

                  Olá Pedro Ivo!

                  O pdf com o tutorial para instalar no Linux é esse aqui: https://drive.google.com/file/d/1Fd7j44781xCOHe-4XWvoWMokmR4eu38y/view?usp=sharing

                  in reply to: compartilhar haarcascade de mascara. #29483
                  Gabriel Alves
                  Keymaster

                    Olá Pedro,

                    Infelizmente não possuímos. Se for usar o haarcascade para isso creio que teria que procurar em repositórios na internet ou criar um do zero.

                    Porém aqui na plataforma há uma seção dentro de “Conteúdo” (que você pode acessar a partir do menu ao topo) que explica bem como você pode implementar uma técnica muito boa para detectar se a pessoa está utilizando máscara ou não: https://iaexpert.academy/conteudo-assinatura/detector-de-mascaras-com-python/ recomendo dar uma olhada pois talvez sirva para o seu caso.

                    in reply to: script para gerar imagens de combinação #29147
                    Gabriel Alves
                    Keymaster

                      Olá!

                      Essas imagens de combinação que você diz são referentes às amostras criadas a partir da imagem do objeto, usado para o treinamento do haarcascade personalizado? Se sim, você pode gerar elas através do comando opencv_createsamples. Tudo isso é mais explicado no curso “Detecção de Objetos com Python e OpenCV”.

                      in reply to: download do artigo original do algoritmo Viola-Jones #29144
                      Gabriel Alves
                      Keymaster

                        Olá!

                        O artigo original do Haar cascade pode ser baixado aqui: https://www.cs.cmu.edu/~efros/courses/LBMV07/Papers/viola-cvpr-01.pdf

                        in reply to: Duvida sobre Estudo de detecção de Faces com OpenCV #29143
                        Gabriel Alves
                        Keymaster

                          Olá Pedro Ivo, seja bem-vindo à plataforma!
                          Para a detecção de faces com o OpenCV, a técnica mais utilizada é a haarcascade, que é ensinada nesse mesmo curso sobre detecção de faces.

                          Apesar de ser relativamente antiga, essa técnica é ainda preferida por muitos pois ela é muito leve e rápida de processar, e na grande maioria das situações obtém uma precisão boa, então acaba sendo bastante escolhida.
                          Para detecção de faces há outras técnicas mais precisas hoje em dia, porém verá que o custo computacional delas é bem maior. Outra técnica muito boa (e que no geral oferece melhores resultados) é a que utiliza a biblioteca Dlib, aliás tem curso aqui na IA Expert também explicando sobre ela, é o “Reconhecimento de Faces e de Objetos com Python e Dlib”.

                          Tem uma outra técnica que é mais precisa ainda, baseada em Deep Learning, que aliás pode ser implementada pelo próprio OpenCV através do módulo DNN. Saiba mais sobre ela aqui: https://www.pyimagesearch.com/2018/02/26/face-detection-with-opencv-and-deep-learning/

                          A decisão sobre qual escolher vai depender muito do seu hardware e qual é o FPS mínimo que seria tolerável pro seu sistema, então se possui um hardware bem limitado terá que optar provavelmente pela haarcascade mesmo, mas também recomendo testar com o dlib pois dependendo da resolução do vídeo pode ter um custo-benefício melhor.

                          Sobre o material que você perguntou, eu tenho alguns que posso te passar. São três estudos comparativos que falam sobre essas técnicas, onde é analisado tanto a precisão quanto o custo computacional de cada uma, acredito que esses artigos ajudem mais ainda a tomar sua decisão:

                          https://towardsdatascience.com/face-detection-models-which-to-use-and-why-d263e82c302c

                          http://datahacker.rs/017-face-detection-algorithms-comparison/

                          https://rupeshthetech.medium.com/face-detection-models-and-their-performance-comparison-eb8da55f328c

                          in reply to: Erro ao compilar no Eclipse #29100
                          Gabriel Alves
                          Keymaster

                            Olá! Tudo bem?

                            Só uma dúvida antes, foi adicionado o caminho (path) para o openCV, igual foi feito na aula “Instalação e configuração do OpenCV” (no minuto 6:00)?
                            Pois esse erro em específico ocorre exatamente quando a IDE não encontra o OpenCV

                            Mas no Eclipse mesmo é um pouco diferente, portanto sugiro dar uma olhada nesse link que explica como deixar funcionando no Eclipse para macOS
                            https://opencv-java-tutorials.readthedocs.io/en/latest/01-installing-opencv-for-java.html

                            Caso não resolva, então a segunda “solução” depende de qual versão do OpenCV você instalou. Um outro aluno solucionou esse problema desinstalando uma versão mais recente (4.2) e instalando uma um pouco mais antiga, como a 3.2 (essa tem tudo o que é necessário para o curso, aliás até versões bem mais antigas terão todas as funções necessárias)

                            Já teve outro que resolveu simplesmente reinstalando e instalando tudo novamente.
                            Acho que daria para tentar essas duas alternativas também.

                            Fazendo uma dessas 3 coisas é quase certeza que já tenha resolvido, mas caso ainda assim não funcione para você então sugiro que você faça a instalação dessa forma aqui:
                            https://www.tutorialspoint.com/how-to-setup-opencv-java-with-eclipse

                            Outra alternativa (que na verdade muitos preferem) é usando o Maven, através da biblioteca JavaCV (https://github.com/bytedeco/javacv). Ali no README do repositório explica já como fazer, mas é bem simples, basta carregar os JARs. Aí não precisa fazer o link com a dll.

                            Qualquer coisa é só avisar.

                            Gabriel Alves
                            Keymaster

                              Olá Gustavo,

                              Que bom que já conseguiu descobrir o erro, e obrigado por postar sua solução!

                               

                              in reply to: Erro: module ‘cv2’ has no attribute ‘face’ #28497
                              Gabriel Alves
                              Keymaster

                                Olá Igor,

                                que bom que já conseguiu resolver o problema, e obrigado por postar sua solução!

                                in reply to: Detecção de Objetos Personalizados #28258
                                Gabriel Alves
                                Keymaster

                                  Olá Guilherme!

                                  Sim está no caminho certo, o recomendado seria aprender antes como criar o detector de objetos com algumas técnicas mais simples, como o haarcascade do OpenCV e em seguida o Dlib. Mas se você desejar pular direto para o YOLO também pode fazer isso, pois o curso foi feito para quem nunca trabalhou com detecção de objetos antes conseguir entender todos os conceitos (até porque o funcionamento dessas técnicas é bem diferente). O YOLO é sem dúvidas uma das melhores e mais modernas abordagens para detecção de objetos hoje em dia, portanto eu recomendaria usar ele.

                                  O haarcascade também é muito usado hoje ainda porém mais para coisas específicas, principalmente para faces, já que ele é uma alternativa de custo computacional bem menor quando comparado com as outras técnicas. No entanto, as melhores técnicas hoje em dia são as baseadas em Redes Neurais Convolucionais (Deep Learning) como é o caso do YOLO.

                                Viewing 15 posts - 391 through 405 (of 434 total)