最近接手的项目是关于图像分类的,参考了一些优秀的代码库,对使用pytorch框架的搭建分类项目的过程做一个记录总结,同时也记录一些常用的python包的使用。
1、第一篇先来介绍一下如何清晰调理组织项目目录可以帮助我们快速构建项目的整体框架,并专注于某一块逻辑功能的开发。个人习惯在项目目录下先建立几个常用的文件夹:
1) data文件夹用来存放数据集或者指向数据集的软连接。
2) model下存放自己定义的模型文件。
3)utils包括各种工具脚本,其中数据集的处理流程定义在dataset.py中。
4)可能需要在pytorch基础类上自己重载一些类来满足项目的需求,比如更好用的lossing函数和学习率调整策略。
5)exp文件夹来保存训练过程的模型权重,训练日志,以及各种可视化日志
6)训练以及测试过程分别定义在xxx_train.py,以及xxx_eval.pyz中,lr_find.py是参考网上的一种寻找初始学习率的方法。
cls_prj/
├── data
│ └── slide_seq
│ ├── test
│ └── train
├── criterion
│ ├── __init__.py
│ └── LabelSmoothing.py
├── model
│ ├── __init__.py
│ ├── resnet.py
│ ├── ret.py
│ └── transformer.py
├── utils
│ ├── augmentations.py
│ ├── cal_dataset.py
│ ├── collect_env.py
│ ├── comm.py
│ ├── config.py
│ ├── dataset.py
│ ├── distributed_sampler.py
│ ├── __init__.py
│ ├── logger.py
│ ├── lr_scheduler.py
│ ├── model_serialization.py
│ ├── model_utils.py
│ └── split_train_test.py
├── exp
│ ├── best_epoch11_acc81.87.pth
│ ├── last_epoch10_acc82.34.pth
│ ├── log.txt
│ └── tensorboardLoggs
│ └── events.out.tfevents.1629774768.guest-server
├── pred_test.csv
├── train.py
├── lr_find.py
├── class_train.py
└── eval_ret.py
2、关于自定义Python文件、包导入的问题可以参考下面的链接: