# PyTorch 图像分类
## 文件架构
```
C:.
├─.idea
│ └─inspectionProfiles
├─checkpoints
│ │ best_model.pth
├─data
│ ├─test
│ │ ├─00000
│ │ ├─00001
│ │ ├─ ···
│ │ └─00061
│ ├─train
│ │ ├─00000
│ │ ├─00001
│ │ ├─ ···
│ │ └─00061
│ ├─val
│ │ ├─00000
│ │ ├─00001
│ │ ├─ ···
│ │ └─00061
│ └─__pycache__
├─models
│ │ alexnet.py
│ │ basic_module.py
│ │ resnest50.py
│ │ resnet101.py
│ │ resnet34.py
│ │ squeezenet.py
│ │ __init__.py
│ │
│ └─__pycache__
│
├─Ranger-Deep-Learning-Optimizer
│ │ LICENSE
│ │ ranger-init.jpg
│ │ ranger-with-gc-options.jpg
│ │ README.md
│ │ setup.py
│ │
│ ├─ranger
│ │ │ ranger.py
│ │ │ ranger2020.py
│ │ │ ranger913A.py
│ │ │ rangerqh.py
│ │ │ __init__.py
│ │ │
│ │ └─__pycache__
│
├─utils
│ │ tools.py
│ │ visualize.py
│ │ __init__.py
│ │
│ └─__pycache__
│
└─__pycache__
config.cpython-37.pyc
└─__pycache__
├─main.py
├─config.py
├─requirements.txt
```
`checkpoints`存放训练得到的模型文件
`data`存放原始数据集
`models`存放模型的网络文件
`Ranger`存放Ranger优化器源码
`utils`存放项目用到的工具
`main.py`主函数
`config.py`项目配置文件
## 使用方法
### 数据下载
- 从[kaggle比赛官网](https://www.kaggle.com/c/dogs-vs-cats/data) 下载所需的数据;或者直接从此下载[训练集](https://yun.sfo2.digitaloceanspaces.com/pytorch_book/pytorch_book/data/dogcat/train.zip)和[测试集](https://yun.sfo2.digitaloceanspaces.com/pytorch_book/pytorch_book/data/dogcat/test1.zip)
- 解压并把训练集和测试集分别放在一个文件夹中
### 安装
- PyTorch : 可按照[PyTorch官网](http://pytorch.org)的指南,根据自己的平台安装指定的版本
- 安装指定依赖:
```
pip install -r requirements.txt
```
### 训练
必须首先启动visdom:
```
python -m visdom.server
```
项目采用fire控制,因需使用如下命令启动训练:
```
# 在gpu0上训练,并把可视化结果保存在visdom 的classifier env上
python main.py train --train-data-root=./data/train --use-gpu --env=classifier
```
详细的使用命令 可使用
```
python main.py help
```
### 测试
```
python main.py testforacc --data-root=./data/test --batch-size=256 --load-path='checkpoints/squeezenet.pth'
```
## 基于baseline的算法改进
### 数据集处理
- 数据清洗
- 数据分析-各类占比
- 数据分割-train/val
- 数据增强
- 随机翻转
- [x] 裁剪
- [x] 亮度
- [x] 对比度
- [x] [CutMix](https://gitcode.net/mirrors/clovaai/CutMix-PyTorch?utm_source=csdn_github_accelerator)
- 数据平衡
- [ ] WeightedRandomSampler
- [x] [ImbalancedDatasetSampler](https://gitcode.net/mirrors/ufoym/imbalanced-dataset-sampler?utm_source=csdn_github_accelerator)
### 训练过程
- 损失函数
- [x] CrossEntropyLoss
- 优化器
- [x] Adam
- [x] SGD
- [ ] [RAdam](https://gitcode.net/mirrors/LiyuanLucasLiu/RAdam?utm_source=csdn_github_accelerator)
- [x] [Ranger](https://gitcode.net/mirrors/lessw2020/Ranger-Deep-Learning-Optimizer?utm_source=csdn_github_accelerator)
- 模型
- [x] ResNet101
- [ ] EfficientNet
- [x] [ResNest](https://github.com/zhanghang1989/ResNeSt)
- [ ] 加入注意力机制
参考方案:
# 图像分类比赛tricks:“观云识天”人机对抗大赛:机器图像算法赛道-天气识别—百万奖金
转载至https://zhuanlan.zhihu.com/p/95881337
### 数据存在的问题:
1. 数据量小
2. 样本不均衡
3. 数据集噪声大
4. 对天气知识的先验知识不足
### 解决方案
1. 数据清洗
2. 数据增强:几何变换、[CutMix](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1905.04899%3Fcontext%3Dcs.CV)等
3. 数据不均衡
4. 标签平滑
5. 双损失函数
6. 优化器:RAdam LookAhead
7. 深度模型ResNeXt101系列,[EfficientNet](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1905.11946)系列。
8. 注意力机制
9. SVM替换softmax层
10. 模型融合:VotingClassifier
11. TTA:测试时增强
## 比赛思路
### 1.数据清洗
借助弱监督方式引入外部数据集中的高质量数据——解决了自行扩展数据集带来的测试偏移。步骤如下:
1. 使用训练数据建立模型
2. 预测爬取的数据的标签,对外部数据进行伪标签标注。
3. 结合样本分布和混淆矩阵的结果,设置了多级阈值,选择可信度高的数据,组合成新的数据集
4. 重复1,2,3。
引入外部数据集中的高质量数据
### 2.数据增强
1. 几何变换——只进行水平翻转和平移0.05
```python3
transforms.RandomAffine(degrees=0, translate=(0.05, 0.05)),
transforms.RandomHorizontalFlip()
```
\2. CutMix
[CutMix正规化器的Pytorch官方实现](https://link.zhihu.com/?target=https%3A//linux.ctolib.com/clovaai-CutMix-PyTorch.html)
### 3.数据不均衡
在数据层面和算法层面同时测试选取—— 上采样和class_wight相结合
1. 上采样——通过混淆矩阵和验证集的随机化设置,提取模型预测错误的数据,然后按照一定的权重进行数据复制扩充,为了减少上采样可能带来的过拟合问题,我们对扩充的数据进行了区域裁剪,使数据更倾向于需要关注的部分。
2. class_weight——将不同的类别映射为不同的权值,该参数用来在训练过程中调整损失函数(只能用于训练)。该参数在处理非平衡的训练数据(某些类的训练样本数很少)时,可以使得损失函数对样本数不足的数据更加关注。
### 4.数据标签平滑
目的:减小过拟合问题
平滑过后的样本交叉熵损失就不仅考虑到了训练样本中正确的标签位置的损失,也稍微考虑到其他错误标签位置的损失,导致最后的损失增大,导致模型的学习能力提高,即要下降到原来的损失,就得学习的更好,也就是迫使模型往增大正确分类概率并且同时减小错误分类概率的方向前进。
```text
#!/usr/bin/python
# -*- encoding: utf-8 -*-
import torch
import torch.nn as nn
class LabelSmoothSoftmaxCE(nn.Module):
def __init__(self,
lb_pos=0.9,
lb_neg=0.005,
reduction='mean',
lb_ignore=255,
):
super(LabelSmoothSoftmaxCE, self).__init__()
self.lb_pos = lb_pos
self.lb_neg = lb_neg
self.reduction = reduction
self.lb_ignore = lb_ignore
self.log_softmax = nn.LogSoftmax(1)
def forward(self, logits, label):
logs = self.log_softmax(logits)
ignore = label.data.cpu() == self.lb_ignore
n_valid = (ignore == 0).sum()
label = label.clone()
label[ignore] = 0
lb_one_hot = logits.data.clone().zero_().scatter_(1, label.unsqueeze(1), 1)
label = self.lb_pos * lb_one_hot + self.lb_neg * (1-lb_one_hot)
ignore = ignore.nonzero()
_, M = ignore.size()
a, *b = ignore.chunk(M, dim=1)
label[[a, torch.arange(label.size(1)), *b]] = 0
if self.reduction == 'mean':
loss = -torch.sum(torch.sum(logs*label, dim=1)) / n_valid
elif self.reduction == 'none':
loss = -torch.sum(logs*label, dim=1)
return loss
if __name__ == '__main__':
torch.manual_seed(15)
criteria = LabelSmoothSoftmaxCE(lb_pos=0.9, lb_neg=5e-3)
net1 = nn.Sequential(
nn.Conv2d(3, 3, kernel_size=3, stride=2, padding=1),
)
ne
没有合适的资源?快使用搜索试试~ 我知道了~
深度学习+图像分类+vgg transformer+医学图像分类baseline

共2387个文件
png:1602个
py:440个
jpg:139个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉

温馨提示
内容概要:使用pytorch搭建图像分类的一系列流程,包含了dataset的创建 ,一些常用的分类网络,比如使用预训练的vgg、搭建的vgg、transformer、vgg-transformer等等模型文件,包含了模型的训练、测试完整流程,各种指标的计算代码均有涉及
资源推荐
资源详情
资源评论

















收起资源包目录





































































































共 2387 条
- 1
- 2
- 3
- 4
- 5
- 6
- 24

一壶浊酒..
- 粉丝: 1665
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【Android应用源码】圆环菜单,只有你0想不到的,没有做不到的.zip
- 【Android应用源码】圆环菜单,只有你想不到的,没有做不到的.zip
- 【Android应用源码】原来PATH的菜单效果如此简单。布局+TranslateAnimation搞定.zip
- 【Android应用源码】圆形自定义进度条.zip
- 【Android应用源码】远程登录含有loading登录效.zip
- 【Android应用源码】源码下载工具.zip
- 【Android应用源码】远程登录含有loading登录效果~~完整代码和超级详细注释.zip
- 【Android应用源码】阅读器.zip
- 【Android应用源码】在物理世界中添加矩形).zip
- 【Android应用源码】在wifi下手机与电脑的socket通信.zip
- 【Android应用源码】在线词典源码.zip
- 【Android应用源码】在远程上传以及下载图片---XFire框架.zip
- COMSOL等离子体仿真技术在MPCVD装置与H2放电低气压环境中的应用研究
- 【Android应用源码】支持农历的精美日历项目源码.zip
- 【Android应用源码】支付宝控件接口示例.zip
- 【Android应用源码】支付宝_安卓苹果_快捷支付_文档_代码例子.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
前往页