## Swim Transformer 图像分类项目从自定义数据集开始
# 具体可以参考CSDN的博客文章:https://blog.csdn.net/qq_44886601?type=blog
# 因为预训练权重太大,这里没法上传,自行下载后放在 weights就行
https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_base_patch4_window7_224_22k.pth
'''
# 项目不需要任何更改!!操作简单,包含从制作数据集到训练、预测的完整过程
# 代码会导入 swin_base_patch4_window7_224_in22k 模型,并载入官方的预训练模型
# 训练:代码直接运行 train.py 会自动训练,可以完全不用更改,分类的类别个数会自动生成
# 预测:直接运行 predict.py 文件即可,代码会自动预测 inference 文件夹下所以图像
'''
# 0. 需要配置环境!!
pip install -r requirements.txt
# 运行顺序:
1. 运行爬虫脚本,下载关键词图像 Swin_Transformermy_dataset_from_netmain.py
config 改为Baidu API,Max number改成想要下载的图像个数,线程数建议小一点,要不然会漏下
输出目录不用改,会自动生成,根据关键词下载,也可以载入txt文件,按照下面摆放!
'''
钢铁侠
美国队长
雷神
绿巨人
黑寡妇
鹰眼
''''
2. 定义数据集(将爬取的图像去除损坏的图像,划分训练集和测试集后,按照代码定义的样子摆放好)
# 运行 process_data.py
Tips :下载的关键词是中文的话,需要将名字改成英文!
Tips : 有些无法预览的图像,删不删除都可以,为了可视化,最好删除
3. 开始训练,在 `train.py` 脚本中更改下面超参数(可以直接傻瓜运行,什么都不需要更改)
# num_classes 会自动生成,不需要定义!!
# 冻结权重,因为数据集的不同,设定为True 网络的效果会更好。设置为 False ,可以加快训练,并且精度也不会损失的太多
parser.add_argument('--epochs', type=int, default=50)
parser.add_argument('--batch-size', type=int, default=32)
parser.add_argument('--lr', type=float, default=0.001)
parser.add_argument('--lrf', type=float, default=0.01)
parser.add_argument('--freeze-layers', type=bool, default=False) # 是否冻结权重
4. 预测,运行predict.py即可,不需要更改任何参数,num-classes或者mean、std代码都会自动生成(可以直接傻瓜运行,什么都不需要更改)
# TODO 一些问题
预测脚本会重新导入训练集,计算train mean 和train std,这样难免会浪费时间
如果项目在实际环境中运行,可以训练好网络,在predict.py 脚本中,将num_classes,mean,std自己根据任务设定好,这样可以减少不必要的计算
model = create_model(num_classes=num_classes) # 根据分类个数更改
mean, std = get_mean_std() # 根据训练日志的 txt 文件更改
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/61093.html