https://github.com/oanderoficial/dogia
Aplicação simples de classificação de imagens usando uma rede neural pré-treinada, utiliza o PyTorch para carregar um modelo de rede neural pré-treinado (ResNet50), baixar um arquivo com os rótulos das classes do ImageNet. O objetivo é identificar qualquer raça de cachorro através de uma imagem.
https://github.com/oanderoficial/dogia
json resnet-50 torch torchvision
Last synced: 4 months ago
JSON representation
Aplicação simples de classificação de imagens usando uma rede neural pré-treinada, utiliza o PyTorch para carregar um modelo de rede neural pré-treinado (ResNet50), baixar um arquivo com os rótulos das classes do ImageNet. O objetivo é identificar qualquer raça de cachorro através de uma imagem.
- Host: GitHub
- URL: https://github.com/oanderoficial/dogia
- Owner: oanderoficial
- Created: 2023-04-11T19:17:47.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-03T21:15:35.000Z (over 1 year ago)
- Last Synced: 2025-03-26T15:17:59.295Z (7 months ago)
- Topics: json, resnet-50, torch, torchvision
- Language: Python
- Homepage:
- Size: 33.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DogIA
Criando uma aplicação simples de classificação de imagens usando uma rede neural pré-treinada, utiliza o PyTorch para carregar um modelo de rede neural pré-treinado (ResNet50), baixar um arquivo com os rótulos das classes do ImageNet. O objetivo é identificar qualquer raça de cachorro através de uma imagem.
instalações:
```
python -m pip install --upgrade pip
```
```
python -m pip install --upgrade setuptools
```
```
pip install torch
```
```
pip install torchvision
```
```
pip install requests
```
Bibliotecas
```python
import json # manipular arquivos JSON
import torch # lidar com operações em tensores
import torchvision.models as models # carregar modelos pré-treinados e transformar imagens
import torchvision.transforms as transforms # contém várias transformações que podem ser aplicadas em imagens usando o PyTorch
import requests # baixar arquivos JSON da web
```
Carregar o modelo ResNet50 pré-treinado
```python
modelo = models.resnet50(pretrained=True)
```
Carregar o arquivo com os rótulos das classes
```python
url = "https://s3.amazonaws.com/deep-learning-models/image-models/imagenet_class_index.json"
response = requests.get(url)
rotulos = json.loads(response.text)
```
Carregar a imagem e transformá-la
```python
caminho = input("Digite o nome da imagem:")
imagem = Image.open(caminho)
transform = transforms.Compose([
transforms.Resize(256), # redimensiona a imagem para que o menor lado tenha tamanho 256 pixels.
transforms.CenterCrop(224), # corta a imagem centralmente para que tenha tamanho 224x224 pixels.
transforms.ToTensor(), # : converte a imagem em um tensor do PyTorch.
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]) # normaliza os valores dos pixels da imagem usando a média e o desvio padrão da ImageNet, que são valores predefinidos.
])
img_tensor = transform(imagem)
img_tensor = img_tensor.unsqueeze(0) #usado para adicionar uma dimensão extra ao tensor
```
Classificar a imagem
```python
modelo.eval()
with torch.no_grad():
outputs = modelo(img_tensor)
_, predicted = torch.max(outputs, 1)
```
Obter a classe prevista e o rótulo correspondente
```python
classe = predicted.item()
rotulo = rotulos[str(classe)][1]
```
Imprimir a classe prevista e o rótulo correspondente
```python
print(f"Classe prevista: {classe}")
print(f"Rótulo: {rotulo}"
```