在Colab上训练YOLOv3-darknet口罩识别模型遇阻,求解决方案
解决Colab上训练YOLOv3口罩识别模型的报错问题
一、修正训练命令的路径错误
你的命令存在路径拼接和配置文件路径指向错误,替换为以下命令:
%cd /content/drive/MyDrive/Colab Notebooks/yolo_test/darknet !./darknet detector train ../obj.data cfg/yolov3-tiny_obj.cfg ../darknet53.conv.74 -dont_show
路径修正说明:
- 先进入darknet根目录(你上传的darknet文件夹位于yolo_test下),直接执行
./darknet更可靠 ../obj.data:假设你的obj.data放在yolo_test文件夹下(与darknet同级),若放在darknet/cfg目录下则改为cfg/obj.datacfg/yolov3-tiny_obj.cfg:darknet自带的cfg文件夹就在其根目录下,用相对路径调用即可../darknet53.conv.74:预训练权重放在yolo_test文件夹下,用相对路径调用
二、确保darknet已完成编译
你上传的是darknet源码,必须先在Colab中编译才能执行训练:
- 进入darknet目录:
%cd /content/drive/MyDrive/Colab Notebooks/yolo_test/darknet
- 开启GPU加速编译(Colab默认支持GPU):
!sed -i 's/GPU=0/GPU=1/' Makefile !sed -i 's/CUDNN=0/CUDNN=1/' Makefile !sed -i 's/OPENCV=0/OPENCV=1/' Makefile !make
编译完成后,darknet目录下会生成可执行文件darknet,此时才能执行训练命令。
三、检查配置文件的正确性
1. obj.data配置
确保obj.data内的路径均为Colab挂载后的绝对路径,示例如下:
classes=1 train=/content/drive/MyDrive/Colab Notebooks/yolo_test/train.txt valid=/content/drive/MyDrive/Colab Notebooks/yolo_test/test.txt names=/content/drive/MyDrive/Colab Notebooks/yolo_test/obj.names backup=/content/drive/MyDrive/Colab Notebooks/yolo_test/backup
classes:根据你的数据集调整,比如仅识别戴口罩设为1,区分戴/不戴设为2train/valid:指向数据集的train.txt和test.txt,文件内每一行是对应图片的绝对路径backup:必须提前创建该文件夹,用于保存训练生成的权重文件
2. yolov3-tiny_obj.cfg配置
修改cfg文件的核心参数:
- 将所有
classes值改为你的数据集类别数 - 找到所有
filters参数,按公式计算:filters=(类别数 + 5)*3,比如类别数为1时,filters设为18 - 根据Colab显存调整
batch和subdivisions,比如batch=64、subdivisions=16,显存不足时调小subdivisions
四、确认数据集路径有效性
Kaggle口罩数据集需上传至云端硬盘的yolo_test文件夹下,并生成train.txt和test.txt,文件内每一行需是图片的绝对路径,示例:
/content/drive/MyDrive/Colab Notebooks/yolo_test/dataset/images/img1.jpg /content/drive/MyDrive/Colab Notebooks/yolo_test/dataset/images/img2.jpg
内容的提问来源于stack exchange,提问作者古芳華
相关产品推荐
相关产品推荐

