news 2026/7/2 0:01:25

幽冥大陆(七十九)Python 水果识别训练视频识别 —东方仙盟练气期

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
幽冥大陆(七十九)Python 水果识别训练视频识别 —东方仙盟练气期

第一步:Win7 配置 Python 虚拟环境

1. 安装 Python 3.8.10

  • 下载地址:https://www.python.org/downloads/release/python-3810/
  • 选择Windows x86-64 executable installer,安装时必须勾选Add Python 3.8 to PATH

2. 创建并激活虚拟环境

  1. 打开 cmd 命令行,执行以下命令创建项目文件夹和虚拟环境:

    bash

    运行

    # 新建项目根目录 mkdir fruit_ncnn_project && cd fruit_ncnn_project # 创建虚拟环境(venv_fruit 为环境名) python -m venv venv_fruit
  2. 激活虚拟环境:

    bash

    运行

    # Win7 cmd 命令 venv_fruit\Scripts\activate.bat
    激活后命令行前缀会出现(venv_fruit),表示进入隔离环境。

3. 安装 Win7 兼容的依赖库

激活虚拟环境后,执行以下命令安装指定版本依赖,避免兼容性问题:

bash

运行

# 升级 pip 到兼容版本 python -m pip install --upgrade pip==21.3.1 # 安装 PyTorch + TorchVision CPU 版(Win7 最高兼容版本) pip install torch==1.12.1+cpu torchvision==0.13.1+cpu -f https://download.pytorch.org/whl/cpu/torch_stable.html # 安装其他必备库 pip install pillow==9.5.0 numpy==1.23.5 opencv-python==4.5.5.64

4. 退出虚拟环境(训练完成后执行)

bash

运行

deactivate

第二步:训练模型并生成 .pth 文件

注意:运行前需将 Fruits-360 数据集放在./datasets目录下,确保TrainingTest子文件夹存在。全程在激活的虚拟环境中执行。

训练代码(fruit_train.py)

python

运行

import torch import torch.nn as nn import torch.optim as optim from torchvision import transforms from torchvision.datasets import ImageFolder from torch.utils.data import DataLoader # ==================== 配置项 ==================== TRAIN_DIR = "./datasets/Training" # 数据集训练集路径 TEST_DIR = "./datasets/Test" # 数据集测试集路径 MODEL_SAVE_PATH = "fruit_mobilenetv2.pth" # 模型保存路径 NUM_EPOCHS = 15 # 训练轮数 BATCH_SIZE = 32 # 批次大小 # ================================================ # 1. 数据预处理(适配 Fruits-360 图像尺寸) transform = transforms.Compose([ transforms.Resize((100, 100)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # 2. 加载数据集(Win7 必须设 num_workers=0) train_dataset = ImageFolder(TRAIN_DIR, transform=transform) test_dataset = ImageFolder(TEST_DIR, transform=transform) num_classes = len(train_dataset.classes) # 自动适配 208 类 train_loader = DataLoader(train_dataset, batch_size=BATCH_SIZE, shuffle=True, num_workers=0) test_loader = DataLoader(test_dataset, batch_size=BATCH_SIZE, shuffle=False, num_workers=0) # 3. 加载预训练 MobileNetV2 并修改分类头(迁移学习) from torchvision import models model = models.mobilenet_v2(pretrained=True) model.classifier[1] = nn.Linear(model.last_channel, num_classes) model = model.to("cpu") # 强制 CPU 训练 # 4. 训练配置 criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # 5. 训练+验证循环 print(f"开始训练 {num_classes} 类水果分类模型...") for epoch in range(NUM_EPOCHS): # 训练阶段 model.train() train_loss = 0.0 for imgs, labels in train_loader: optimizer.zero_grad() outputs = model(imgs) loss = criterion(outputs, labels) loss.backward() optimizer.step() train_loss += loss.item() * imgs.size(0) # 验证阶段 model.eval() test_acc = 0.0 with torch.no_grad(): for imgs, labels in test_loader: outputs = model(imgs) _, preds = torch.max(outputs, 1) test_acc += torch.sum(preds == labels.data) # 打印日志 avg_loss = train_loss / len(train_dataset) avg_acc = test_acc.double() / len(test_dataset) print(f"Epoch [{epoch+1}/{NUM_EPOCHS}] | Loss: {avg_loss:.4f} | Test Acc: {avg_acc:.4f}") # 6. 保存训练好的模型 torch.save(model.state_dict(), MODEL_SAVE_PATH) print(f"\n模型训练完成,已保存至 {MODEL_SAVE_PATH}")

阿雪技术观


在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets, hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/29 23:10:58

手把手完成Proteus8.16下载安装教程(适用于单片机仿真)

手把手搞定Proteus 8.16安装:从下载到点亮第一个LED(零基础也能学会)你是不是也遇到过这种情况——刚学单片机,想做个流水灯实验,结果买回来的开发板烧不进去程序、接线一塌糊涂、LED死活不亮?折腾半天还找…

作者头像 李华
网站建设 2026/6/30 21:57:51

xcms视频行为分析系统:零基础快速部署实战指南

xcms视频行为分析系统:零基础快速部署实战指南 【免费下载链接】xcms C开发的视频行为分析系统v4 项目地址: https://gitcode.com/Vanishi/xcms xcms视频行为分析系统是一个基于C开发的强大分析平台,能够帮助用户轻松实现各种视频行为分析需求。该…

作者头像 李华
网站建设 2026/6/17 17:43:56

农资网络销售系统开题报告

列出20篇相关文献资料(并详细阅读)[1]潘涛,王柳,董冉冉.基于Vue.js框架的网上商城管理系统的设计与实现[J].科技与创新,2023(13):8-10.[2]李亚君. 基于SSM框架的B2C电子商城系统的设计与实现[D].合肥工业大学,2023.[3]褚天仁,吕继方.基于微服务的无人艇商…

作者头像 李华
网站建设 2026/7/1 3:52:33

农业信息网站的设计与实现开题报告(2)

附表1本科毕业论文(设计)开题报告论文题目: {{Projects-名-Sub(0,27)-PadR(27)}}{{Projects-名称-Sub(27)-PadR(31)}}学生姓名: {{StuInfo-姓名-PadR(16)}} 学 号: {{StuInfo-学生编号-PadR(16)}} 专 业: {{StuInfo-专…

作者头像 李华
网站建设 2026/6/29 19:54:17

慧荣SM2246XT固态硬盘故障修复完全指南

慧荣SM2246XT固态硬盘故障修复完全指南 【免费下载链接】慧荣主控SM2246XT-MPTool开卡量产工具 本仓库提供了一个针对慧荣主控SSD(SM2246XT)的开卡工具多版本打包资源文件。该工具是专门为慧荣SMI SM2246XT芯片设计的,适用于固态硬盘出现故障…

作者头像 李华
网站建设 2026/6/26 8:33:07

快速掌握kubelogin:Kubernetes OIDC认证终极指南

快速掌握kubelogin:Kubernetes OIDC认证终极指南 【免费下载链接】kubelogin kubectl plugin for Kubernetes OpenID Connect authentication (kubectl oidc-login) 项目地址: https://gitcode.com/gh_mirrors/ku/kubelogin kubelogin作为Kubernetes生态系统…

作者头像 李华