yolo-v3模型测试及测试结果转化

文章目录

  • yolo-v3模型测试及测试结果转化
    • 1.制作2019_test.txt文件
    • 2. 修改./darknet/cfg/voc.data文件
    • 3. 修改./darknet/cfg/yolov3-voc.cfg文件
    • 4. 执行测试语句
    • 5. 转换预测结果格式

训练完成生成模型后,进行模型测试。对测试集数据进行检测,得到检测结果

1.制作2019_test.txt文件

像制作训练集时生产2019_train.txt(文件内容为包含所有训练图片的路径和文件名)一样,制作2019_test.txt文件(文件内容为包含所有测试图片的路径和文件名)。

采用以下程序来生成测试集的 test.txt 文件,其中包含每个测试样本的路径和文件名,注意此处包含后缀

# coding=utf-8
import os
from os import listdir, getcwd
from os.path import join
if __name__ == '__main__':  # 只有在文件作为脚本文件直接执行时才执行下面代码source_folder='Your Path' #图片保存的路径dest='Your Path/test.txt' #写有图片的名字的路径file_list=os.listdir(source_folder)#获取各图片的名称       test_file=open(dest,'a')    #追加写打开              count = 0              for file_obj in file_list:  count += 1                file_path=os.path.join(source_folder,file_obj) #路径拼接  指向 图片文件的路径# file_name,file_extend=os.path.splitext(file_path) #分离文件名与扩展名 file_name为去掉扩展名的图片名称 test_file.write(file_path+'\n')  #写入去掉扩展名的文件名名称test_file.close() #关闭文件

然后在该.py文件的路径下,执行如下命令:

python create_test_txt.py

2. 修改./darknet/cfg/voc.data文件

修改./cfg/voc.data文件中的valid部分,将其设置为第1步中生成的test.txt路径。

classes= # 不用改
train  = # 不用改
valid  = /Your Path/test.txt
names = # 不用改
backup = # 不用改`在这里插入代码片`

3. 修改./darknet/cfg/yolov3-voc.cfg文件

将测试模式打开,将训练模式关闭,如下:

[net]
# Testing
batch=1
subdivisions=1
# Training
# batch=64
# subdivisions=16

4. 执行测试语句

在命令窗口的./darknet路径下,执行以下语句:

./darknet detector valid cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights

执行完毕之后会在./darknet/result/ 路径下生成若干个txt文件(个数和类别数一致),名称为comp4_det_test_[class_name].txt,这便是预测结果文件。

5. 转换预测结果格式

通常我们希望预测结果保存在一个个以图片名称为名字的txt文件中,例如,我所期望的文件格式如下:

那么我们可以使用如下程序进行格式转换:
注意:
1)需要将第4步生成的若干个txt文件重命名为:类名.txt
2)将这些类名.txt统一放到一个空文件夹下,即下面程序中的 ‘Your Path\raw_txt’
3)创建一个用来存放转换后txt文件的文件夹,即下面程序中的 ‘Your Path\converted_txt’

import osdef creat_mapping_dic(result_txt, threshold=0.0):  # 设置一个阈值,用来删掉置信度低的预测框信息mapping_dic = {}  # 创建一个字典,用来存放信息txt = open(result_txt, 'r').readlines()  # 按行读取TXT文件for info in txt:  # 提取每一行info = info.split()  # 将每一行(每个预测框)的信息切分开photo_name = info[0]  # 图片名称probably = float(info[1])  # 当前预测框的置信度if probably < threshold:continueelse:xmin = int(float(info[2]))ymin = int(float(info[3]))xmax = int(float(info[4]))ymax = int(float(info[5]))position = [xmin, ymin, xmax, ymax]if photo_name not in mapping_dic:  # mapping_dic的每个元素的key值为图片名称,value为一个二维list,其中存放当前图片的若干个预测框的位置mapping_dic[photo_name] = []mapping_dic[photo_name].append(position)return mapping_dicdef creat_result_txt(raw_txt_path, target_path, threshold=0.0):  # raw_txt_path为yolo按类输出的TXT的路径 target_path 为转换后的TXT存放路径all_files = os.listdir(raw_txt_path)  # 获取所以的原始txtfor each_file in all_files:  # 遍历所有的原始txt文件,each_file为一个文件名,例如‘car.txt’each_file_path = os.path.join(raw_txt_path, each_file)  # 获取当前txt的路径map_dic = creat_mapping_dic(each_file_path, threshold=threshold)  # 对当前txt生成map_dicfor each_map in map_dic:  # 遍历当前存放信息的字典target_txt = each_map + '.txt'  # 生成目标txt文件名target_txt_path = os.path.join(target_path, target_txt)  # 生成目标txt路径if target_txt not in os.listdir(target_path):txt_write = open(target_txt_path, 'w')  # 如果目标路径下没有这个目标txt文件,则创建它,即模式设置为“覆盖”else:txt_write = open(target_txt_path, 'a')  # 如果目标路径下有这个目标txt文件,则将模式设置为“追加”class_name = each_file[:-4]  # 获取当前原始txt的类名txt_write.write(class_name)  # 对目标txt写入类名txt_write.write('\n')  # 换行for info in map_dic[each_map]:  # 遍历某张图片的所有预测框信息txt_write.write(str(info[0]) + ' ' + str(info[1]) +' ' + str(info[2]) + ' ' + str(info[3]) + ' ')  # 写入预测框信息txt_write.write('\n')  # 换行creat_result_txt('Your Path\\raw_txt','Your Path\converted_txt',threshold=0.1)

运行完毕后,在Your Path\converted_txt文件夹中会产生每个图片对应得检测结果

至此完成了 基于yolo-v3 针对自己数据集得检测与测试 结果转化 。

yolo-v3模型测试及测试结果转化相关推荐

  1. Win10 64位下 darknet YOLO V3配置,视频测试及结果保存

    环境如下: VS2015社区版 OpenCV3.4.0 (下载win pack链接:https://www.opencv.org/opencv-3-4.html) Win10 64位,i7-6700 ...

  2. 目标检测:Faster-RCNN与YOLO V3模型的对比分析

    1 目标检测的背景 作为机器视觉领域的核心问题之一,目标检测的任务是找出图像中所有的目标(物体),并确定它们的位置和大小.由于各类物体有不同的外观,形状,姿态,加上成像时光照,遮挡等因素的干扰,目标检 ...

  3. YOLO v3模型详细解读

    目录 前言 1.网络架构 1.1 backbone网络 2.Bounding Box Prediction-边界框预测 2.1 多尺度预测 2.2 anchor网格偏移量预测 2.3 Yolo Hea ...

  4. 对象检测目标小用什么模型好_自动驾驶目标检测- YOLO v3 深入解析

    从2016年 Joseph Redmon 发布第一代YOLO开始,YOLO已经更新四代了,凭借着在一个网络模型中完成对图像中所有对象边界框和类别预测的独特创新,成为现今使用最广泛也是最快的对象检测算法 ...

  5. 【Pytorch深度学习50篇】·······第五篇:【YOLO】【1】----- YOLO V3 V4 V5的模型结构

    第四篇,我们已经简单的过了一个segmentation网络,下面我们要进入一个相对要复杂一点的系列了,它也是用于目标检测的,与segmentation不同的是,这个网络会回归出目标的位置和大小.YOL ...

  6. 探索 YOLO v3 实现细节 - 第6篇 预测 (完结)

    YOLO,即You Only Look Once的缩写,是一个基于卷积神经网络(CNN)的物体检测算法.而YOLO v3是YOLO的第3个版本,即YOLO.YOLO 9000.YOLO v3,检测效果 ...

  7. Darknet53(YOLO V3骨干网络)

    YOLO V3算法使用的骨干网络是Darknet53.Darknet53网络的具体结构如图所示,在ImageNet图像分类任务上取得了很好的成绩.在检测任务中,将图中C0后面的平均池化.全连接层和So ...

  8. 【darknet速成】Darknet图像分类从模型自定义到测试

    欢迎来到专栏<2小时玩转开源框架系列>,这是我们第12篇文章,前面已经说过了caffe,tensorflow,pytorch,mxnet,keras,paddlepaddle,cntk,c ...

  9. 目标检测 YOLO v3 训练 人脸检测模型

    YOLO,是You Only Look Once的缩写,一种基于深度卷积神经网络的物体检测算法,YOLO v3是YOLO的第3个版本,检测算法更快更准. 本文源码:https://github.com ...

最新文章

  1. VS2010 编译 QT4.8.7 x64
  2. Web 前端,易学难精,没有拿手的实战项目,怎么办?
  3. php 接口数组排序,php 数组排序
  4. mysql 修改表结构提示 MySQL said: Table is read only
  5. java中File类应用:遍历文件夹下所有文件
  6. Codeforces - 961E Tufurama
  7. P4139-上帝与集合的正确用法【欧拉定理】
  8. 初中学历在辽宁学计算机,在辽宁省实验中学学习是怎样一番体验?
  9. 红亚科技联手董付国老师开启Python实训教育新篇章
  10. 防止html网页被f12抓取,JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码...
  11. mysql实现了四种通信协议_MySQL 通信协议
  12. linux能运行关关采集器吗,杰奇linux采集器,基本能用且速度还行
  13. AI教程视频《AI illustrator入门到精通》零基础自学教程教学
  14. 程序员修炼之道(第2版)
  15. 此页上的ActiveX控件和本页上的其他部分的交互可能不安全的解决办法
  16. oem和odm是什么意思?oem与odm区别是什么?
  17. 脚本中fi是什么意思
  18. C++/MFC修行之路(5)Ribbon(功能区)的使用
  19. 给2011年的MacBook Pro和MacBook Air升级到最新系统和做双系统时遇到的问题
  20. lae界面开发工具入门之介绍十--如何打包资源文件?

热门文章

  1. 实用的搜索引擎技巧-写论文资料搜索
  2. GIS十问之三:公司要求工作经验,应届生怎么办?
  3. 外贸SOHO是否要有自己的推广网站?
  4. Android.mk(一)
  5. MOT学习 - SORT算法
  6. 张国荣:去世前深受新欢旧爱拉锯战折磨(图
  7. php漏洞是什么意思,PHP程序漏洞产生的原因分析与防范方法说明
  8. 服务器托管和租用如何选择?
  9. 【美赛学习记录】模型
  10. 回首2021,展望2022(年度总结)