Respostas no Fórum
- AutorPosts
- 7 de novembro de 2022 às 11:06 em resposta a: Extrair textos de partes/posições definidas do documento #37980
Opa, para esse caso se há muitas possibilidades de layout diferentes eu acho que vai ser mais difícil encontrar alguma solução “pré-pronta” que abranja todas essas variações, mas se tiver sorte talvez encontre algo procurando em repositórios abertos como no github. O jeito seria construir o seu script próprio, preparado para extrair as informações dos documentos com layouts da forma que você precisa.
Encontrei essa abordagem também, talvez possa ser útil.
Uma alternativa à utilização de técnicas de pré-processamento seria usar algum detector de objetos (como o YOLO). Se treinar bem você consegue obter muita precisão, porém se o layout onde se encontra essa informação varia muito então recomendo tentar uma sugestão que deixo abaixo.
(aqui há um outro exemplo de como poderia treinar um modelo em deep learning para localizar/classificar partes de um documento.)
Ainda sobre o uso de técnicas de processamento, ao final da seção “Projeto 1” pode te dar uma intuição maior. Pegue por exemplo aquela imagem que usamos do rótulo com informações nutricionais do produto. Ali foi feita a busca a partir de um termo, onde retornou a posição dele na imagem. Digamos que você não sabe qual será o texto, nesse caso, você precisa saber qual é o padrão de onde ele vai aparecer, ou até mesmo a localização exata dele com base nos outros elementos da imagem. Para isso você pode utilizar as técnicas de processamento de imagem que mostramos nos 3 projetos finais. Por exemplo, se você sabe que a marca sempre aparece na primeira linha da tabela então primeiro você detecta os contornos na imagem (ou melhor, os retângulos) e extrai a área apenas daquele que se encontra mais ao topo (o que significa que constitui a primeira linha da tabela).
Caso a posição realmente não seja tão óbvia você pode treinar um detector de objetos próprio para detectar a região onde se encontra essas informações (caso não consiga bons resultados com as técnicas de pré-processamento), conforme comentei mais acima.
Ou seja, se você sabe exatamente qual texto está presente neste documento e você deseja saber se ele está ali (ou se tem alguma palavra que sempre acompanha essa informação marca, por exemplo, “Marca:” [x]) então poderia usar como base a técnica do Projeto 1, pois você consegue localizar a partir do filtro.
Mas se esse local puder variar muito ao longo do documento (porém mantém uma mesma estrutura visual, ou muito parecida) então talvez o melhor seja treinar um detector de objetos próprio (como o YOLO por exemplo) para localizar essas regiões.
4 de novembro de 2022 às 12:14 em resposta a: Extrair textos de partes/posições definidas do documento #37916Olá!
Caso queira fazer a leitura de CNH ou RG, o curso dará uma boa intuição inicial para isso. Em um dos projetos é mostrado como fazer o scan de documentos, o que funciona para o caso desse tipo de documento também. Como adicional, você precisará incorporar outras técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento. Dê uma olhada nesse artigo que mostra exatamente como você poderia fazer isso (e tem o código inclusive) -> https://medium.com/stackchain/drivers-license-ocr-cnh-with-python-opencv-and-tesseract-21b0388ae101
Olá Filipe,
Para instalar e compilar no Windows você precisa usar o CMake, conforme é explicado aqui (ou também pode usar esse método). Se ocorrer algum problema nos avise e passe a mensagem de erro que aparecer para você.
Olá Soni,
Verifique se na primeira linha do network.add() está assim:
network.add(layers.Dense(units = 7*7*256, use_bias = False, input_shape=(100,)))
pela mensagem de erro, provavelmente há um erro de digitação.
E se puder confira se o restante está exatamente igual ao código completo da função (clique aqui).
Olá Haviner,
Nesse caso, primeiramente sugiro testar com outros parâmetros (por exemplo ali na função do Canny Edge, você pode mexer nos parâmetros para que retorne menos linhas no geral para a imagem, assim as linhas se concentram mais ao redor da placa apenas e evita identificar outras partes que contenham 4 cantos).
Se permanecer o problema, sugiro testar essa outra heurística aqui, pois pela imagem que você indicou parece que essa pode oferecer melhores resultados.
Mas conforme comentado no curso, o uso dessa abordagem que consiste apenas no uso de técnica de pré-processamento não vai garantir que seja sempre detectada a placa, pois apesar de funcionar bem para cenários mais “controlados” pode não detectar em imagens em situações mais “reais”, já que são muito menos precisas comparadas à abordagens baseadas em redes neurais por exemplo. Como o curso foca em OCR foi escolhido essa abordagem, mas se deseja criar um programa real então sugiro implementar um detector de objetos baseado em alguma técnica de deep learning, pois irá garantir detecções muito mais precisas nessas situações mais reais. Uma recomendação é usar o YOLO, que é uma das técnicas de detecção mais precisas hoje, você pode fazer assim ou, para facilitar sua implementação, usar esse repositório.
Olá Soni,
Qual erro que aparece para você? Se puder passar a mensagem de erro, para podermos auxiliar melhor.
Confira se foram realizados todos os imports necessários e se o código da função está o mesmo conforme mostrado aqui.
- Esta resposta foi modificada 2 anos, 8 meses atrás por
Gabriel Alves.
Olá Gustavo!
Nós fizemos uma análise geral no sistema e não conseguimos localizar nenhum problema que pudesse estar causando esse comportamento para você, e ainda mais por ser um comportamento que somente ocorre nessas aulas em específico (que não tem nada diferente nas configurações).
Mas eu acho que sei o que pode estar confundindo, pois na hora que fomos nos certificar que estava tudo ok eu pensei nisso também. O botão “Marcar como concluído” fica desabilitado até o momento que você chega ao final da aula, e assim que você chega ao final ele é instantaneamente habilitado. Então, você precisa chegar até o final dela para poder marcar a aula como concluída. Se você por um acaso chegou ao final dela porém saiu da página (ou fechou o navegador por exemplo) e não clicou no botão então quando voltar àquela aula pode ser que precise chegar ao final do vídeo novamente, pois pode ser que o navegador não tenha salvo que você chegou ao final do vídeo logo antes de você fechar a página e portanto o sistema ainda identifica como se faltasse você completar a aula. E se você já assistiu toda a aula e não assistirá novamente basta clicar na barrinha de progresso do vídeo para que pule até o ultimo segundo.
Resumindo: basta chegar até o final da aula e (nessa mesma sessão em que a página estiver aberta) clicar no botão, que ficará habilitado (verde) assim que chegar ao final da aula.
Para te facilitar nós já marcamos aqui para você essas aulas como visto, já que você comenta que passou por elas então podemos deixá-las como concluídas.
Portanto, quando quiser já pode lá baixar seu certiticado 😉
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.
4 de outubro de 2022 às 11:52 em resposta a: Erro FFMPEG: tag 0x44495658/’XVID’ is not supported with codec id 12 and #37208Opa!
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”.
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).
27 de setembro de 2022 às 09:48 em resposta a: Erro FFMPEG: tag 0x44495658/’XVID’ is not supported with codec id 12 and #36890Opa!
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.
23 de setembro de 2022 às 18:30 em resposta a: Como contar quantos objetos existem na imagem ? #36860Olá 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”.
23 de setembro de 2022 às 18:24 em resposta a: Erro FFMPEG: tag 0x44495658/’XVID’ is not supported with codec id 12 and #36858Olá 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).
- Esta resposta foi modificada 2 anos, 9 meses atrás por
Gabriel Alves.
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.
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ê.
- Esta resposta foi modificada 2 anos, 8 meses atrás por
- AutorPosts