Respostas no Fórum
- AutorPosts
Boa noite,
Estou fazendo o curso e me deparei com este mesmo problema, mas antes de vir ao fórum, submeti o código ao ChatGPT e ele deu a seguinte solução em um novo código desenhando a máscara manualmente. Testei com a foto do gato no jardim e funcionou, porém não fez a segmentação de parte do guarda chuva que tem na imagem.
Por enquanto não vou seguir na melhora do código sugerido pelo chat, se alguém quiser continuar o desenvolvimento, segue abaixo:import numpy as np
import cv2# Processa os resultados da predição
resultados = model_seg.predict(source=img, conf=0.6)
result = resultados[0]# Obtém máscaras e caixas delimitadoras
masks = result.masks.data.cpu().numpy() # Máscaras
boxes = result.boxes.data.cpu().numpy() # Caixas delimitadoras# Aplica máscaras na imagem
for mask in masks:
# Redimensiona a máscara para as dimensões da imagem original
mask_resized = cv2.resize(mask, (img.shape[1], img.shape[0]), interpolation=cv2.INTER_NEAREST)
mask_binary = (mask_resized > 0.5).astype(np.uint8) * 255 # Binariza a máscara
color = (0, 255, 0) # Cor da máscara (verde, no exemplo)# Cria um overlay colorido
mask_overlay = np.zeros_like(img, dtype=np.uint8)
mask_overlay[mask_binary == 255] = color# Combina a máscara com a imagem original (transparência)
alpha = 0.5 # Transparência
img = cv2.addWeighted(img, 1 – alpha, mask_overlay, alpha, 0)# Desenha as caixas delimitadoras na imagem
resultado_img = funcoes_desenho.desenha_caixas(img, boxes)
mostrar(resultado_img)22 de outubro de 2024 às 20:57 em resposta a: Erro na aula: Avaliação do classificador com Dlib #46460Na verdade com confiança 0.3 ele detecta sim.
Eu fiz o teste com confiança 0.3 e deu uma acurácia de 91%.
Veja na tela que anexei no fórum, quando utilizei 9999 ao invés de “Face não detectada”20 de outubro de 2024 às 22:44 em resposta a: Erro na aula: Avaliação do classificador com Dlib #46439Para manter o texto ‘Face não identificada’, e evitar um possível conflito de classe com o número 9999, eu alterei o comando de conversão do array saidas_esperadas para tipo str:
saidas_esperadas = np.array(saidas_esperadas, dtype=str)- Esta resposta foi modificada 8 meses atrás por
Flávio Santiago.
Bom dia,
pegando carona na dúvida do Edinaldo, também gostaria de instalar em uma máquina local. Meu problema é que tenho apenas GPU com 4 GB.
Na hora da geração da imagem, acontecem alguns erros à medida que vou mudando os parâmetros, e não consigo nem executar o primeiro exemplo dado no curso. O erro que acontece é:Traceback (most recent call last):
File “/home/flavio/ia/teste0.py”, line 8, in <module>
pipe = pipe.to(“cuda”)File “/opt/anaconda3/envs/ia/lib/python3.10/site-packages/diffusers/pipelines/pipeline_utils.py”, line 884, in to module.to(device, dtype)
File “/opt/anaconda3/envs/ia/lib/python3.10/site-packages/torch/nn/modules/module.py”, line 1152, in to return self._apply(convert)
File “/opt/anaconda3/envs/ia/lib/python3.10/site-packages/torch/nn/modules/module.py”, line 802, in _apply module._apply(fn)
File “/opt/anaconda3/envs/ia/lib/python3.10/site-packages/torch/nn/modules/module.py”, line 802, in _apply module._apply(fn)
File “/opt/anaconda3/envs/ia/lib/python3.10/site-packages/torch/nn/modules/module.py”, line 802, in _apply module._apply(fn)
[Previous line repeated 2 more times]
File “/opt/anaconda3/envs/ia/lib/python3.10/site-packages/torch/nn/modules/module.py”, line 825, in _apply param_applied = fn(param)
File “/opt/anaconda3/envs/ia/lib/python3.10/site-packages/torch/nn/modules/module.py”, line 1150, in convert return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 30.00 MiB. GPU 0 has a total capacity of 3.81 GiB of which 25.88 MiB is free. Including non-PyTorch memory, this process has 3.75 GiB memory in use. Of the allocated memory 3.67 GiB is allocated by PyTorch, and 34.99 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)
O estranho é que com o Easy Diffusion(easydiffusion.github.io/), se eu configuro o uso da GPU para LOW
GPU Memory UsageFaster performance requires more GPU memory (VRAM)
Balanced: nearly as fast as High, much lower VRAM usage
High: fastest, maximum GPU memory usage
Low: slowest, recommended for GPUs with 3 to 4 GB memoryPorém não quero usar o EasyDiffusion, exatamente pelos motivos apresentado na resposta do Gabriel acima, ou seja, quero deixar “programático”
código que estou inicialmente executando é:
import torch
from diffusers import StableDiffusionPipeline
sd15 = StableDiffusionPipeline.from_pretrained(“runwayml/stable-diffusion-v1-5”, torch_dtype=torch.float16)
sd15 = sd15.to(“cuda”)
sd15.enable_attention_slicing()
sd15.enable_xformers_memory_efficient_attention()
pipe = StableDiffusionPipeline.from_pretrained(“runwayml/stable-diffusion-v1-5”, torch_dtype=torch.float16)
pipe = pipe.to(“cuda”)
seed = 777
prompt = “a photo of a terrier wearing sunglasses, on the beach, ocean in the background”
generator = torch.Generator(“cuda”).manual_seed(seed)
img = pipe(prompt, generator=generator).images[0]
img.save(“teste.png”)Tenho uma GTX 1630 com 4GB
32 Gb RAM
Processador i3 (acredito que 8a Geração)Obrigado,
Flávio.- Esta resposta foi modificada 1 ano, 4 meses atrás por
Flávio Santiago.
- Esta resposta foi modificada 8 meses atrás por
- AutorPosts