yolo训练自己的数据及测试(C++版本)

本文介绍了如何使用C++版本的YOLO进行训练和测试,包括下载项目、配置多GPU、编译时的错误解决(如nvcc未找到、opencv版本不匹配、库加载错误等)、数据标记、训练过程、测试步骤以及图像预处理。还提供了处理图像以适应YOLO训练的代码示例。
摘要由CSDN通过智能技术生成

一、下载yolo项目:

https://github.com/AlexeyAB/darknet(C++版本)

二、多GPU配置C++版本的yolo

    修改makefile文件如下:

    GPU=1

   CUDNN=1

  CUDNN_HALF=1

  OPENCV=1

 AVX=0

OPENMP=0

LIBSO=1

DEBUG=1

  

三、编译C++版本

遇到的bug1:
/bin/sh: 1: nvcc: not found
Makefile:88: recipe for target 'obj/convolutional_kernels.o' failed
make: *** [obj/convolutional_kernels.o] Error 127
错误原因:nvcc没有安装或者是设置的环境变量不生效

解决方案:在/et/profile中添加cuda的环境变量,添加完成之后切记source /etc/profile


参考文章:

https://blog.csdn.net/chengyq116/article/details/80552163

遇到的bug2:

 Error: Assertion failed ((flags & FIXED_TYPE) != 0)

错误原因:opencv版本不匹配

解决方案:编译c++版的yolo必须要装低于3.4.0版本的opencv ;如果电脑上已经装好其他版本的opencv,只需要重新编译所需要的opencv版本即可,然后在执行训练或其他命令之前执行export LD_LIBRARY PATH=$LD_LIBRARY_PATH:/data/opencv-3.4.0/build/lib,但是不能用sudo执行命令

bug3:

error while loading shared libraries: libopencv_highgui.so.3.4 linux

错误原因:安装完opencv时没有将opencv路径写入环境变量

解决方案:添加opencv环境变量

参考文章:

https://blog.csdn.net/u013066730/article/details/79411767(从第9步开始执行就行)

错误原因:显存不足

解决方案:将.cfg文件中的subdivision设置为64

 

四、标记自己的数据及训练

训练数据:./darknet detector train data/obj.data data/yolov3-tiny_test.cfg yolov3-tiny.conv.15 -gpus 0,1,2

计算锚点:./darknet detector calc_anchors data/obj.data -num_of_clusters 6 -width 416 -height 416

断点续传:./darknet detector train data/obj.data data/yolov3-tiny_test.cfg /backup/yolov3-tiny_train_1000.weights -gpus 0,1,2

### 回答1: YOLO(You Only Look Once)是一种目标检测算法,用于实时物体检测。它的特点是将目标检测问题转化为回归问题,通过一个神经网络模型从输入图像中直接获得目标的位置和类别信息。 YOLO训练过程包括两个主要步骤:网络的预训练和目标检测的微调。 首先,我们需要进行网络的预训练。以C语言为例,我们使用训练数据训练网络模型,其中包括图像及其对应的目标框标注。训练数据可通过数据集收集或者标注得到。通过预训练,网络学习到了图像特征的表示,并逐渐提高了对不同目标类别的分类准确性。 接下来,我们进行目标检测的微调。这一步骤主要是针对特定任务进行优化,如车辆检测、行人检测等。在微调过程中,我们会使用带有目标框标注的专门的训练数据。通过微调,网络学会了从输入图像中提取目标的位置信息,以及预测目标的类别。结果可以用于目标检测任务,可以在图像中实时准确地检测到多个目标。 总结起来,YOLO是一种高效的目标检测算法,通过深度学习技术实现。它的训练过程包括网络的预训练和目标检测的微调,通过这些步骤,网络能够学习到图像特征的表示并实现实时目标检测。这使得它在许多实际场景中具有广泛应用的潜力。 ### 回答2: YOLO(You Only Look Once)是一种基于深度学习的目标检测算法。通过YOLO中的训练,可以使算法具备检测物体的能力,并且可以实时进行检测。 YOLO算法的训练过程可以分为两个主要阶段:网络的预训练和目标检测器的微调。 首先,在预训练阶段,使用大规模的图像数据集,例如COCO数据集,来训练深度神经网络。通过训练网络学习到的特征,可以使得网络具备对不同物体的辨别能力。 其次,在微调阶段,使用标注了边界框和类别信息的训练集,来进一步调整网络的参数。通过在这个阶段使用YOLO算法的损失函数,网络将根据预先定义的标准来准确地预测物体的位置和类别。 在训练过程中,需要注意一些技巧来提高YOLO算法的性能。比如,要选择合适的学习率,以控制参数的更新速度。此外,数据增强也是训练过程中常用的技术,可以通过随机旋转、缩放和平移等操作扩充训练集的大小,提高算法的泛化能力。 总的来说,YOLO算法的训练过程是通过深度学习网络对大量图像进行学习,然后根据标注的数据微调网络参数。通过这个过程,YOLO算法可以实现对各种物体的准确检测和分类,具备广泛的应用价值。 ### 回答3: YOLO(You Only Look Once)是一种目标检测算法,它将目标检测问题视作回归问题,并使用神经网络来实现。这种算法的特点是速度快且准确率高。 YOLO算法的训练过程主要分为两个步骤:网络的预训练和目标检测网络的微调。 首先,我们需要根据数据集对网络进行预训练。预训练是为了让网络学习到一些通用的特征。通常情况下,我们会使用一个大规模的数据集,例如ImageNet,来进行预训练。预训练可以有效地提高网络的性能,并且可以加速目标检测网络的训练过程。 接下来,我们需要为目标检测网络进行微调。微调是指使用我们自己的数据集对网络进行再训练,以适应特定的目标检测任务。在微调阶段,我们会根据数据集进行标注,并使用标注信息来计算网络的损失函数。损失函数是衡量网络输出与实际标注之间的误差的指标,我们通过最小化损失函数来优化网络参数。 YOLO算法的检测过程可以简洁地解释为:将图像分为网格,每个网格预测出边界框以及对应的类别概率。通过阈值筛选和非极大值抑制,我们最终得到检测到的目标。 综上所述,YOLO算法通过预训练和微调来训练检测网络,并且在测试阶段将图像分为网格,通过预测边界框和类别概率来进行目标检测。这种算法通过一次前向传播即可完成目标检测,具有高速度和较高的准确率,因此在实际应用中得到广泛使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值