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

基于YouTube教程搭建AI图像分类器时遇NotADirectoryError问题求助

问题解决:AI图像分类器代码报错与警告处理

一、修复NotADirectoryError错误

错误原因

你的train_dir直接指向了存放图片的Blue-Squares文件夹,val_dir指向Red-Triangles文件夹。当执行for category in os.listdir(dir_)时,category获取到的是文件夹里的图片文件名,而非子目录名。后续代码试图把图片文件当作目录去遍历,因此抛出“目录名称无效”的错误。

解决方案

调整代码逻辑,直接遍历训练/验证目录下的图片文件,无需嵌套子目录遍历:

from img2vec_pytorch import Img2Vec
import os
from PIL import Image

# prepare data

# 解决torchvision警告:指定weights参数
img2vec = Img2Vec(model='resnet18', weights='DEFAULT')

data_dir = 'C:/XX/XX/XX/XX/newai'
train_dir = os.path.join(data_dir, 'Data', 'Blue-Squares')
val_dir = os.path.join(data_dir, 'Data', 'Red-Triangles')

data = {}

for j, dir_ in enumerate([train_dir, val_dir]):
    features = []
    labels = []
    # 直接遍历当前目录下的所有文件
    for img_name in os.listdir(dir_):
        img_path_ = os.path.join(dir_, img_name)
        # 过滤非图片文件(避免处理无关文件)
        if not img_name.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
            continue
        try:
            img = Image.open(img_path_)
            img_features = img2vec.get_vec(img)
            features.append(img_features)
            # 用当前文件夹名作为标签(比如Blue-Squares/Red-Triangles)
            labels.append(os.path.basename(dir_))
        except Exception as e:
            print(f"处理图片{img_path_}失败: {e}")
            continue

    data[['training_data', 'validation_data'][j]] = features
    data[['training_labels', 'validation_labels'][j]] = labels


print(data.keys())

# train model

# test performance

# save the model

关键修改点:

  • 移除嵌套的子目录遍历循环,直接读取目标目录下的图片
  • 用文件夹名作为对应数据集的统一标签
  • 添加图片格式过滤和异常捕获,提升代码鲁棒性

二、消除torchvision弃用警告

警告原因

img2vec_pytorch内部调用的torchvision模型仍在使用已弃用的pretrained参数,torchvision 0.13+版本推荐使用weights参数替代。

解决方案

初始化Img2Vec时显式指定weights参数:

img2vec = Img2Vec(model='resnet18', weights='DEFAULT')

'DEFAULT'会自动加载对应模型的最新权重,也可以指定具体权重枚举(如ResNet18_Weights.IMAGENET1K_V1),但'DEFAULT'更简洁通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:37:48