Google Colab配置YOLOR预训练模型时提示无法打开./cookie文件
问题成因
- Colab中
!开头的shell命令运行在独立临时子进程内,单行!cd /content/yolor执行完就会销毁子进程,目录切换操作不会保留到下一条命令。执行下载脚本时实际工作目录仍是默认的/content根目录,根本没有进入YOLOR项目文件夹。 - 原下载脚本全部使用相对路径读写cookie和模型文件,工作目录不匹配时,curl写入cookie的路径和后续awk读取、rm删除cookie的路径完全错位。再加上市面流传的旧版curl抓取Google Drive下载校验cookie的逻辑已经和Google Drive当前的大文件下载校验规则不兼容,大概率无法正常生成cookie文件,直接触发找不到文件的报错。
修复步骤
- 先正确切换Colab全局工作目录,不要用
!cd,改用Colab内置的路径魔法命令,单独执行这一行:%cd /content/yolor不要把这行和其他shell命令写在同一代码块同一行执行,否则目录切换不会生效。
- 放弃原脚本里手动curl处理cookie的过时逻辑,直接用Colab预装的、专门适配Google Drive大文件下载的
gdown工具拉取模型,不需要手动处理任何cookie校验,执行以下两条命令即可:
执行完成后直接在!gdown 1Tdn3yqpZ79X7R1Ql0zNlNScB1Dv9Fp76 -O yolor_p6.pt !gdown 1UflcHlN5ERPdhahMivQYCbWWw7d2wY7U -O yolor_w6.pt/content/yolor目录下就能看到两个.pt格式的预训练权重文件,不会再报cookie相关错误。 - 如果一定要运行原shell脚本,需要先把脚本内所有
./cookie、模型输出的相对路径全部改成/content/yolor/开头的绝对路径,再给脚本加可执行权限后运行。但这种方法随时可能因为Google Drive接口调整失效,不推荐使用。
这类curl命令生成的cookie文件没有隐藏属性,存储位置完全由执行命令时的当前工作目录决定,和脚本本身存放的位置无关:
- 如果在
/content目录下执行脚本,cookie会生成在/content/cookie路径下 - 如果正确切换到
/content/yolor目录再执行脚本,cookie才会生成在/content/yolor/cookie路径下 - Colab左侧文件浏览器默认不会实时刷新文件列表,就算文件已经生成,也需要点击面板顶部的刷新按钮才能看到,不需要特意开启隐藏文件显示。
内容的提问来源于stack exchange,提问作者user19323824
相关产品推荐
相关产品推荐

