Created
March 12, 2025 18:39
-
-
Save samuellangajr/790d8e8accaee08d22fc6cde253d23e9 to your computer and use it in GitHub Desktop.
Escreva um pseudocódigo ou código Python para carregar um conjunto de dados de imagens, pré-processá-las (redimensionar e normalizar) e dividi-las em conjuntos de treino e teste.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import numpy as np | |
from tensorflow.keras.preprocessing.image import load_img, img_to_array | |
from sklearn.model_selection import train_test_split | |
from tensorflow.keras.utils import to_categorical | |
import matplotlib.pyplot as plt | |
# Definir o caminho do diretório onde as imagens estão armazenadas | |
image_dir = 'caminho/para/imagens' | |
# Definir tamanho de redimensionamento | |
image_size = (128, 128) | |
# Carregar imagens | |
images = [] | |
labels = [] | |
# Iterar sobre os arquivos no diretório de imagens | |
for class_name in os.listdir(image_dir): | |
class_path = os.path.join(image_dir, class_name) | |
# Verificar se é um diretório de classe | |
if os.path.isdir(class_path): | |
for image_name in os.listdir(class_path): | |
image_path = os.path.join(class_path, image_name) | |
# Carregar a imagem | |
img = load_img(image_path, target_size=image_size) | |
img_array = img_to_array(img) # Converter para array numpy | |
# Normalizar a imagem | |
img_array = img_array / 255.0 # Normalização para intervalo [0, 1] | |
images.append(img_array) | |
labels.append(class_name) | |
# Converter listas para arrays numpy | |
images = np.array(images) | |
labels = np.array(labels) | |
# Converter rótulos para valores inteiros | |
from sklearn.preprocessing import LabelEncoder | |
label_encoder = LabelEncoder() | |
labels = label_encoder.fit_transform(labels) | |
# One-hot encoding para as labels | |
labels = to_categorical(labels) | |
# Dividir o conjunto de dados em treino e teste | |
X_train, X_test, y_train, y_test = train_test_split(images, labels, test_size=0.2, random_state=42) | |
# Visualizar algumas imagens | |
plt.figure(figsize=(10, 10)) | |
for i in range(9): | |
plt.subplot(3, 3, i+1) | |
plt.imshow(X_train[i]) | |
plt.title(f"Classe: {label_encoder.inverse_transform([np.argmax(y_train[i])])[0]}") | |
plt.axis('off') | |
plt.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment