使用冻结图层进行迁移学习
本文介绍如何在迁移学习时冻结 YOLOv5 🚀 层。迁移学习是一种有用的方法,可以在新数据上快速重新训练模型,而无需重新训练整个网络。相反,部分初始权重被冻结在适当的位置,其余的权重用于计算损失并由优化程序更新。与正常训练相比,这需要更少的资源,并允许更快的训练时间,尽管它也可能导致最终训练的准确性降低
开始之前
克隆此存储库并安装要求.txt依赖项,包括 Python>=3.8 和 PyTorch>=1.7。
$ git clone https://github.com/ultralytics/yolov5 # clone repo
$ cd yolov5
$ pip install wandb -qr requirements.txt # install requirements.txt
冻结骨干网
在训练开始之前,通过将其梯度设置为零,将与 train.py 中的列表匹配的所有图层都将冻结。https://github.com/ultralytics/yolov5/blob/58f8ba771e3712b525ca93a1ee66bc2b2df2092f/train.py
#L83-L90freeze
查看模块名称列表:
for k, v in model.named_parameters():
print(k)
# Output
model.0.conv.</