# 多任务学习Multi-Task Learning
**Repository Path**: KaffeeCat/Multi-task-Learning
## Basic Information
- **Project Name**: 多任务学习Multi-Task Learning
- **Description**: 多任务学习Multi-Task Learning实验代码及文献仓库
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 1
- **Created**: 2022-03-09
- **Last Updated**: 2023-10-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 多任务学习Multi-Task Learning
### 1. 介绍
多任务学习Multi-Task Learning实验代码及文献仓库
### 2. 模块化组件
框架使用yolodet [[Link]](https://gitee.com/wuzhihao7788/yolodet-pytorch) 组件,通过模块化设计来解耦各个组件:
- 提供丰富的模型,包括YOLOv5, YOLOv4, PP-YOLO, YOLOv3等,且
- 丰富的Backbone,包括DarkNet, CSPDarkNet, ResNet, YOLOv5Darknet
- 丰富的数据增强方法,包括Mosaic, Mixup, Resize, LetterBox, RandomCrop, RandomFlip等
- 丰富的损失函数,包括bbox loss(IOU, GIOU, DIOU, CIOU), confidence loss(YOLOv4, YOLOv5, PP-YOLO), IOU_Aware_Loss, FocalLoss
- 丰富的训练技巧,包括指数移动平均、梯度剪切、多尺度训练、学习率调整、Label Smooth等
模块化代码结构:
```bash
├──tools #工具包,包含训练代码,测试代码和推断代码入口。
├──yolodet #YOLO检测框架核心代码库
│ ├──apis #提供检测框架的训练,测试和推断和模型保存的接口
│ ├──dataset #包含DateSet,DateLoader和数据增强等通用方法
│ ├──models #YOLO检测框架的核心组件集结地
│ │ ├──detectors #所有类型检测器集结地
│ │ ├──backbones #所有骨干网络集结地
│ │ ├──necks #所有necks集结地
│ │ ├──heads #heads集结地
│ │ ├──loss #所有损失函数集结地
│ │ ├──hooks #hooks集结地(学习率调整,模型保存,训练日志,权重更新等)
│ │ ├──utils #所有工具方法集结地
```
新增公共模块目录(新增的模块记录在这里):
```bash
├──tools
├──yolodet
│ ├──apis #提供检测框架的训练,测试和推断和模型保存的接口
│ ├──dataset #包含DateSet,DateLoader和数据增强等通用方法
│ │ ├──custom_voc,custom_cls #新增自定义的custom_voc,custom_cls读取voc和cls数据
│ ├──models #检测框架的核心组件集结地
│ │ ├──heads
│ │ │ ├──cls #新增自定义的分类头
```
### 3. 实验数据集
数据集路径格式:
```bash
├── data
│ ├── your data root #你的数据集根目录
│ │ ├── annotations #标签存放位置
│ │ │ ├── train.txt #训练数据集标签文件。数据格式:[图片名称 x1,y1,x2,y2,label] 例如:59679.jpg 253,420,406,744,0 25,40,46,44,1
│ │ │ ├── val.txt #验证数据集标签文件。数据格式同上
│ │ │ ├── test.txt #测试数据集标签文件。数据格式同上
│ │ ├── images #图片存放位置
│ │ ├── label.names #标签名称存放位置,按标签索引,按行存储
```
数据集下载链接
- VOC2007 training/validation data (450MB tar file) [[Download]](http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar)
- VOC2007 annotated test data (430MB tar file) [[Download]](http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar)
PyTorch VOC数据集加载代码参考 [[Reference for Detection]](https://pytorch.org/vision/0.8/datasets.html#voc)
```python
torchvision.datasets.VOCDetection(root: str, year: str = '2012', image_set: str = 'train', download: bool = False, transform: Union[Callable, NoneType] = None, target_transform: Union[Callable, NoneType] = None, transforms: Union[Callable, NoneType] = None)
```
### 4. 参考文献
[1] Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics [[PDF]](https://openaccess.thecvf.com/content_cvpr_2018/papers/Kendall_Multi-Task_Learning_Using_CVPR_2018_paper.pdf) [[知乎]](https://zhuanlan.zhihu.com/p/474528861)
[2] GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks [[PDF]](http://proceedings.mlr.press/v80/chen18a/chen18a.pdf)
[3] Cross-Domain Multi-task Learning for Object Detection and Saliency Estimation [[PDF]](https://openaccess.thecvf.com/content/CVPR2021W/CLVision/papers/Khattar_Cross-Domain_Multi-Task_Learning_for_Object_Detection_and_Saliency_Estimation_CVPRW_2021_paper.pdf) [[知乎]](https://zhuanlan.zhihu.com/p/477942727)
[4] End-to-End Multi-Task Learning with Attention [[PDF]](https://openaccess.thecvf.com/content_CVPR_2019/papers/Liu_End-To-End_Multi-Task_Learning_With_Attention_CVPR_2019_paper.pdf)
[5] Multi-Task Learning as Multi-Objective Optimization [[PDF]](https://proceedings.neurips.cc/paper/2018/file/432aca3a1e345e339f35a30c8f65edce-Paper.pdf)