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

如何修改ResNet50单图代码实现文件夹多图批量预测并将结果存入DataFrame

实现方案

需要额外导入两个依赖:os用于遍历文件夹,pandas用于构造结果数据表。将单图预测逻辑封装为独立函数,批量遍历目标文件夹内的图片文件调用函数,最后汇总为DataFrame即可。

完整修改后代码

import numpy as np
import os
import pandas as pd
from keras.preprocessing import image
from keras.applications import resnet50

import warnings
warnings.filterwarnings('ignore')

# 全局只加载一次预训练ResNet50模型,避免重复加载浪费资源
model = resnet50.ResNet50()

def predict_single_image(img_path):
    """单张图片预测函数,返回Top9分类结果列表"""
    img = image.load_img(img_path, target_size=(224, 224))
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    x = resnet50.preprocess_input(x)
    # verbose=0关闭预测进度条,批量运行更清爽
    predictions = model.predict(x, verbose=0)
    predicted_classes = resnet50.decode_predictions(predictions, top=9)[0]
    return [y for _, y, _ in predicted_classes]

if __name__ == "__main__":
    # -------------------------- 请修改为你的目标文件夹路径 --------------------------
    IMAGE_FOLDER = "./your_image_folder"
    # 支持的图片格式,可按需补充
    IMG_EXTENSIONS = ('.jpg', '.jpeg', '.png', '.bmp')
    
    result_list = []
    # 遍历文件夹内所有文件
    for filename in os.listdir(IMAGE_FOLDER):
        # 过滤非图片文件
        if filename.lower().endswith(IMG_EXTENSIONS):
            full_path = os.path.join(IMAGE_FOLDER, filename)
            try:
                top9_res = predict_single_image(full_path)
                result_list.append({
                    "filename": filename,
                    "top9_prediction": top9_res
                })
                print(f"已处理: {filename}")
            except Exception as e:
                print(f"处理文件 {filename} 失败: {str(e)}")
    
    # 结果转为DataFrame
    result_df = pd.DataFrame(result_list)
    # 可选:导出为csv文件持久化存储
    result_df.to_csv("resnet50_batch_prediction_result.csv", index=False, encoding="utf_8_sig")
    print("批量处理完成,结果已保存为 resnet50_batch_prediction_result.csv")
    # 直接打印查看结果
    print(result_df)

功能说明

  • 模型仅在程序启动时加载一次,不用每张图都重复加载,大幅提升批量处理速度
  • 自动过滤非图片格式文件,增加异常捕获逻辑,单张图处理失败不会中断整体任务
  • 结果默认保存为csv文件,方便后续分析使用,DataFrame包含两列:
    • filename:对应图片的文件名
    • top9_prediction:该图片对应的Top9分类结果列表,和单图输出格式完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:09:01