Respostas no Fórum
- AutorPosts
Olá Samuel!
Para a versão 1.5.3 você precisa usar o código que está dentro de Personagens NOVO.zip, e não do Personagens antigo.zip conforme você indicou.
O .zip “antigo” é para rodar nas versões mais antigas do JavaCV (pois esse 1.5.3 foi lançado depois da publicação do curso e exigiu mudanças no código, portanto foi disponibilizado as alterações que precisam para rodar nessas versões mais novas).Dentro do arquivo .zip que contém todo o material da aula vai ter esse arquivo com o nome Personagens NOVO.zip
Basta descompactar esse arquivo e dentro dele você vai ver que além do documento (em word) que explica cada uma das alterações vai ter também os JARs da versão 1.5.3 e o projeto Netbeans contendo o código já pronto (dentro da pasta “ReconhecimentoPersonagens”).
Já se você procura pelo arquivo específico do código .java atualizado então você vai encontrar dentro do próprio diretório do projeto, mais especificamente em:
ReconhecimentoPersonagens/src/opencv/Caso ainda assim dê algum erro para você, peço que verifique se foi adicionado todos os JARs (conforme mostra na imagem dentro do arquivo word) e se ainda assim mostrar erro então poste aqui a mensagem de erro exata que aparece para você, que nós iremos te auxiliar.
Olá Tiago!
Para ter uma noção melhor, sugiro olhar a página “Trilha de Visão Computacional”, dentro da página de Trilhas de Aprendizagem (link aqui).
São dezenas de cursos e as técnicas e abordagens podem variar muito em cada um, porém nessa trilha é reunido todos eles e é mostrado o “caminho” indicado a ser seguido. Você pode seguir esse caminho ou se preferir pode ver a descrição do curso e escolher aquele que aborda a necessidade que você precisa para resolver o seu problema (exemplo: detecção de objetos).
Mas quanto à “melhor” técnica/biblioteca é complicado responder, pois o melhor pode ser muito subjetivo e depende do objetivo a ser atingido, por isso que é comum nos cursos mostrar pelo menos 2 abordagens diferentes. Para casos onde você realmente “precisa” escolher a melhor possível seria recomendado procurar um estudo comparativo ou você mesmo testar as técnicas em seu projeto e ver qual se ajusta melhor à resolução de seu problema. E como são inúmeros estudos de caso diferentes ao longo de todos os cursos ficaria inviável comparar todas com todas (e embora tenha momentos dentro do curso onde é feito comparações entre técnicas, o foco acaba sendo muito maior na implementação da abordagem). Mas se você precisar de um direcionamento eu recomendaria dar uma olhada nessa página, ou ainda pode enviar sua dúvida mais específica por aqui, que iremos auxiliar.
Olá Anderson!
Tente acessar agora, talvez no momento que você tentou acessar o servidor do site deles estava indisponível, porque agora eu tentei acessar e carregou normalmente aqui.
Caso ainda não consiga acessar o paper através desse link então acesse nesse aqui, que irá carregar o mesmo documento.
Olá Clarimar!
O link se encontra na aba “Materiais”, que está visível na primeira aula dessa implementação (nome da aula: “Treinamento personalizado – balões 1”).
Olá Henrique!
Caso não tenha visto o aviso que foi colocado, deixarei abaixo aqui nessa resposta. Basicamente, para evitar o problema você precisa fazer a instalação de uma versão anterior da biblioteca Pillow.
Execute o seguinte comando antes de todo o seu código:
!pip install Pillow==9.1.0
Após executar, clique no botão [Restart Runtime] que vai aparecer no output dessa célula, logo abaixo. Em seguida, pode continuar executando normalmente o restante do código.
Qualquer dúvida, confira o Colab da aula aqui.
- Esta resposta foi modificada 2 anos, 5 meses atrás por
Gabriel Alves.
9 de novembro de 2022 às 11:41 em resposta a: Extrair textos de partes/posições definidas do documento #37994Disponha! =)
7 de novembro de 2022 às 11:06 em resposta a: Extrair textos de partes/posições definidas do documento #37980Opa, 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, 6 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”.
- Esta resposta foi modificada 2 anos, 5 meses atrás por
- AutorPosts