YOLO下一步:输出预测boundingbox做进一步处理
来源:互联网 发布:襄阳华为云计算招聘 编辑:程序博客网 时间:2024/05/15 08:23
对于我们使用yolo做一下research中的其他应用而言,最终目的肯定不是看看预测boundingbox就ok了。
具体对于我而言,就需要在得到boundingbox后再找出目标的局部信息。下面简单介绍一下如何完成。
1.修改源代码
在源代码image.c中找到draw_detections()函数,print出方框的位置即可,如下:
2.记录终端输出到文本文件
我这里使用的命令是| tee train_log.txt ,可参考:Linux中记录终端(Terminal)输出到文本文件
3.python进一步提取boundingbox并做简单处理
先看一眼输入数据(即上一步输出到文件中的数据):
可以看到有时候检测到有时候检测不到,这里我为了后面方便处理(这里我是要提取类别名为tip的box坐标并进行处理),简单处理了一下(已知每一帧有且只有一个tip,如果没有检测到则用相邻帧的坐标填充),并保存到新文件内。
代码如下:
把‘tip’的一行数据读入到dic中
i=0d={}with open('output_coordinate.txt') as f: for line in f.readlines(): if 'Objects:' in line: i=i+1 if 'tip:' in line: d[i]=line.strip()# print(i)# print(d)
若某一帧中没有检测到tip,则默认为上一帧检测到的数据d[1]=d[2]for k in range(1, i+1): if not d.get(k): d[k]=d[k-1]# print(d)
将tip数据分割为listimport refor k, v in d.items(): d[k]=re.split(r'\s+', v)# print(d)
数组重组为dict格式frames=[]probs=[]lx=[]rx=[]ly=[]ry=[]for k, v in d.items(): frames.append(k) probs.append(v[1]) lx.append(v[2]) rx.append(v[3]) ly.append(v[4]) ry.append(v[5])data = {'frames':frames, 'probs':probs, 'lx':lx, 'rx':rx, 'ly':ly, 'ry':ry,}
数据存储到DataFramefrom pandas import Series, DataFrameframes_num=1590frame = DataFrame(data, columns = ['probs', 'lx', 'rx', 'ly', 'ry'], index = list(range(1, frames_num+1)))frame.index.name = 'frames'frame.columns.name = 'coordiante'frame.head()
坐标数据保存到文本
with open('tip_coordinate.txt', 'w') as f: for j in range(frames_num): f.write(lx[j]+' '+ly[j]+' '+rx[j]+' '+ry[j]+'\n')
最后处理的结果:
0 0
- YOLO下一步:输出预测boundingbox做进一步处理
- YOLO模型 训练及预测
- 苹果下一步做什么?
- 下一步工作需要做的
- 不知道下一步做什么
- 拦截asp.net输出流做处理
- 下一步
- 下一步
- 下一步
- 下一步
- LIBSVM做回归预测
- LIBSVM做回归预测
- eviews做arma预测
- 使用 YOLO 做些好玩的事情
- YOLO
- YOLO
- YOLO
- yolo
- HTTP状态码详解
- material design风格的收缩日历
- java 用stack 实现中缀表达式转后缀
- [LeetCode]376. Wiggle Subsequence
- 动画
- YOLO下一步:输出预测boundingbox做进一步处理
- C++成员变量初始化顺序
- 基于1.1.2版本kubelet源码阅读(2)
- alloc和allocWithZone
- Apache 配置虚拟主机之3--基于IP+Port结合
- 关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种
- 【Leetcode】482. License Key Formatting
- supervivi其实挺好用的啊啊啊啊
- PLS-00905: 对象 SCOTT.QUERYEMPINFO 无效;PL/SQL: Statement ignored