首页 > 编程知识 正文

yolo给的权重是基于什么数据集,anaconda环境变量手动设置

时间:2023-05-05 23:01:21 阅读:168177 作者:4224

YOLO v4论文: https://arxiv.org/abs/2004.10934

YOLO v4开放源代码: https://github.com/Alexey ab/darknet

YOLO v4的安装基本上与YOLO v3相同,但作者基本上根据YOLO v3的版本进行了修改,与安装基本相似。 简单说明安装要求。

文章1 .安装要求2.1安装2.1配置makefile 2.2编译3. Demo测试4 .培训自身数据集4.1数据集准备4.2修复配置文件4.2.1修复cfg/voc.data4.2.2修复yolov4-custom.cfg第一部分:修改头文件第二部分:修改目标类别第三部分:卷积层filters 4.3预训练权重4.4下载模型4.5何时停止训练5. YOLO

使用以下命令显示系统的CMke版本号: cmake --version CUDA 10.0

使用以下命令显示CUDA的版本信息: cat/usr/local/cuda/version.txt opencv=2.4

使用以下命令显示OpenCV的版本号: pkg-config opencv---- modversioncudnn=7.0 for cuda

使用以下命令确定cuDNN的版本号。 cat/usr/local/cuda/include/Cu dnn.h|grepcudnn _ major-a2

上图所示的cuDNN版本号为7.6.0。

GPU with CC=3.0 gcc --version 2.安装2.1设置打开Makefiledarken根目录下的makefile文件,如下表所示设置内部参数。

不同内容修正状况的GPU=1用CUDA构筑,GPU加速(CUDA应该在/usr/local/CUDA中) CUDNN=1用CUDNN v5-v7构筑,GPU加速训练(CUDNN为/usr/local/CUDA ) 位于CUDNN中)使用CUDNN_HALF=1用于加速检测3x的张量核(版本为泰坦V/Tesla V100/DGX-2或更高版本),训练2 xopencv=1opencv4. x/3 2.4 .使用x构建-需要调试debug=1yolo以允许从网络摄像机或网络摄像机检测视频文件和视频流使用openmp=1openmp支持构建, 如果已经使用多核CPU安装了YOLO,则需要加快opencv速度。如果您有Nvidia显卡,并且安装了正确版本的CUDA和CUDNN,请设置GPU=1,CUDNN=1 如果显卡是Titan V/Tesla V100/DGX-2或更高版本,请设置CUDNN_HALF=1。 对于多核CPU APP应用程序,请设置OPENMP=1 2.2编译并直接在darknet文件环境中执行以下代码:

make -j在编译过程中可能会出现Warining,但如果不会出现Error就好了。

3. Demo测试首先,下载yolov4.weights (官方链接)。 官方链接从github下载。 速度慢,开始

用百度云链接(ubee )下载。

./darknetdetectcfg/yolo v4.cfgyolov4. weights data/dog.jpg规则如下:

./darknet detect [训练cfg文件路径] [权重文件路径] [检测图像的路径]的执行结果如下图所示

4 .训练自己的数据集4.1数据集,准备首先生成自己的数据集作为VOC数据集的格式,至少生成以下格式的文件夹

annotationsimagesets---- main---test.txt---train val.txt---val.txtjpegimages接着

第一处

修改第七行

sets=[('2012 ',' train ' )、[2012 ',' val']、[2007 ',' train']、[2007 ',' val']、[2007 '、' val '

修改第九行

classes=['aeroplan

e", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"]

修改为自己检测目标类别名称

完成修改以后可运行文件,生成YOLO训练时使用的labels

python voc_label.py

运行结束以后,可以在/darknet/scripts/VOCdevkit/VOC2007文件夹内看到labels文件夹,并且在/darknet/scripts文件夹内会生成2007_train.txt、2007_test.txt、2007_val.txt三个文件。到此,数据准备完成。

4.2修改配置文件 ./darknet detector train cfg/voc.data cfg/yolo-voc.cfg darknet19_448.conv.23

上边是进行训练的命令,可以按照上边的命令对文件进行修改。

4.2.1修改cfg/voc.data classes= 3 //修改为训练分类的个数 train = /home/ws/darknet/scripts/2007_train.txt //修改为数据阶段生成的2007_train.txt文件路径valid = /home/ws/darknet/scripts/2007_val.txt //修改为数据阶段生成的2007_val.txt文件路径names = data/voc.namesbackup = backup 4.2.2修改data/voc.names

在上边修改的文件内有一个data/voc.names文件,里边保存目标分类的名称,修改为自己类别的名称即可。

4.2.3修改cfg/yolov4-custom.cfg 第一处:修改头文件

文件开头的配置文件可以按照下边的说明进行修改

# Testing#batch=1#subdivisions=1# Trainingbatch=64 //每次迭代要进行训练的图片数量 ,在一定范围内,一般来说Batch_Size越大,其确定的下降方向越准,引起的训练震荡越小。 subdivisions=8 //源码中的图片数量int imgs = net.batch * net.subdivisions * ngpus,按subdivisions大小分批进行训练 height=416 //输入图片高度,必须能够被32整除width=416 //输入图片宽度,必须能够被32整除channels=3 //输入图片通道数momentum=0.9 //冲量decay=0.0005 //权值衰减angle=0 //图片角度变化,单位为度,假如angle=5,就是生成新图片的时候随机旋转-5~5度 saturation = 1.5 //饱和度变化大小exposure = 1.5 //曝光变化大小hue=.1 //色调变化范围,tiny-yolo-voc.cfg中-0.1~0.1 learning_rate=0.001 //学习率burn_in=1000max_batches = 120200 //训练次数,建议设置为classes*2000,但是不要低于4000policy=steps //调整学习率的策略//根据batch_num调整学习率,若steps=100,25000,35000,则在迭代100次,25000次,35000次时学习率发生变化,该参数与policy中的steps对应steps=40000,80000 // 一般设置为max_batch的80%与90%scales=.1,.1 //相对于当前学习率的变化比率,累计相乘,与steps中的参数个数保持一致;

注意:如果修改max_batches总的训练次数,也需要对应修改steps,适当调整学习率。
具体的含义可以查看YOLO网络中参数的解读

第二处:修改目标类别

修改三处classes,分别位于970行、1058行与1146行,将其修改为自己数据集的目标数量;

classes=3 第三处:卷积层中filters

在每个[yolo]层之前的3个[convolutional]中,将[filters=255]改为filters=(classes + 5)x3,记住只要在每个[yolo]层之前的最后一个[convolutional]即可。
分别位于963行、1051行与1139行,将其修改为自己数据集的目标数量;

filters=255 #filters=(classes + 5)x3activation=linear[yolo]mask = 0,1,2 4.3 下载预训练权重

谷歌网盘地址: yolov4.conv.137
百度网盘地址: yolov4.conv.137 ,提取码:dw15

4.4 训练模型 ./darknet detector train data/obj.data yolov4-custom.cfg yolov4.conv.137

作者制作了如下的图,能够直接观察损失、时间等信息,非常实用。

4.5 何时停止训练

通常每个类(对象)有足够的2000次迭代,但总共不少于4000次迭代。但是为了更精确地定义什么时候应该停止培训,通过观察avg数值。

Region Avg IOU: 0.798363, Class: 0.893232, Obj: 0.700808, No Obj: 0.004567, Avg Recall: 1.000000, count: 8 Region Avg IOU: 0.800677, Class: 0.892181, Obj: 0.701590, No Obj: 0.004574, Avg Recall: 1.000000, count: 89002: 0.211667, 0.60730 avg loss, 0.001000 rate, 3.868000 seconds, 576128 images Loaded: 0.000000 seconds

在训练期间,您将看到不同的错误指示符,当不再减少0时应该停止。XXXXXXX avg
axdxss看到平均损失为0。xxxxxx avg不再减少在许多迭代,然后你应该停止培训。最终的平均损失可能是0.05(对于小模型和容易的数据集)到3.0(对于大模型和困难的数据集)。

5. YOLO不同结果版本对比 模型名称mAP0.5FPSBFlopsyolov4 60865.7%34128.5yolov4 51264.9%4591.1yolov4 41662.8%5560.1yolov4 32060%6335.5yolov3-tiny-prn33.1%3703.5EfficientNetB0-Yolov345.5%5518.3yolov3-spp60.6%38141.5yolov355.3%6665.9yolov3-tiny33.1%3455.66. 常见问题 6.1 训练过程中出现Out of memory

这个是超出内存,是因为模型训练送入图像太多,应该减少.cfg文件中的subdivisions数值。

6.2 avg (loss)为nan

如果在训练过程中,avg (loss)部分为nan是正常现象,如果都为nan时,可能为学习率太大,应该适当减少学习率,同时应该注意,使用多GPU训练时,学习率应该除以GPU的数量。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。