当前位置: 首页 > news >正文

VGG16猫狗二分类数据集处理

接续前篇VGG16猫狗二分类案例,数据集处理建议:下载数据集后需严格按照一下目录进行创建。

1.规范目录结构
必须按以下结构创建文件夹

vgg16-cat-dog/
├── train/ # 训练集
│ ├── cat/ # 存放所有猫的图片
│ └── dog/ # 存放所有狗的图片
├── test/ # 测试集(从train中划分20%)
│ ├── cat/
│ └── dog/
└── model/ # 保存训练好的模型(代码会自动创建)

2.数据集划分
将数据集划分为训练集和测试集。训练集文件夹命名为train,其中建立两个文件夹分别为cat和dog,每个文件夹里存放相应类别的图片。测试集命名为test(需手动或用代码划分,比例为8:2)。

# 数据集划分代码(保存为split_dataset.py,放在项目根目录运行)
import os
import shutil
import random

# 原始解压后的图片路径
original_dir = "./train_original" # 你解压train.zip的路径
# 目标路径
train_dir = "./train"
test_dir = "./test"
# 划分比例
split_ratio = 0.8

# 创建文件夹
os.makedirs(os.path.join(train_dir, "cat"), exist_ok=True)
os.makedirs(os.path.join(train_dir, "dog"), exist_ok=True)
os.makedirs(os.path.join(test_dir, "cat"), exist_ok=True)
os.makedirs(os.path.join(test_dir, "dog"), exist_ok=True)

# 筛选所有猫狗图片
cat_images = [f for f in os.listdir(original_dir) if f.startswith("cat")]
dog_images = [f for f in os.listdir(original_dir) if f.startswith("dog")]

# 随机打乱
random.shuffle(cat_images)
random.shuffle(dog_images)

# 划分训练集和测试集
train_cat = cat_images[:int(len(cat_images)*split_ratio)]
test_cat = cat_images[int(len(cat_images)*split_ratio):]
train_dog = dog_images[:int(len(dog_images)*split_ratio)]
test_dog = dog_images[int(len(dog_images)*split_ratio):]

# 复制图片到对应文件夹
for img in train_cat:
shutil.copy(os.path.join(original_dir, img), os.path.join(train_dir, "cat", img))
for img in test_cat:
shutil.copy(os.path.join(original_dir, img), os.path.join(test_dir, "cat", img))
for img in train_dog:
shutil.copy(os.path.join(original_dir, img), os.path.join(train_dir, "dog", img))
for img in test_dog:
shutil.copy(os.path.join(original_dir, img), os.path.join(test_dir, "dog", img))

print(f"训练集:猫{len(train_cat)}张,狗{len(train_dog)}张")
print(f"测试集:猫{len(test_cat)}张,狗{len(test_dog)}张")

http://www.gsyq.cn/news/1342639.html

相关文章:

  • ops-transformer 基础设施性能实验报告:GE 融合边界与 Runtime 调度效率实测
  • 手把手教你学Simulink——轨道车辆牵引电机直接转矩控制(DTC)及其磁链观测器仿真
  • 手把手教你学Simulink——考虑铁损的电动汽车永磁同步电机高阶矢量控制建模
  • 2026AI写作辅助软件实测排行榜!这几款才是真神器
  • Midjourney色彩一致性难题破解(CMYK→sRGB跨域校准实战手册)
  • 计算机毕业设计 | SpringBoot+vue医院药品管理系统(附源码+论文)
  • 078.半监督学习:利用少量标注数据和大量无标签数据训练YOLO
  • 彻底掌控Windows Defender:开源工具defender-control完全指南
  • STM32矩阵按键详解——4×4行列扫描与非阻塞消抖(硬件总结六)
  • 用LLM从零搭3D小世界编辑器|小白也能搞定的AI Native开发实录
  • 注释与常用快捷键
  • 【Unity】MiniGame编辑器小游戏(十六)中国象棋局域网对战【Chinese Chess】(下)
  • 把SAC model的数据导出到BW的ADSO中
  • 强制启动 Cursor IDE 主程序(不带 Agent 模式)
  • AI 的持续学习:从会话中提取可复用知识
  • [具身智能-833]:Ollama部署大模型后,如何与大模型进行通信?
  • SMARTFORM不同模板一起打印
  • 工程实战:基于 GPIO 物理旁路极速部署机器人电梯调度系统的设计
  • 嘉立创EDA:原理图到PCB学习总结
  • 忙碌”幻觉:你以为在推进项目,其实只是在逃避
  • 全球石墨纤维粉市场分析与行业发展趋势
  • 凡亿AD22--PCB生产Gerber文件输出
  • AI犯了错没人追责,工程师犯了错丢饭碗?
  • AI电商助手项目策划书(Demo版)
  • 探索C/C++程序从源码到可执行文件的编译之旅
  • Mamba架构原理与工业级长文本处理实战指南
  • 【限时解密】Midjourney后现代风格黄金参数矩阵(含27组实测CR值对比数据):错过本轮更新将永久失去V6.1前最后兼容窗口期
  • 软考高项案例分析1:项目整合管理
  • 论文AI率爆表怕延毕?5招实测降AI率,3分钟知网AIGC过审上岸
  • 太突然!IPO紧要关头,Karpathy加入Anthropic