ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

AIPND结果评估指南:如何计算图像分类准确率与统计指标

2026/8/19 21:01:21 拓冰建站 浏览量
AIPND结果评估指南:如何计算图像分类准确率与统计指标 AIPND结果评估指南如何计算图像分类准确率与统计指标【免费下载链接】AIPNDCode and associated files for the AI Programming with Python Nanodegree Program项目地址: https://gitcode.com/gh_mirrors/ai/AIPND在 AIPNDAI Programming with Python课程项目中图像分类实验是入门深度学习的经典实战用三种预训练 CNN 模型对 40 张宠物图片进行分类再通过计算图像分类准确率与统计指标客观选出识别效果最好的模型架构。本指南面向新手将带你一步步理解匹配率、犬类识别准确率、犬种识别准确率等核心统计指标的含义与计算方法并学会用脚本一键对比三种模型的表现。什么是 AIPND 图像分类实验准确率从何而来AIPND 的intropylab-classifying-images目录中存放着一个完整的图像分类实验。实验目标很直观让计算机正确识别图片里是什么动物。为此项目提供了三套基于 ImageNet 预训练的 CNN 模型架构——vgg、alexnet、resnet它们由 classifier.py 中的classifier()函数统一调用你无需自己训练任何模型就能体验完整的分类 → 评估流程。实验的入口是 check_images.py它负责读取pet_images/文件夹中的 40 张宠物图片、调用模型预测、比对真实标签最后输出一份包含图像分类准确率的统计报告。下面这张金毛寻回犬图片就是典型的测试样本图像分类准确率计算前三步构建结果字典所有统计指标都源自同一个数据结构——结果字典results_dic它通过以下三步构建提取真实标签get_pet_labels()从文件名中解析出正确答案例如Beagle_01125.jpg的真实标签是beagle。获取模型预测classify_images()调用classifier()对每张图片分类得到模型输出例如beagle。逐图比对真实标签与模型标签一致则记为匹配1否则不匹配0。最终每张图片在结果字典中对应一个列表前 3 个位置的约定如下索引含义取值idx 0真实标签宠物标签字符串如 beagleidx 1模型预测标签字符串如 beagleidx 2是否匹配1匹配0不匹配这个结构的完整实现可以参考 check_images_solution.py 中的classify_images()第 178-252 行。比格犬是实验中极具代表性的犬种样本犬类判定图像分类准确率的加分指标仅仅判断标签是否一致还不够实验还关心一个更贴近实际的问题模型能不能把狗认成狗哪怕认错了品种这一步由adjust_results4_isadog()完成它借助 dognames.txt 中收录的犬种名单为结果字典追加两个关键标记idx 3真实图片是否为犬类1是0否idx 4模型预测是否为犬类1是0否这样一来即便模型把金毛认成了别的犬种品种不匹配只要它判定这是狗就仍然算作犬类识别正确。而猫、松鼠这类非犬类图片则是检验模型拒识能力的重要样本图像分类统计指标全解5 个关键数字的计算公式当你把结果字典含 idx 0-4交给calculates_results_stats()后它会统计出全部核心指标。这一函数的完整实现位于 check_images_solution.py 第 344-436 行计算逻辑如下统计指标含义计算公式n_images图片总数结果字典的长度n_match标签完全匹配数统计 idx 2 1 的数量n_dogs_img真实犬类图片数统计 idx 3 1 的数量n_notdogs_img非犬类图片数n_images − n_dogs_imgpct_match匹配准确率n_match ÷ n_images × 100pct_correct_dogs犬类识别准确率n_correct_dogs ÷ n_dogs_img × 100pct_correct_notdogs非犬类识别准确率n_correct_notdogs ÷ n_notdogs_img × 100pct_correct_breed犬种识别准确率n_correct_breed ÷ n_dogs_img × 100这里有两个新手容易踩的坑务必留意分母别为零当测试集中没有非犬类图片时n_notdogs_img为 0直接除法会报错。代码中已用条件判断兜底第 429-433 行当n_notdogs_img为 0 时准确率记为 0.0。犬种准确率的分母是犬类图片数n_correct_breed只统计标签匹配且双方都是犬类即 idx 2、3、4 之和为 3的图片所以它衡量的是细粒度识别能力通常比犬类识别准确率更低、也更有区分度。一键运行三种模型横向对比图像分类准确率手工逐个运行太麻烦项目贴心提供了批量脚本 run_models_batch_solution.sh它会依次用resnet、alexnet、vgg三种架构跑完全部图片并把结果分别输出到对应的文本文件中python check_images_solution.py --dir pet_images/ --arch resnet --dogfile dognames.txt resnet_solution.txt python check_images_solution.py --dir pet_images/ --arch alexnet --dogfile dognames.txt alexnet_solution.txt python check_images_solution.py --dir pet_images/ --arch vgg --dogfile dognames.txt vgg_solution.txtWindows 用户则可以使用对应的run_models_batch_solution.bat文件。运行结束后对比三份报告中pct_correct_dogs与pct_correct_breed两列数字就能轻松判断哪种架构的图像分类准确率最高。如果你想在本地复现实验克隆仓库后进入intropylab-classifying-images目录即可git clone https://gitcode.com/gh_mirrors/ai/AIPND结果解读与避坑指南拿到统计报告后请记住一个关键区分匹配准确率 ≠ 犬类识别准确率。例如一张金毛图片被模型识别为拉布拉多犬它犬类识别正确但品种识别错误因此pct_match和pct_correct_breed都会扣分而pct_correct_dogs不受影响。这正是同时看多个指标的意义——pct_match衡量整体识别力pct_correct_dogs衡量粗粒度分类力pct_correct_breed则衡量细粒度品种区分力。此外实验中还包含北极熊、猫头鹰、臭鼬等冷门样本它们能有效检验模型对非犬类、非宠物品类的鲁棒性日常练习时建议利用 print_functions_for_lab_checks.py 中提供的检查函数在每一步构建字典后即时核对中间结果避免把错误的数据一路带到准确率计算环节。总结计算图像分类准确率并不神秘先构建真实标签 模型预测 匹配标记 犬类标记的结果字典再套用本文给出的 4 个百分比公式即可。掌握 AIPND 这套评估流程后无论是对比 CNN 模型架构还是未来评估自己的分类模型你都能用清晰的统计指标说话而不是凭感觉下结论。【免费下载链接】AIPNDCode and associated files for the AI Programming with Python Nanodegree Program项目地址: https://gitcode.com/gh_mirrors/ai/AIPND创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考