You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含1200张64×64图片的文件夹与Excel标签绑定用于神经网络训练

实现图像与标签绑定的步骤

核心前提:Excel中需包含对应图片文件名的列(比如命名为filename),确保能通过文件名建立图片与damage标签的对应关系。

1. 读取并整理标签数据

用pandas读取Excel,构建文件名到标签的映射:

import pandas as pd

# 读取Excel文件,替换为你的文件路径
label_df = pd.read_excel("damage_labels.xlsx")
# 生成{文件名: damage标签}的字典
label_mapping = dict(zip(label_df["filename"], label_df["damage"]))

2. 加载图片并绑定标签

用PIL/OpenCV读取图片,转换成神经网络可用的数组格式,同时匹配对应标签:

import os
import numpy as np
from PIL import Image

image_folder = "你的图片文件夹路径"
image_list = []
label_list = []

# 遍历文件夹内所有图片文件
for filename in os.listdir(image_folder):
    if filename.lower().endswith((".png", ".jpg", ".jpeg")):
        # 读取图片("L"表示转灰度,彩色用"RGB")
        img = Image.open(os.path.join(image_folder, filename)).convert("L")
        # 转成numpy数组,确保尺寸为64×64
        img_array = np.array(img)
        image_list.append(img_array)
        # 从映射字典中获取对应标签
        label_list.append(label_mapping[filename])

# 转成符合训练要求的numpy数组
images = np.array(image_list)  # 形状为(1200, 64, 64)(灰度)或(1200, 64, 64, 3)(彩色)
labels = np.array(label_list)  # 形状为(1200,)

3. 验证绑定正确性

随机抽取样本确认图像与标签匹配:

import matplotlib.pyplot as plt

# 查看前3个样本
for i in range(3):
    plt.imshow(images[i], cmap="gray")
    plt.title(f"Damage Category: {labels[i]}")
    plt.axis("off")
    plt.show()

4. 适配神经网络训练(可选)

如果用PyTorch/TensorFlow,可封装成数据集类方便批量加载:

PyTorch 示例

from torch.utils.data import Dataset, DataLoader

class DamageDataset(Dataset):
    def __init__(self, img_dir, label_df, transform=None):
        self.img_dir = img_dir
        self.label_map = dict(zip(label_df["filename"], label_df["damage"]))
        self.file_list = [f for f in os.listdir(img_dir) if f.lower().endswith((".png", ".jpg"))]
        self.transform = transform

    def __len__(self):
        return len(self.file_list)

    def __getitem__(self, idx):
        filename = self.file_list[idx]
        img = Image.open(os.path.join(self.img_dir, filename)).convert("L")
        label = self.label_map[filename]
        if self.transform:
            img = self.transform(img)
        return img, label

# 创建数据集与加载器
dataset = DamageDataset(image_folder, label_df)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

TensorFlow/Keras 示例

import tensorflow as tf

# 构建包含图片路径和标签的DataFrame
df = pd.read_excel("damage_labels.xlsx")
df["img_path"] = df["filename"].apply(lambda x: os.path.join(image_folder, x))

# 构建数据集
def load_img(img_path, label):
    img = tf.io.read_file(img_path)
    img = tf.image.decode_png(img, channels=1)  # 灰度图用1通道,彩色用3
    img = tf.image.resize(img, (64, 64)) / 255.0  # 归一化
    return img, label

dataset = tf.data.Dataset.from_tensor_slices((df["img_path"].values, df["damage"].values))
dataset = dataset.map(load_img).batch(32).shuffle(1000)

内容的提问来源于stack exchange,提问作者Dude Rar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:55:19