windows下darknet没有检测结果,不报错但是没有框

本文记录了解决Darknet在配备1660ti显卡的笔记本上安装后无法正常运行的问题。通过调整算力设置及移除cudnn_half预处理器定义,实现了Darknet在特定硬件上的正确配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

之前在公司电脑上按照上一篇文章讲的完整方法顺利安装了darknet,后来回家后想在家里的笔记本上也安装一下,本以为会一马平川,结果安装成功后使用测试图片dog.jpg就是没有检测结果,如下图
在这里插入图片描述

问题解决

先放一张图,这是作者在issue提问给的一个回答
在这里插入图片描述
在公司电脑上安装时当时的显卡是1080ti,而我笔记本的显卡是1660ti,16系列显卡应该是不支持cudnn_half这一选项的,在makefile内把cudnn_half设为0是没有作用的,必须在visual studio里进行更改

  • 首先将算力改为显卡对应的
    在这里插入图片描述
    经查询1660ti算力为75,所以需要添加这一步
  • 设置预处理器参数,将预处理器定义中的cudnn_half取去掉即可在这里插入图片描述
<think>嗯,我现在要解决在Windows 10下用YOLOv2训练自己的数据时遇到的问题。当我在cmd里输入指令darknet.exe detector train cfg/voc.data cfg/yolo-voc.cfg cfg/darknet19_448.conv.23后,程序显示608x608,创建了6个永久CPU线程,然后就结束进程,没有开始训练。这到底是怎么回事呢? 首先,我需要回忆一下YOLO训练的基本流程。通常,运行训练命令后,应该会加载模型、读取数据,然后开始迭代训练,显示损失值之类的信息。但这里直接结束了,可能是配置问题或者环境问题。 用户提到的输出是608x608,这可能和配置文件有关。YOLOv2默认的图像尺寸是416x416,但有时候会根据同版本或者配置有所变化。过用户用的是yolo-voc.cfg,可能这个配置文件里设置的图像尺寸是608x608?需要检查cfg文件里的width和height参数是否正确,是否和预训练模型darknet19_448.conv.23的输入尺寸匹配。比如,如果预训练模型是基于448x448的,但配置文件里设置的是608,这可能导致维度匹配,程序崩溃。 然后,Create 6 permanent cpu-threads这个提示,可能是指程序试图创建线程但失败了?或者可能是OpenMP或者其他多线程库的问题。但为什么会结束进程呢?也许在Windows环境下,线程创建有问题,或者内存足导致无法继续。 接下来,我应该考虑可能的解决步骤: 1. 检查配置文件是否正确: - 打开yolo-voc.cfg,确认里面的batch、subdivisions参数是否合理。特别是subdivisions如果设置过大,可能会导致内存足。 - 检查width和height的值是否符合预训练模型的输入尺寸。比如darknet19_448.conv.23可能期望输入是448x448,而如果cfg里设置的是608,这可能会导致问题。需要调整cfg中的尺寸,或者使用对应的预训练模型。 2. 数据路径是否正确: - 检查voc.data里的路径是否正确指向了训练数据、验证数据、类别名称文件等。特别是路径中的斜杠是否使用正确,Windows下可能需要反斜杠,或者使用双引号包裹路径。如果路径错误,程序可能在加载数据前就崩溃。 3. 内存问题: - 训练YOLO需要较大的显存,如果使用的是CPU模式,可能内存足。但用户的问题里显示的是创建CPU线程,可能是在CPU上运行?如果是的话,可能需要更大的内存。或者,检查是否编译时启用了GPU支持,如果没有GPU而程序试图用GPU,可能会出错。 4. 编译问题: - 确保darknet.exe是正确编译的,特别是如果使用了GPU或cuDNN,需要正确配置。如果编译时没有启用GPU,而配置文件中设置了GPU=1,这可能导致问题。或者,如果在CPU模式下,检查是否设置了正确的选项。 5. 日志和错误输出: - 是否有更多的错误信息?有时候程序可能在输出后立即关闭,导致看到错误。可以尝试将命令输出重定向到文件,比如在cmd中使用 > log.txt 2>&1,然后查看log.txt中的内容。 6. 预训练模型是否正确: - 检查darknet19_448.conv.23是否下载正确,文件是否完整。损坏的预训练模型可能导致加载失败。 可能的步骤复现: 用户运行命令后,程序首先解析配置文件,设置输入尺寸为608x608,然后尝试加载预训练模型。但预训练模型的输入层可能与cfg中的尺寸兼容,导致加载失败,从而终止进程。或者,在初始化过程中,由于内存足或线程创建失败,导致程序退出。 解决方案尝试: - 修改cfg文件中的width和height为预训练模型对应的尺寸,比如448x448,或者寻找对应608尺寸的预训练模型。 - 检查voc.data中的路径是否正确,特别是train和valid指向的txt文件是否存在,并且里面的图片路径正确。 - 减少batch size或增加subdivisions,以降低内存消耗。 - 确认darknet编译时是否支持GPU,如果使用CPU可能需要设置GPU=0。 - 检查是否有其他错误提示,比如缺少dll文件,或者CUDA版本匹配等。 如果用户是在CPU上运行,可能需要在命令后加上 -i 0 参数,强制使用CPU。或者,在配置文件中设置GPU=0。另外,某些版本的DarknetWindows下可能存在多线程的问题,可以尝试设置OpenMP的线程数,比如在命令前加上set OMP_NUM_THREADS=1,看是否有效。 总结可能的原因: 1. 输入尺寸匹配导致模型加载失败。 2. 数据路径错误,导致程序无法读取数据而退出。 3. 内存足,无法分配资源。 4. 编译或环境配置问题,如缺少依赖库或GPU支持正确。</think>在Windows 10下使用YOLOv2训练时遇到进程直接结束的问题,可能由以下原因导致。请逐步排查: --- ### **1. 输入尺寸与预训练模型匹配** - **现象**:输出显示`608 x 608`,但预训练模型`darknet19_448.conv.23`是为`448x448`输入设计的。 - **解决方法**: 1. 打开`cfg/yolo-voc.cfg`,检查`width`和`height`参数。 2. 将`width`和`height`从`608`改为`448`,或更换与`608x608`兼容的预训练模型(如`darknet19_608.weights`)。 --- ### **2. 配置文件参数错误** - **检查点**: - **batch/subdivisions**:若显存足,需减小`batch`或增大`subdivisions`。例如: ```ini batch=64 subdivisions=16 ``` - **GPU设置**:若未启用GPU,需在`.cfg`中设置`GPU=0`或在命令后添加`-i 0`强制使用CPU。 --- ### **3. 数据路径问题** - **验证步骤**: 1. 检查`cfg/voc.data`中以下路径: ```ini train = path/to/train.txt valid = path/to/val.txt names = path/to/classes.names backup = path/to/backup ``` 2. 确保路径使用**双反斜杠**(如`D:\\data\\train.txt`)或**正斜杠**(如`D:/data/train.txt`)。 3. 检查`train.txt`和`val.txt`中的图片路径是否存在。 --- ### **4. 内存或显存足** - **现象**:内存足可能导致进程直接崩溃。 - **解决方法**: - 减小`batch`或增大`subdivisions`。 - 关闭其他占用内存的应用程序。 - 使用任务管理器监控内存使用情况。 --- ### **5. 编译或环境问题** - **检查点**: - 确保`darknet.exe`支持GPU(若使用GPU)。 - 若使用CPU,尝试添加`-i 0`参数: ```bash darknet.exe detector train cfg/voc.data cfg/yolo-voc.cfg cfg/darknet19_448.conv.23 -i 0 ``` - 尝试设置OpenMP线程数: ```bash set OMP_NUM_THREADS=1 darknet.exe detector train ... ``` --- ### **6. 日志与调试** - **重定向输出**:将错误信息保存到日志文件: ```bash darknet.exe detector train ... > log.txt 2>&1 ``` 打开`log.txt`查看具体报错(如缺失文件、CUDA错误等)。 --- ### **完整解决流程** 1. **调整输入尺寸**:修改`.cfg`中的`width/height`与预训练模型匹配。 2. **检查数据路径**:确保所有文件路径有效。 3. **降低内存消耗**:调整`batch`和`subdivisions`。 4. **强制使用CPU**:添加`-i 0`参数。 5. **检查日志**:通过`log.txt`定位具体错误。 若仍无法解决,请提供`log.txt`内容进一步分析。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值