# 多任务学习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)