我们编写了一个 load_data 函数来加载图像数据及其对应的标签。该函数读取 JSON 文件中的标签信息,并将图像文件转换为 NumPy 数组。同时,我们将图像尺寸统一调整为 128x128 像素,并进行归一化处理: 根据代码内容仿照上面的文字
时间: 2024-10-27 12:02:33 浏览: 13
load_data:数据加载帮助程序类
我们编写了一个 `load_data` 函数来加载图像数据及其对应的标签。该函数读取 JSON 文件中的标签信息,并将图像文件转换为 NumPy 数组。同时,我们将图像尺寸统一调整为 128x128 像素,并进行归一化处理(即将像素值除以 255.0)。具体步骤如下:
1. **读取标签信息**:从指定的 JSON 文件中读取标签列表,并将其转换为字典形式,键为文件名,值为标签。
2. **加载和预处理图像**:遍历标签字典中的每个条目,打开对应的图像文件,调整其大小为 128x128 像素,并将其转换为 NumPy 数组后进行归一化处理。
3. **检查有效图像**:如果未找到有效的图像文件,则抛出异常。
4. **返回数据**:最后,将处理后的图像数组和标签数组作为 NumPy 数组返回。
以下是 `load_data` 函数的具体实现:
```python
def load_data(data_dir, label_path):
with open(label_path, 'r') as f:
labels_list = json.load(f)
labels = {item['文件名']: item['标签'] for item in labels_list if '文件名' in item and '标签' in item}
images = []
targets = []
for file_name, label in labels.items():
img_path = os.path.join(data_dir, file_name)
if not os.path.exists(img_path):
continue
img = Image.open(img_path).resize((128, 128))
img_array = np.array(img) / 255.0
images.append(img_array)
targets.append(label)
if len(images) == 0:
raise ValueError("No valid images found.")
return np.array(images), np.array(targets)
```
阅读全文