1685.top贵阳网站建设,手机端什么可以替代迅雷,网络维护人员必备技能,做一个购物网站多少钱软件安装
1、什么是CUDA
CUDA(ComputeUnified Device Architecture)#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构#xff0c;该架构使GPU能够解决复杂的计算问题。
CUDA下载地址为CUDA Toolkit Archive | NVIDIA Developer
版…软件安装
1、什么是CUDA
CUDA(ComputeUnified Device Architecture)是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构该架构使GPU能够解决复杂的计算问题。
CUDA下载地址为CUDA Toolkit Archive | NVIDIA Developer
版本号选择11.6与nvidia-smi.exe命令所显示对应
安装属性选择如下 点击运行cuda_11.6.1_511.65_windows.exe
运行后会先安装后检查版本兼容性无问题将会弹出许可协议。选择自定义安装 注意在此之前应需安装Visual studio 下一步选择安装位置 安装完成后会显示与vs的整合情况之前安装过vs2022显示如下此时就能在vs2022中做GPU方面的开发了。 此时组件安装成功。
检查安装是否成功
nvcc -V
将其设置成系统变量 2、什么是CUDNN
NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型而不是简单调整性能同时还可以在GPU上实现高性能现代并行计算。
即GPU的加速库使用nvidia-smi.exe命令查看自己计算机所支持的最高版本 下载官网cuDNN 历史版本 | NVIDIA 开发者 注意下载的cudnn不能大于的CUDA的版本号故要下载低于CUDA的版本选择v11.0版本 将cudnn解压把这三个文件夹的文件分别拷贝到CUDA安装目录对应的bin、include、lib文件夹中即可。CUDA的lib目录有x64 、Win32、cmake三个文件夹拷到其中的x64这个文件夹中 在vs2022中创建CUDA项目进行测试 点击下一步默认会创建一个数组相加的例子直接运行显示如下此时成功 3、opencv安装
进入官网下载版本为opencv3.4.14运行安装 配置环境变量 二、配置YOLOv4环境 1、darknet
Darknet是一个用C和CUDA编写的开源神经网络框架。它速度快易于安装并支持CPU和GPU计算。
下载路径
GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet )
解压后文件结构如下 \opencv\build\x64\vc15\bin的两个dll文件 opencv_ffmpeg3415_64.dll和opencv_ffmpeg3415_64.dll复制到D:\darknet\build\darknet\x64 2、vs2022项目配置
用vs2022打开E:\darknet\build\darknet下darknet.sln文件 点击确定使得重定向到vs2015
点击项目-----属性 3.修改包含目录和库目录
添加opencv3.4的包含目录和库目录按照自己的opencv3.4的路径 包含目录
C:\Program Files (x86)\opencv\build\include
C:\Program Files (x86)\opencv\build\include\opencv
C:\Program Files (x86)\opencv\build\include\opencv2库目录
C:\Program Files (x86)\opencv\build\x64\vc14\lib4.附加依赖项添加附加依赖项按照自己的opencv3.4的路径
示范
C:\Program Files (x86)\opencv\build\x64\vc14\lib\opencv_world3415d.lib需要添加的是opencv_world3415d.lib 5、 修改darknet.vcxproj darknet\build\darknet下右键可以txt打开
ctrlf搜索 11.1 全部改成 11.6因为我们的CUDA版本是11.6
6、拷贝CUDA文件
1.将NVIDIA CUDA的安装程序.exe文件数据解压到一个指定文件夹中最好是新建一个文件夹CUDA解压后会出现很多文件这样方便查找 2.将第一个路径下的文件直接拷贝到第二个路径下的文件夹中
7、生成darknet.exe文件
出现大量警告并且不断提示getopt.c无法打开尝试多种方法占时未解决。一直以为是外部资源未正常引入查看darknet结构发现其文件下降getopt.h/c文件丢失
解决办法将配置环境统一改为vs2019下载getopt.zip解压后直接将getopt.c getopt.h添加到项目中即可 报错 错误 LNK1104 无法打开文件“cudnn.lib” darknet F:\darknet-master\darknet-master\build\darknet\LINK 1
查看项目属性依赖库地址发现没有cudnn.lib这一项 将E:\cudnn-windows-x86_64-8.4.0.27_cuda11.6-archive\cudnn-windows-86_64-8.4.0.27_cuda11.6-archive\lib复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib\x64即可 E:\cudnn-windows-x86_64-8.4.0.27_cuda11.6-archive\cudnn-windows-86_64-8.4.0.27_cuda11.6-archive\lib复制以下内容到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib\x64即可 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib\x64 点击重新生成 成功
将会在 F:\darknet-master\darknet-master\build\darknet\x64文件夹下生成darknet.exe至此yolov4环境搭建成功 三、测试安装
将权重文件赋值到F:\darknet-master\darknet-master\build\darknet\x64 运行如下命令在F:\darknet-master\darknet-master\build\darknet\x64目录下
darknet.exe detector test cfg\coco.data cfg\yolov4.cfg yolov4.weights
显示无法找到 zlibwapi.dll. Please make sure it is in your library path! zlibwapi.lib文件放到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\lib zlibwapi.dll文件放到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\bin 路径文件已经解决但仍出现错误显示如下
无法打开 yolov4.weights文件 缺少如下两个文件 将其复制到 F:\darknet-master\darknet-master\build\darknet\x64目录下 再次运行尝试 测试照片成功
测试视频
darknet.exe detector demo cfg\coco.data cfg\yolov4.cfg yolov4.weights
driving.mp4 无法访问媒体摄像头显示无法打开文件
cap_ffmpeg_impl.hpp打开定位到966代码如下
当err值小于0时输出error opening file与文件名并返回goto语句err值由avformat_open_input与av_open_input_file函数决定 判断为opencv无法正常打开mp4文件引起。
--------------------------------------------------------------------------------------------------------------------------
单独测试opencv在vs2019中以相同的方法配置一个项目在此一定要注意配置的环境为Debug x64而不是x86否则将会出现以下错误 再次运行出现以下错误
LNK2019 错误 LNK2019 无法解析的外部符号 void __cdecl cv::imshow(class cv::String const ,class cv::debug_build_guard::_InputArray const ) ( 将debug x64的属性表复制到release x64再次运行又可以运行了
有点懵。。。 --------------------------------------------------------------------------------------------------------------------------
视频问题的解决我只能说是人傻了在浏览F:\darknet-master\darknet-master\build\darknet\x64文件夹时候突然记起来driving.mp4并没有指定文件路径。。。。。。未对项目的结构和流程做分析的后果。。。
将driving.mp4单独放一个文件夹下使用下述命令不要包含中文路径防止报错
darknet.exe detector demo cfg\coco.data cfg\yolov4.cfg yolov4.weights E:\yolov4_mp4\driving.mp4 resultok 或将driving.mp4直接放在F:\darknet-master\darknet-master\build\darknet\x64下使用下述命令
darknet.exe detector demo cfg\coco.data cfg\yolov4.cfg yolov4.weights driving.mp4
但是不建议这样做还是分开好
至此视频问题解决。在网上东找办法西找办法就是自己没有想办法。。。。解决一切的根源还得从自己入手。。。。
四、标定数据集
这段写的有些乱工具包一直下载不下来一直在尝试
labelimg 是一个可视化的图像标定工具。它是用Python编写的并将Qt用于其图形界面。批注以PASCAL VOC格式ImageNet使用的格式另存为XML文件。此外它还支持YOLO格式。Faster R-CNNYOLOSSD等目标检测网络所需要的数据集均需要借此工具标定图像中的目标。
1、安装labelimg与pyqt5 pyqt-tools
1、安装labelimg法一
使用pip安装开始菜单选择anaconda3-anaconda prompt进入命令行。
输入pip --version检查pip是否安装成功 在命令行窗口中依次输入下列代码安装labelimg依赖的第三方库。
pip install PyQt5
pip install pyqt5-tools
pip install lxml
输入pip install PyQt5显示如下pyQt5已经安装版本为12.11
目录为f:\anaconda3\lib\site-packages (from PyQt5) 输入pip install pyqt5-tools pip下载报错应该是网站访问超时的原因更换镜像
pip install xxxx -i http://pypi.douban.com/simple --trusted-hostpypi.douban.com阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
更换阿里云镜像还是不行。或使用如下命令没有尝试
pip install lightgbm -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 2、安装labelimg法二 直接在GitHub上下载labelimgGitHub - HumanSignal/labelImg: LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source data labeling tool for images, text, hypertext, audio, video and time-series data. 下载将zip解压用Anaconda安装以管理员身份运行Anaconda Prompt并到labelImg-master所解压目录下执行命令
命令如下
conda install pyqt5
pyrcc5 -o libs/resources.py resources.qrc
python labelImg.py在运行时pyrcc5 -o libs/resources.py resources.qrc还出现了错误仍要安装pip install pyqt5-tools 两种安装labelimg的方法都需要pyqt5 pyqt5-tools
尝试了好多方法安装pip install pyqt5-tools的问题依旧没有解决。应该是python11.1与pip版本太高的原因。(在pyqt5-tools的安装深度学习)中将此问题解决。
继续使用法二进行安装labelimg因为我已解压labelimg原文件在pyqt5与pyqt5-tools安装好后以管理员身份运行Anaconda Prompt并到labelImg-master目录下执行命令pyrcc5 -o libs/resources.py resources.qrc与python labelImg.py执行结果如下
注意此时已经完全安装了pyqt5与pyqt5-tools 将会打开labelimg.py 此时labelimg标注工具安装成功。
2、添加自定义类别
修改文件labelImg-master\data\predefined_classes.txt
原文件默认类别名如下 修改为
ball
messi
trophy
此时将labelimg重启否则类别文件有错误即在 以管理员身份运行Anaconda Prompt并到labelImg-master目录下执行命令python labelImg.py即可 3、使用labelImg进行图像标注
labelimg的标注模式分为VOC和YOLO两种两种模式下生成的标注文件分别为.xml文件和.txt文件因此在进行标注前需要优先选择好标注的模式。
标注教程【教程】标注工具Labelimg的安装与使用 - 知乎 (zhihu.com)
标注效果如下 使用VOC标注模式将其保存为xml格式
xml文件内容如下 对其xml中参数解释如下其中hightwidth为图片的最大高、宽而XminYminXmaxYmax分别是所标定类别图形的坐标。 使用YOLO模式将其保存为.txt内容如下
2 0.478125 0.503704 0.214583 0.992593class_id为2因为在其classes.txt文件下trophy在第2行(count从0开始) 与VOC的转换关系如下 也可以使用python对其两者进行转换
size为照片最大尺寸box为标注框尺寸
box[0]xmin box[1]: xmax box[2]: ymin box[3]: ymax
def convert(size, box) :dw 1./size[0]dh 1./size[1]x (box[o] box[1])/2.0y (box[2] box[3])/2.0w box[1] - box[0]h box[3] - box[2]X x*dww w*dwy y*dhh h*dhreturn (x,y,w,h) 4、组织自己的数据集
1、下载项目文件
项目文件已提前下载好从百度网盘下载到F:\darknet-master\darknet-master\build\darknet\x64目录下并解压 2、解压建立或自行建立数据集
使用PASCAL VOC数据集还有 ImageNet 、 COCO后期介绍的目录结构:
建立文件夹层次为 D:\darknet\build\darknet\x64\VOCdevkit\ VOC2007 VOC2007下面建立两个文件夹 VOC2007下面建立两个文件夹Annotations和JPEGImages
JPEGImages放所有的训练和测试图片
Annotations放所有的xml标记文件 3、生成测试集与训练集文件
F:\darknet-master\darknet-master\build\darknet\x64执行python genfiles.py
python genfiles.py
在VOCdevkit \ VOC2007目录下可以看到生成了文件夹labels 同时在darknet下生成了两个文件 2007_train.txt和2007_test.txt。
在执行后未抛出异常并没有在VOCdevkit \ VOC2007文件夹下生成labels文件夹打开genfiles.py查看第87、88行如果没有指定目录则在当前目录下生成VOCdevkit\\VOC2007\\labels94行probo值为一个1到100的随机整数并且将其打印显示。该变量不受其他变量控制而在控制台既没有抛出异常也没有打印显示此时可判断为python执行环境有误。直接执行python发现并没有显示出信息断定python环境变量有误。 环境变量添加如下 F:\anaconda3\Scripts下有python依赖包的.exe文件 F:\anaconda3\下具有python.exe。
重新运行python genfiles.py 正常输出、文件夹产生 打开..\\darknet-master\build\darknet\x64下2007_train.txt和2007_test.txt分别给出了训练图片文件和测试图片文件的列表含有每个图片的路径 和文件名。 即将源数据集分为两组一组为测试集一组为训练集。
另外在VOCdevkit \ VOC2007\ImageSets\Main目录下生产了两个文件test.txt和train.txt分别给出 了训练图片文件和测试图片文件的列表但只含有每个图片的文件名不含路径和扩展名。 labels下的文件是images文件夹下每一个图像的yolo格式的标注文件这是由annotations的xml标注文 件转换来的。即通过 执行genfiles.py 文件将annotations的xml标注文 件转成为labels文件夹下的yolo格式标注文件。
最终训练只需要2007_train.txt2007_test.txtlabels下的标注文件和 VOCdevkit \VOC2007\JPEGImages下的图像文件。
即只需要训练集、测试集的路径与其yolo标注格式文件和原图像。 五、修改配置文件
1、新建data\voc.names文件
可以复制data\voc.names再根据自己情况的修改可以重新命名如data\voc-ball.names 解释如下
voc.names文件用来存放标签的名字
2、新建 data\voc.data文件
可以复制data\voc.data再根据自己情况的修改可以重新命名如data\voc-ball.data
voc.data路径为F:\darknet-master\darknet-master\build\darknet\x64\data\voc.data
解释如下 classes 20 # 类别总数 train /home/xxx/darknet/scripts/train.txt # 训练集样本txt文件 valid /home/xxx/darknet/scripts/2007_test.txt # 验证集样本txt文件 names data/voc.names # 类别名称 backup backup # 权重保存路径 重要的三个配置文件voc-ball.names类别名称文件位于data/下、voc-ball.data(位于x64/下)、cfg\yolov4-voc.cfg..//x64/cfg
3、新建cfg\yolov4-voc.cfg
可以复制cfg\yolov4-custom.cfg再根据自己情况的修改可以重新命名cfg\yolov4-ball.cfg
batch16 subdivisions8 如果显存溢出改为16 max_batches 4000 steps3200, 3600 在cfg\yolov4-ball.cfg文件中三个yolo层和各自前面的convolutional层的参数需要修改
三个yolo层都要改yolo层中的classes为类别数每一个yolo层前的convolutional层中的filters 类 别5* 3
例如
yolo层 classes1 convolutional层 filters18
yolo层 classes2 convolutional层 filters21
yolo层 classes4convolutional层 filters27 要注意是[yolo]层而不是[net]层注意是三个yolo层三个yolo层和各自前面的convolutional层的参数需要修改共查找到line 967、1055、1143为[yolo]层
总结 六、训练模型单目标 足球
1、下载预训练权重文件
将预训练权重文件yolov4.conv.137放置在F:\darknet-master\darknet-master\build\darknet\x64目录下
出现的问题
路径问题老生常谈了改好了路径问题主要集中在voc-ball.data文件中
报错cuDNN hasnt found FWD algo for convolution: No error subdivisions大小和batch大小需要的内存关系: 将batch设置为32、subdivisions设置为32、width416、height416时正常运行了一下。
改来改去都没有改好.........
偶然当我试着把width、height改为3xx时候忘记其值必须为32的倍数将原值352将其改为320此时开始训练训练时间27个小时左右因为不知其训练时间由何参数决定时间也许很长但总比无法训练好。。。。 修改cfg\yolov4-ball.cfg参数训练时间将至6小时
batch32、subdivisions64减小了内存压力
width320、height320
max_batches 6000最大迭代次数 avg loss值为0.09左右迭代次数2000左右时停止了训练avg loss波动较小map图如下:
大约训练了4个小时 终端输出如下 2、训练网络
darknet.exe detector train data\voc-ball.data cfg\yolov4-ball.cfg
yolov4.conv.137 -map
如需要显示训练过程的map变化在命令末尾加-map
3、训练建议 七、测试训练模型
在测试前将yolov4-ball.cfg中batch32、subdivisions64的值均改为1
测试训练模型测试照片与视频均放在x64/testfiles/每迭代1000次会保存一次权重文件权重文件路径为x64/backup/我们使用最终的权重文件测试即yolov4-ball_last.weights 单目标
darknet.exe detector test data\voc-ball.data cfg\yolov4-ball-test.cfg backup\yolov4-ball_last.weights testfiles\ball-1.jpg 多目标
darknet.exe detector test data\voc-ball.data cfg\yolov4-ball-test.cfg backup\yolov4-ball_last.weights testfiles\ball-1.jpg 测试视频不知道为什么昨晚测试时平均帧率在89而今天只有12
darknet.exe detector demo data\voc-ball.data cfg\yolov4-ball-test.cfg backup\yolov4-ball_last.weights testfiles\ball-test.mp4 八、性能统计
统计map
统计 mAPIoU0.50:
darknet.exe detector map data\voc-ball.data cfg\yolov4-ball-test.cfg backup\yolov4-ball_last.weights
统计 mAPIoU0.75:
darknet.exe detector map data\voc-ball.data cfg\yolov4-ball-test.cfg backup\yolov4-ball_last.weights -iou_thresh 0.75 性能统计后续再学习 Conclusion
yolov4的环境配置、模型训练至此结束下来先对其训练过程中对文件的操作流程进行学习后学习cfg文件的参数含义、性能统计指标、后续再训练多目标用爬虫采数据集最后再从底层逻辑学起。 时间越来越紧了逐渐要和计算机渐行渐远花了3晚上搞出来个这因缺乏基本的概念与认识思维混乱中间不断错不断改可谓举步维艰最终也算是搞出来了。这次写完下次学习就不知何时了。
秋风是清新的但总夹杂着忧伤一切都静悄悄的转眼我也已大三寄蜉蝣于天地渺沧海之一粟又试问百川东到海何时复西归 ----2023/10/17