You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux部署自定义训练YOLO报错:Couldn't open file: data/obj.names

解决YOLO部署到Linux时无法打开obj.names的问题

这种跨Windows/Linux部署YOLO模型时碰到的文件读取问题,我之前也遇到过好几次,大概率是跨系统的文件格式差异或者配置细节没适配Linux环境导致的,给你几个针对性的排查和解决步骤:

  • 检查并转换文件换行符格式
    Windows系统默认用CRLF(回车+换行)作为换行符,而Linux用LF(仅换行)。Darknet在读取配置类文件时可能对这个细节敏感——哪怕文件内容完全正确,换行符格式不对也会触发"无法打开文件"的错误。你可以用dos2unix工具快速转换:

    dos2unix data/obj.names
    

    如果没安装dos2unix,也可以用sed命令手动替换:

    sed -i 's/\r$//' data/obj.names
    
  • 确认文件权限是否足够
    虽然你能用cat查看文件,但运行darknet的用户可能没有读取该文件的权限(比如你用root用户上传的文件,现在用普通用户运行darknet)。执行下面的命令赋予读权限:

    chmod +r data/obj.names
    

    保险起见也可以给整个data目录批量加权限:

    chmod -R +r data/
    
  • 检查obj.data里的路径配置
    打开data/obj.data文件,确认里面的names字段路径是Linux风格的正斜杠,而且没有Windows的盘符或反斜杠。比如要确保是:

    names = data/obj.names
    

    而不是names = data\obj.names或者带C:\之类的Windows路径。如果还是不行,试试用绝对路径指定,比如:

    names = /home/your_username/your_darknet_dir/data/obj.names
    
  • 验证文件名大小写
    Linux是严格区分大小写的系统,如果你在Windows里创建的文件是Obj.names或者OBJ.NAMES,但配置里写的是obj.names,就会出现找不到文件的情况。执行ls -l data/查看实际文件名,确保和配置里的完全一致。

  • 在测试命令中强制指定names文件
    直接在detector test命令后加上-names参数强制指定文件路径,绕开配置文件的读取问题,试试这个命令:

    ./darknet detector test data/obj.data cfg/yolo-obj.cfg yolo-obj_25000.weights -names data/obj.names
    

按这个顺序排查,一般都能解决问题。

内容的提问来源于stack exchange,提问作者cabritoIncognito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:18:31