Respostas no Fórum
- AutorPosts
Olá Francisco!
Esse conceito de ‘background’ existe no contexto da matriz de confusão e é usado para indicar previsões falso-positivas do seu modelo quando ele vê objetos inexistentes em segundo plano. Ou seja, o background (fundo) seria aquilo que não é o objeto, desse modo é possível calcular e visualizar melhor os falsos positivos, que são os objetos incorretamente detectados.
Os demais conceitos são os mesmos encontrados em qualquer tipo de matriz de confusão. Não sei o quão familiarizado está com esse método de avaliação, mas só para lembrar rapidamente que a matriz de confusão é uma tabela que compara as previsões do modelo com os valores reais, organizada de forma que as linhas representam as classes reais e as colunas representam as classes preditas. Cada célula da matriz contém o número de amostras que correspondem a uma combinação específica de classe real e classe predita. Os valores dentro da matriz são divididos em quatro categorias principais: Verdadeiro Positivo (TP), Verdadeiro Negativo (TN), Falso Positivo (FP) e Falso Negativo (FN). TP indica o número de instâncias em que o modelo corretamente previu a classe positiva; TN é o número de instâncias corretamente identificadas como negativas; FP refere-se às instâncias incorretamente classificadas como positivas; e FN são as instâncias que foram incorretamente classificadas como negativas. O eixo X (horizontal) da matriz de confusão corresponde às classes classes reais, enquanto o eixo Y (vertical) corresponde às preditas.
Nesse diagrama aqui é mostrado o processo de criação da matriz de confusão. Se desejar uma explicação bem mais detalhada do processo, recomendo esse artigo.
Olá, que ótimo!
Quanto ao exemplo fornecido, o que pode estar dificultando o reconhecimento é a perspectiva de placa na foto, veja que pelo fato de não estar alinhada o texto fica na diagonal e isso pode dificultar o OCR. Para corrigir isso, você pode usar alguns conjuntos de técnicas de processamento para fazer a correção da perspectiva, veja esse código aqui de exemplo.
Olá Jailson!
Sobre SSD temos sim, no curso Detecção / Reconhecimento Facial com Python. E agradecemos sua sugestão
O YuNet é ótimo realmente, ele por coincidência foi publicado logo junto com o lançamento desse curso então não teria como colocar em sua grade. Mas se busca por técnicas de detecção mais modernas, recomendamos abordagens como o YOLOv8 por exemplo que é abordado no curso dessa técnica (aqui), é ainda mais recente e poderoso.
Olá Rodrigo!
Você já tentou alterar os parâmetros, como o –psm?
Outra coisa, apesar de ter detectado você consegue verificar se foi detectada exatamente a região correta da placa? Para isso, retire do comentário a linha de código show_img(processed_plate)
Pois nesse código está programado para mostrar que houve a detecção, mas em alguns casos não foi a região certa da placa.
Sugiro testar também o EasyOCR, caso não tenha testado ainda, pois ele tem uma tendência a funcionar melhor para imagens em situações inseridas no mundo real (em “cenários naturais”) exigindo menos esforço para se conseguir melhores resultados. Também pode conseguir resultados ótimos com o Tesseract, porém exige um pouco de atenção a mais para as técnicas de pré-processamento de imagem. Por isso, recomendamos explorar todas as citadas na seção “Técnicas para pré-processamento de imagens”.
Já se você verificou ali que o problema foi em detectar corretamente a região da placa, então você pode customizar os parâmetros do código de detecção, ou (mais indicado) usar alguma técnica mais moderna baseada em deep learning, como o YOLO, assim garantirá uma detecção mais precisa da placa para as imagens que vier a testar. Você pode encontrar um código completo com a versão mais recente do YOLO nesse repositório.
Então se houver dificuldade na detecção da placa eu sugiro usar logo algumas dessas técnicas baseadas em deep learning para garantir maior precisão, exigindo menos tempo para adaptar o algoritmo. Como o foco do curso acaba sendo o OCR então isso não foi abordado, porém visto que essas técnicas modernas de detecção hoje em dia permitem uma implementação mais fácil então eu sugiro usá-las.
Olá!
Referente ao IP Adapter, ele funciona em modelos XL porém tem que usar o modelo IP Adapter próprio para esse tipo de versão, o link pra download está listado no .ipynb mas está com comentário; seria esse link aqui https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl.bin (para face). E no mesmo repositório tem também os demais modelos. Já o modelo IP Adapter “geral” (não focado em faces) está no outro repositório do mesmo autor, aqui https://huggingface.co/h94/IP-Adapter/tree/main/sdxl_models
E quanto aos resultados com ControlNet em modelos XL, assim como em versões 1.5 pode ser necessário mexer um poucos nos parâmetros até encontrar um equilíbrio interessante. Você chegou a testar em quais deles? Aliás, pediria que se possível mandar um print da seção de sua interface onde aparece o ControlNet, logo após você testar a imagem e ver que não deu certo (ou seja, mande print dessa parte, com as exatas configurações que testou e que não retornaram um resultado correto, assim como o prompt e parâmetros usados) – desse modo podemos tentar analisar melhor.
Outro detalhe que observei após rever sua resposta anterior: você mencionou que está usando o Dream Shaper XL com o scheduler DPM++2M SDE Karras, isso? Sugerimos deixar o DPM++ SDE Karras, sem o 2M, pois ele tende a funcionar bem melhor para esse modelo já que foi treinado desse modo.
28 de maio de 2024 às 00:17 em resposta a: Erro ao executar o treinamento usando o exemplo dos balões (6) #45286Olá Fernando!
Isso pode ocorrer em algumas versões mais recentes, portanto para uma maior compatibilidade eu sugiro você se basear no Colab da aula: https://colab.research.google.com/drive/1CEu9aKbtM0jDZMUN2282fMwV4c-fEn5O?usp=sharing
ali tem algumas pequenas mudanças, para tornar compatível com as versões mais recentes das bibliotecas, então recomendamos fazer uma cópia desse notebook e fazer as suas alterações a partir dele. Com isso é para dar certo, mas caso ocorra algum outro erro e que te impeça de realizar o treinamento então nos passe aqui mais informações sobre ele para tentarmos ajudar.
28 de maio de 2024 às 00:10 em resposta a: Não cria as pasta Cursos – recursos e a pasta Imagens no Mydrive #45285Olá!
Na verdade essas pastas não são criadas com o comando fornecido no print. Essas pastas você cria manualmente, e depois na hora de ler você especifica no comando qual é o diretório exato dentro do seu Drive. Ou seja, você pode ou renomear as pastas e deixar exatamente igual foi feito em aula; ou pode mudar o comando, para colocar o caminho/diretório correspondente a como está em seu Drive. Caso esteja na dúvida, sugerimos deixar o mesmo nome e na mesma localização, assim pode-se usar o mesmo comando.
Olá, tudo bem?
Você pode encontrar o link para baixar todos os recursos do curso acessando a aula “Recursos para download” dentro da seção Introdução, lá contém o link pro Google Drive onde estará disponível para download todos os arquivos usados durante o curso (link aqui).
Já o código fonte do Google Colab pode ser acessado clicando na aba Materiais na primeira aula de cada seção.
Boa tarde! Para controlar a pose usando esse modelo terá que usar o modelo ControlNet OpenPose adaptado para modelos XL, esse aqui.
A linha de código para baixar esse modelo se encontra já no .ipynb, basta tirar o comentário dela e executar. O link é esse abaixo:
https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/thibaud_xl_openpose_256lora.safetensors
Ou seja, ao invés do outro (usado junto com os modelos SD 1.5 para realismo) agora carregará no lugar esse outro modelo controlnet, já que está a usar um modelo SDXL.
Quanto à roupa, verifique o nível de descrição que você forneceu no prompt, veja se é possível ser mais específico ainda e tente enfatizar um pouco (adicionando um pouco de peso à palavra-chave usada). Se mesmo sendo bastante específica no prompt ainda não conseguir manter a mesma roupa, então pode usar a técnica IP Adapter (vista na seção “Edição de imagens”) e assim manter constante a roupa entre as diferentes gerações. E para arrumar as mãos também pode usar a técnica de Inpainting, presente nessa mesma seção (caso já tenha tentado e mesmo assim sem sucesso, me avise pois podemos sugerir ainda alguma alternativa).
- Esta resposta foi modificada 1 ano, 1 mês atrás por
Gabriel Alves.
Olá! Você tentou dar Ctrl+C e Ctrl+V e mesmo assim o arquivo não foi colado?
Aparece alguma mensagem para você ou o arquivo simplesmente não é copiado? O que você pode fazer é tentar arrastar e soltar o arquivo também.Caso não tenha dado para fazer pelo Pycharm, você pode fazer por fora dele, basta abrir pelo navegador de pastas do Windows (File Explorer) o diretório que você criou pelo projeto. O caminho para essa pasta do projeto pode ser visualizado lá bem em cima na barra da janela PyCharm, ou no painel lateral, ali ao lado onde aparece o nome do projeto (no exemplo do curso, repare que ali o diretório mostrado é C:\Reconhecimento facial)
Enfim, basta copiar e colar lá no diretório que aparece para você, ou simplesmente clicar e arrastar.
Caso mesmo assim não consiga, por gentileza mande print de sua tela.- Esta resposta foi modificada 1 ano, 1 mês atrás por
Gabriel Alves.
Olá Aline!
O SageMaker Studio Lab é gratuito e não tem uma versão paga atualmente, mas se deseja mais tempo de uso diário então você pode utilizar o Amazon AWS (ou qualquer outra solução de sua preferência) caso deseje configurar em outro servidor cloud -> https://aws.amazon.com/pt/
Aqui tem uma explicação de como configurar. Pode usar o mesmo arquivo .ipynb que disponibilizamos no curso, assim fica mais fácil pois são os mesmos passos.
Se você irá fazer um uso mais constante da ferramenta, sugiro dar uma olhada no ThinkDiffusion (https://www.thinkdiffusion.com) que é um serviço que costuma possuir um custo benefício bem interessante caso opte por soluções pagas. Com ele dá para implementar a mesma interface mostrada no curso (Automatic1111), podendo adicionar os mesmos módulos e extensões.
Olá Aline!
Qual modelo ControlNet você selecionou para a geração? Verifique dentro da caixa referente ao ControlNet qual é o modelo que aparece ali selecionado no campo de seleção e se foram selecionadas as configurações compatíveis com ele (se possível mandar um print). E verifique o que aparece no campo do modelo ao selecionar a opção OpenPose.
Essa mensagem de erro as vezes está associada a um problema na leitura do arquivo do modelo, é um bug que pode ocorrer quando ele não consegue processar corretamente o formato lido. Como imagino que esteja usando os mesmos modelos da aula então uma explicação para essa mensagem poderia ser um problema durante o download do próprio modelo. Por verificar e resolver, tente executar o comando de download novamente, e então inicie a interface.
A recomendação que resolve é reiniciar o ambiente de execução (pode desconectar da GPU e conectar novamente) e então executar de novo o passo 3 para baixar os mesmos modelos (que ficarão na pasta /tmp) e em seguida abrir a interface normalmente.
Caso o mesmo erro persista, por favor forneça um print da tela do ControlNet e do que aparece para você na saída da célula do arquivo .ipynb (usado para gerar a interface), no bloco onde são baixados os modelos ControlNet.
Olá!
1. O threshold do IoU utilizado pelo modelo de avaliação padrão do Mask R-CNN pode variar dependendo da implementação específica ou da configuração definada. No caso dessa biblioteca e outras implementações é usado por padrão 0.5, como comumente usado também em conjuntos de dados como MS COCO e PASCAL VOC. Para outros casos, recomenda-se consultar a documentação oficial da biblioteca Matterport ou os parâmetros de configuração do modelo para determinar o valor padrão ou como configurá-lo de acordo com suas necessidades específicas.
2. Sim, outras métricas de avaliação como IoU e Dice Coefficient podem ser utilizadas para avaliar modelos treinados com o Mask R-CNN. Para isso, você pode implementar essas métricas manualmente ou utilizar bibliotecas como scikit-learn ou TensorFlow para calcular essas métricas com base nas máscaras previstas e nas máscaras de referência (ground truth).
Para o IoU pode usar o método jaccard_score, que se refere ao Índice Jaccard, nesse caso o mesmo que IoU
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.jaccard_score.html
e para o Dice Coefficient, use o método de implementação do F1 score, que é o mesmo que o algoritmo do Dice.
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html
Para o IoU você pode usar também o Tensorflow por exemplo, através do método MeanIoU https://www.tensorflow.org/api_docs/python/tf/keras/metrics/MeanIoU
Exemplo de código:
from tensorflow.keras.metrics import MeanIoU
iou_resultado = MeanIoU(num_classes = 2)test_img_input = np.expand_dims(img_teste, 0)
test_img_input.shapepredicao = (model.predict(test_img_input)[0,:,:,0] > 0.5).astype(np.uint8)
plt.imshow(predicao)
plt.title(‘Predição’)
iou_resultado.update_state(ground_truth[:,:,0], predicao)
print(‘IoU para a imagem: ‘, iou_resultado.result().numpy())Opa que bom, desse modo é a maneira mais eficaz mesmo para evitar esse problema.
15 de maio de 2024 às 22:32 em resposta a: converter_annotations.py não está inserindo o ID da classe. #44901Ótimo saber que você conseguiu resolver 🙂
- Esta resposta foi modificada 1 ano, 1 mês atrás por
- AutorPosts