Respostas no Fórum
- AutorPosts
Olá Elias!
Verifique na seção de introdução em Recursos para Download (acesse aqui), lá tem o link onde você pode fazer o download dos arquivos.
Olá, esse “–tessdata-dir tessdata“ é para indicar ao Tesseract que queremos usar os pacotes de linguagem que estão localizados na pasta “tessdata”. Durante o curso usamos esse método pois achamos melhor gerenciar os arquivos através desse diretório, pois além de funcionar melhor oferece mais controle. Mas na verdade é opcional, se você já fez a instalação do Tesseract pelo método tradicional então não é necessário indicar esse parâmetro, ao invés disso você pode instalar os pacotes das linguagens para OCR usando o comando !apt-get install tesseract-ocr-[codigo da linguagem]
no caso para instalar o pacote para português ficaria !apt-get install tesseract-ocr-por
(e pode usar !tesseract –list-langs para listar todos os pacotes instalados)
Olá Daniel!
Para fins didáticos, no projeto 3 é utilizado uma abordagem que não faz o uso de machine learning, é usado um conjunto de técnicas de processamento de imagem para detectar a região do retângulo na placa. Se sua intenção é reconhecer a escrita em placas eu recomendo mesmo usar o YOLO para a detecção.
Sobre usar o EAST para a detecção dos textos na imagem, é possível sim e inclusive é abordado no curso, explicamos bem certinho lá como usar. Só não entendi muito bem o que você disse sobre “usar a base de dados do YOLO”, acredito que se refira a usar a técnica YOLO para detecção (no exemplo desse projeto, detecção de placas). O uso do YOLO para detecção é extremamente recomendável quando você sabe em que tipo de objeto o texto que você quer detectar vai estar. Nesse caso como vai estar dentro de placas podemos usar o YOLO (que é excelente para detecção) para detectar o objeto e assim extrair apenas região de interesse (dentro da caixa delimitadora do objeto detectado), desse modo podemos executar o OCR apenas nessa área onde o objeto se encontra na imagem e assim evitar outros elementos que vão atrapalhar o reconhecimento.
A respeito da performance, se tal abordagem é apropriada ou não vai depender do tipo de sua aplicação. Por exemplo, se ela precisa funcionar em tempo real ou não. Para tempo real você vai ter uma opção menor de técnicas caso tenha um hardware muito limitado, mas ainda assim a maioria delas da para usar. Além disso, outro detalhe fundamental é o hardware que você possui disponível, por exemplo se possui GPU ou não (se possuir, melhor ainda, da para processar essas técnicas mais modernas em tempo real a uma boa taxa de FPS). Por isso o que recomendo é testar essas técnicas e verificar o tempo de inferência (tempo que demora para fazer a detecção), assim você decide qual fica melhor para a sua situação.
Olá Daniel!
O arquivo “por.traineddata” (e outros, caso esteja usando também outros idiomas) se encontram dentro desse diretório “tessdata“?
Aliás, você mencionou que isso ocorre quando usa a função image_to_string, se usar a image_to_data funciona normal sem erros?
Verifique também, se ao remover o “–tessdata-dir tessdata” do “config_tesseract” roda sem erros.
Olá Breno! O código dessa aula está no Colab dessa seção, clique aqui para acessar. Lembrando na primeira aula de cada seção tem o link pro Colab, dentro da aba “Materiais”.
Para facilitar, basta você clicar aqui que vai abrir o Colab na parte exata do código que você precisa.
Olá Rafael! Primeiramente, ficamos felizes que esteja gostando do curso =)
Sobre sua dúvida, há como sim, embora não seja tão usado no caso do YOLO. Esse artigo explica porque é menos intuitivo.
Há inclusive um repositório para facilitar a implementação com o YOLO, dê uma olhada aqui, creio que vai te auxiliar bastante no processo.
22 de julho de 2021 às 02:32 em resposta a: Existe algum dataset/modelo treinado só de animais (zoologico) #29865Olá Antonio!
Recomendo muito dar uma olhada no Open Images Dataset (OID), ele é comentado mais pra frente no curso, na parte onde é abordado como treinar seu próprio modelo. No OID eu sei que tem todos esses animais que você citou de exemplo e muitos outros, talvez já tenha todos os que você precise. Então você pode fazer o download dessas classes (no caso, os animais) específicos usando aquela ferramenta que mostramos em aula, basta especificar o nome das classes e será feito apenas o download das imagens delas e depois fazer o treinamento. Já que você comentou que queria um modelo pronto (talvez por não poder treinar) sugiro dar uma olhada no modelo pra YOLOv3 que foi treinado em cima desse dataset (então vai conter essas classes que você precisa), basta baixar aqui (para mais informações veja o README do darknet). Se ao testar você notar que está faltando algum animal ou se não tiver a precisão necessária então recomendo treinar um novo modelo para o v4 do YOLO, basta fazer o download das imagens conforme explicado e seguir para as etapas de treinamento.
Caso não tenha algum animal importante nesse dataset eu recomendo procurar por outros datasets específicos para animais de zoológico no Kaggle, como por exemplo esse.
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.
- Esta resposta foi modificada 3 anos, 11 meses atrás por
Gabriel Alves.
8 de julho de 2021 às 18:19 em resposta a: Onde consigo pegar meus pesos/weights ao treinar minha rede personalizada? #29639Olá 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).
8 de julho de 2021 às 17:23 em resposta a: Duvida sobre detecção de obejetos e separação por cores #29637Olá 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
- Esta resposta foi modificada 3 anos, 11 meses atrás por
Gabriel Alves.
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
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/
- Esta resposta foi modificada 3 anos, 11 meses atrás por
Gabriel Alves.
25 de junho de 2021 às 10:02 em resposta a: Material detecção de objetos com yolo e opencv faltando #29485Olá Felix!
O Colab está disponível aqui: https://colab.research.google.com/drive/190Xm4YdjQg_WA6mdWxdJSo8n0qPtHFIj?usp=sharing
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
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.
- Esta resposta foi modificada 3 anos, 11 meses atrás por
- AutorPosts