# 手把手教你使用Pytorch训练自己的分类模型
![封面](https://vehicle4cm.oss-cn-beijing.aliyuncs.com/imgs/%E5%B0%81%E9%9D%A2.png)
之前更新过一起tf版本的训练自己的物体分类模型,但是很多兄弟反应tf版本的代码在GPU上无法运行,这个原因是tf在30系显卡上没有很好的支持。所以我们重新更新一期Pytorch版本的物体分类模型训练教程,在这个教程里面,你将会学会**物体分类的基本概念+数据集的处理+模型的训练和测试+图形化界面的构建**。我这里使用的显卡是NVIDIA RTX3060 6G的笔记本显卡。为了避免带货的嫌疑,我就不说具体的机器型号了,实际的体验中呢,一般4G以上的显存跑个resnet和yolo之类的是没有问题的,如果你是科研人员的话(科研人员估计也不会看我的博客),则需要更牛的服务器来支持你的研究。
## 基本概念
![gogo](https://vehicle4cm.oss-cn-beijing.aliyuncs.com/imgs/gogo.jpg)
从左向右依次是图像分类,目标检测,语义分割和实例分割。
**图像分类**是指为输入图像分配类别标签。自 2012 年采用深度卷积网络方法设计的 AlexNet 夺得 ImageNet 竞赛冠军后,图像分类开始全面采用深度卷积网络。2015 年,微软提出的 ResNet 采用残差思想,将输入中的一部分数据不经过神经网络而直接进入到输出中,解决了反向传播时的梯度弥散问题,从而使得网络深度达到 152 层,将错误率降低到 3.57%,远低于 5.1%的人眼识别错误率,夺得了ImageNet 大赛的冠军。
**目标检测**指用框标出物体的位置并给出物体的类别。2013 年加州大学伯克利分校的 Ross B. Girshick 提出 RCNN 算法之后,基于卷积神经网络的目标检测成为主流。之后的检测算法主要分为两类,一是基于区域建议的目标检测算法,通过提取候选区域,对相应区域进行以深度学习方法为主的分类,如 RCNN、Fast-RCNN、Faster-RCNN、SPP-net 和 Mask R-CNN 等系列方法。二是基于回归的目标检测算法,如 YOLO、SSD 和 DenseBox 等。
**图像分割**指将图像细分为多个图像子区域。2015 年开始,以全卷积神经网络(FCN)为代表的一系列基于卷积神经网络的语义分割方法相继提出,不断提高图像语义分割精度,成为目前主流的图像语义分割方法。实例分割则是实例级别的语义分割。
我们本期教程主要是<font color='red'>图像分类</font>,即给定一张图片,模型判断出他的具体类别。
## 环境配置
### Anaconda 和 Pycahrm安装
nvidia-驱动下载地址:[官方驱动 | NVIDIA](https://www.nvidia.cn/Download/index.aspx?lang=cn)
![image-20221206174728937](https://vehicle4cm.oss-cn-beijing.aliyuncs.com/imgs/image-20221206174728937.png)
使用代码之前请先确保电脑上已经安装好了anaconda和pycharm。
环境的基本配置请看这期博客:[如何在pycharm中配置anaconda的虚拟环境_肆十二的博客-CSDN博客_pycharm配置anaconda虚拟环境](https://blog.csdn.net/ECHOSON/article/details/117220445)
miniconda下载地址:[Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror](https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/)
![image-20221206173858594](https://vehicle4cm.oss-cn-beijing.aliyuncs.com/imgs/image-20221206173858594.png)
conda加速
```bash
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple
```
Pycharm的下载地址:[Other Versions - PyCharm (jetbrains.com)](https://www.jetbrains.com/pycharm/download/other.html)
![image-20221206173934245](https://vehicle4cm.oss-cn-beijing.aliyuncs.com/imgs/image-20221206173934245.png)
### 代码环境配置
代码环境配置步骤较多,建议按照视频教程操作,下面只列出关键命令,方便大家复制粘贴。
```bash
conda create -n cls-42 python==3.8.5
conda activate cls-42
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=11.3
cd 自己本地的代码目录 (或者在本地代码目录的上方打开cmd)
pip install -r requirements.txt
```
## 数据集
### 数据集的搜集
数据集一般有两种方式获取,一种可以通过自己拍摄或者是爬虫爬取建立自建的数据集,这里在本科毕设和大作业的过程中用的比较多,另外一种是使用公开的数据集,后续我这边也会更新一些视觉相关的数据集,大家可以在这里自行查找:[肆十二的博客_CSDN博客-大作业,目标检测,个人心得领域博主](https://blog.csdn.net/ECHOSON?type=download)
![image-20221206174854041](https://vehicle4cm.oss-cn-beijing.aliyuncs.com/imgs/image-20221206174854041.png)
对于公开数据集,比如医学分割,我们一般从这个网址获取:
```bash
https://www.isic-archive.com/#!/onlyHeaderTop/gallery
```
我们这里提供了一个爬虫的程序,可以帮助大家从百度图片中爬取自己需要的图片,程序的名称是`data_get.py`,使用起来非常方便,大家直接运行程序之后,属于自己想要爬取的图片即可,这段程序我直接放在这里。
```python
# -*- coding: utf-8 -*-
# @Time : 2021/6/17 20:29
# @File : get_data.py
# @Software: PyCharm
# @Brief : 爬取百度图片
import requests
import re
import os
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}
name = input('请输入要爬取的图片类别:')
num = 0
num_1 = 0
num_2 = 0
x = input('请输入要爬取的图片数量?(1等于60张图片,2等于120张图片):')
list_1 = []
for i in range(int(x)):
name_1 = os.getcwd()
name_2 = os.path.join(name_1, 'data/' + name)
url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + name + '&pn=' + str(i * 30)
res = requests.get(url, headers=headers)
htlm_1 = res.content.decode()
a = re.findall('"objURL":"(.*?)",', htlm_1)
if not os.path.exists(name_2):
os.makedirs(name_2)
for b in a:
try:
b_1 = re.findall('https:(.*?)&', b)
b_2 = ''.join(b_1)
if b_2 not in list_1:
num = num + 1
img = requests.get(b)
f = open(os.path.join(name_1, 'data/' + name, name + str(num) + '.jpg'), 'ab')
print('---------正在下载第' + str(num) + '张图片----------')
f.write(img.content)
f.close()
list_1.append(b_2)
elif b_2 in list_1:
num_1 = num_1 + 1
continue
except Exception as e:
print('---------第' + str(num) + '张图片无法下载----------')
num_2 = num_2 + 1
continue
# 为了防止下载的数据有坏图,直接在下载过程中对数据进行清洗
print('下载完成,总共下载{}张,成功下载:{}张,重复下载:{}张,下载失败:{}张'.format(num + num_1 + num_2, num, num_1, num_2))
```
比如这里我想要爬取向日葵的图片,运行之后输入向日葵,然后输入想要爬取的图片数量即可。
![image-20221129140549793](https://cmfighting.oss-cn-shenzhen.aliyuncs.com/iiimgs/image-20221129140549793.png)
输入完成之后,爬取之后的图片将会自动保存在data目录下。
![image-20221129140629126](https://cmfighting.oss-cn-shenzhen.aliyuncs.com/iiimgs/image-20221129140629126.png)
### 数据集清洗
在实际的使用中,opencv对中文的支持并不好,在一些封装好的以opencv作为后端的api中�
没有合适的资源?快使用搜索试试~ 我知道了~
基于Pyotrch开发的深度学习物体分类系统(图形化界面),包含物体分类中的数据集搜集、模型训练、模型测试和可视化界面等流程
共73个文件
jpg:35个
py:24个
jpeg:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 10 下载量 92 浏览量
2023-01-05
14:53:37
上传
评论 2
收藏 94.72MB ZIP 举报
温馨提示
基于Pyotrch开发的深度学习物体分类系统(图形化界面),包含物体分类中的数据集搜集、模型训练、模型测试和可视化界面等流程
资源推荐
资源详情
资源评论
收起资源包目录
pytorch110_classification-master.zip (73个子文件)
pytorch110_classification-master
data_split.py 5KB
record
heatmap_resnet50d.png 37KB
torchutils.py 6KB
files
data_test.py 5KB
train_without_val_beit.py 7KB
main.py 10KB
train_without_val.py 7KB
timm_models.py 440B
main_shuili.py 10KB
mv_imgs.py 703B
predict.py 3KB
readme.md 19KB
data_clean.py 2KB
utils
export_onnx.py 2KB
get_flops.py 609B
old
train_alexnet.py 9KB
img2folder.py 1KB
free_gpu.py 148B
window.py 11KB
csv_utils.py 460B
val_alexnet.py 7KB
timm_models.py 500B
requirements.txt 41B
pretrained
resnet50d_ra2-464e36ba.pth 97.82MB
requirements.txt 246B
window.py 9KB
images
test_imgs
mini
22679076_bdb4c24401_m.jpg 34KB
8181477_8cb77d2e0f_n.jpg 40KB
24781114_bc83aa811e_n.jpg 37KB
6953297_8576bf4ea3.jpg 80KB
5547758_eea9edfd54_n.jpg 28KB
5673551_01d1ea993e_n.jpg 35KB
12240303_80d87f77a3_n.jpg 31KB
11746080_963537acdc.jpg 92KB
27466794_57e4fe5656.jpg 40KB
24459548_27a783feda.jpg 29KB
7355522_b66e5d3078_m.jpg 22KB
5673728_71b8cb57eb.jpg 29KB
11746276_de3dec8201.jpg 67KB
8223949_2928d3f6f6_n.jpg 57KB
10791227_7168491604.jpg 29KB
mini_result
dandelion
8181477_8cb77d2e0f_n.jpg 40KB
7355522_b66e5d3078_m.jpg 22KB
8223949_2928d3f6f6_n.jpg 57KB
tulips
22679076_bdb4c24401_m.jpg 34KB
11746080_963537acdc.jpg 92KB
11746276_de3dec8201.jpg 67KB
10791227_7168491604.jpg 29KB
daisy
5547758_eea9edfd54_n.jpg 28KB
5673551_01d1ea993e_n.jpg 35KB
roses
24781114_bc83aa811e_n.jpg 37KB
12240303_80d87f77a3_n.jpg 31KB
sunflowers
6953297_8576bf4ea3.jpg 80KB
27466794_57e4fe5656.jpg 40KB
24459548_27a783feda.jpg 29KB
5673728_71b8cb57eb.jpg 29KB
506659320_6fac46551e.jpg 47KB
tmp
tmp_upload.png 1.63MB
tmp_upload.jpg 137KB
single_result_vid.jpg 54KB
tmp_upload.jpeg 21KB
single_result.jpg 4KB
upload_show_result.jpg 132KB
up.jpeg 21KB
right.jpeg 27KB
UI
lufei.png 216KB
logo.jpeg 33KB
up.jpeg 28KB
qq.png 151KB
right.jpeg 25KB
train.py 10KB
test.py 7KB
data_get.py 2KB
共 73 条
- 1
Python代码大全
- 粉丝: 2726
- 资源: 688
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
- 时代的sdddsddsddsd
- 基于哈希链表的简单人员信息管理系统
- 其他类别JdonFramework开源框架 v5.1 Build20071025-jdonframework-5.1.rar
- 2001~2022年上市公司数字赋能指数.dta
- 2001~2022年上市公司数字赋能指数.xlsx
- 信息办公石大在线财务管理系统(含源码)-shidacaiwu.rar
- 信息办公电信计费系统完整代码-netctossconformity.rar
- matlab实现TD-SCDMA中初始同步捕捉DwPTS下行同步导频时隙的仿真.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页