不同分辨率下Apriltag识别精度测试
简 介: 通过图片扩增的方法,对于给定的测试Apriltag定位图片进行扩增,然后通过apriltag Python软件包对不同缩放比例下的图片进行检测,统计了在不同压缩比例下识别Apriltag的数量。实验结果显示,在主要包含有Apriltag图片,宽、长像素需要在100以上,才能够比较可靠的被识别。
关键词
: Apriltag,分辨率
Contents
视觉组辅助定位
§00 背景介绍
0.1 智能车竞赛智能视觉组辅助定位
在全国大学生智能车竞赛 的智能视觉组 中,利用 Apriltag进行车模辅助定位 。由于竞赛车模作品上的摄像头的分辨率相对较低(320×240),所以在实际应用中需要使用镜头角度范围相对较窄的摄像头,拍摄场地内的定位Apriltag定位码,才能够获取到足够多的像素用于定位码的识别。
▲ 图1 在半个比赛场地内的Apriltag定位立方体
在比赛场地内的Apriltag 使用的为tag25H9 系列的Apriltag码,如果分辨率比较大,可以 在获取Apriltag的空间位置的同时获取它的法线走向 。为了进一步验证Apriltag在竞赛环境中的定位特性,下面通过不同的分辨率来测试检测算法定位精度。检测使用 Python中的apriltag检测算法 。
0.2 测试方案
- 首先通过 深度学习中图片数据增强方法 对于采集到的标准Apriltag图库进行增强;
- 然后通过图片resize,获得不同分辨率下的图片;
- 利用Apriltag中的检测方法,分别统计检测后的指标;
§01 Apriltag检测
1.1 实验环境准备
Ai Studio 是百度提供的人工智能云上开发环境,云端登录后是Linux工作环境,提供 BML CodeLab Notebook的交互式开发界面。之所以选择Ai Studio,是因为自己工作所使用的Windows 7 环境太旧,在安装apriltag Python软件包过程中总是出现错误。
1.1.1 安装Apriltag软件包
在 Ai Studio Notebook环境下,安装Apriltag 软件包:
!pip install apriltag
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting apriltagDownloading https://pypi.tuna.tsinghua.edu.cn/packages/f2/e5/957bb26d575141bc25af7214c14e315c9ebb9a12ccf7c8d09ed40b59bb29/apriltag-0.0.16.tar.gz (201kB)|████████████████████████████████| 204kB 4.9MB/s eta 0:00:01
Building wheels for collected packages: apriltagBuilding wheel for apriltag (setup.py) ... doneCreated wheel for apriltag: filename=apriltag-0.0.16-cp37-cp37m-linux_x86_64.whl size=452177 sha256=0d36144f98ae62844ced9792df0dcd2a4476d12e95ed4aace765241708b35825Stored in directory: /home/aistudio/.cache/pip/wheels/7c/93/d0/f5128991a88d5609b5a87ab639a488d63f664cf5f862f26232
Successfully built apriltag
Installing collected packages: apriltag
Successfully installed apriltag-0.0.16
1.1.2 处理图片
用于测试的Apriltag图片来自于 两个对于Apriltag图片处理问题讨论 中制作的Apriltag定位立方体。
▲ 图1.1.1 用于测试Apriltag图片
- 图片的尺寸:
-
宽
:720
高
:543
1.2 检测算法
1.2.1 检测代码
atd = apriltag.Detector(apriltag.DetectorOptions(families='tag36h11 tag25h9'))
tags = atd.detect(gray)print("tags:\n{}".format(tags))for tag in tags:for c in tag.corners:cv2.circle(img, tuple(c.astype(int)), 4, (255,0,0), 2)cv2.circle(img, tuple(tag.center.astype(int)), 8, (255,0,0), 4)plt.clf()
plt.figure(figsize=(10,10))
plt.axis("off")
plt.imshow(img)
1.2.2 检测结果
下面显示了检测到的两个Apriltag的位置以及相关的参数。
▲ 图1.2.1 检测输出的Apriltag中心与四个角落
tags: [Detection(tag_family=b'tag25h9', tag_id=1, hamming=0, goodness=0.0, decision_margin=87.13029479980469, homography=array([[ 5.25277050e-01, 3.99535001e-02, 1.37315504e+00],[ 2.48140105e-01, 8.12493111e-01, 1.86261033e+00],[-1.40731593e-04, 1.15162457e-04, 6.18912300e-03]]), center=array([221.86585028, 300.94899259]), corners=array([[130.00233459, 129.04534912],[313.23223877, 218.81126404],[314.49154663, 474.27890015],[137.75471497, 376.56430054]])), Detection(tag_family=b'tag25h9', tag_id=1, hamming=0, goodness=0.0, decision_margin=55.70514678955078, homography=array([[-6.66538170e-01, -3.00824606e-02, -2.71129491e+00],[ 2.11909359e-01, -7.69185216e-01, -1.82710635e+00],[-9.33389035e-05, -8.40349506e-05, -5.91966396e-03]]), center=array([458.01500415, 308.65034919]), corners=array([[350.84857178, 221.13659668],[564.64306641, 142.6912384 ],[558.94610596, 391.07223511],[351.05123901, 475.13195801]]))]
应用上面的代码对于【图1】进行检测,无法检测到任何Apriltag。
1.3 Apriltag图片扩增
对上面测试的Apriltag图片通过旋转、上下左右翻转、亮度、对比度的变化等方法进行扩增,总数达到27张图片。
▲ 图 Apriltag增强后的图片
1.3.1 处理扩增图片
def procdir(dirstr):filedim = os.listdir(dirstr)tagdim = []for f in filedim:fn = os.path.join(dirstr, f)if fn.find('.jpg') < 0: continueimg = cv2.imread(fn)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)tags = atd.detect(gray)tagdim.append(len(tags))return tagdimimgdir = '/home/aistudio/work/apriltag'
dim = procdir(imgdir)
print("len(dim): {}".format(len(dim)))
所有图片识别的结果为: 27个。这说明图片本扩增对于Apriltag检测没有影响。
1.4 不同尺寸识别
1.4.1 处理代码
from paddle.vision.transforms import Resize
from tqdm import tqdmdef resizeImage(indir, outdir, ratio):fdim = os.listdir(outdir)for f in fdim:fn = os.path.join(outdir, f)if os.path.isfile(fn):os.remove(fn)fdim = os.listdir(indir)for f in fdim:fn = os.path.join(indir, f)if not os.path.isfile(fn): continueimg = cv2.imread(fn)imgsize = img.shapewidth = int(imgsize[1] * ratio)height = int(imgsize[0] * ratio)img1 = Resize((height, width))(img)outfn = os.path.join(outdir, f)cv2.imwrite(outfn, img1)return procdir(outdir)outdir = '/home/aistudio/GIF'
indir = '/home/aistudio/work/apriltag'ratiodim = linspace(-2, 0, 100)
tagsdim = []for r in tqdm(ratiodim):rr = exp(r*log(10))ret = resizeImage(indir, outdir, rr)tagsdim.append(sum(ret))print(tagsdim)
1.4.2 识别精度
下面显示了将原图进行缩小之后对应的Apriltag识别个数的变化。横坐标为缩小倍数对应的log10(r)\log _{10} \left( r \right)log10(r),纵坐标对应的识别出的Apriltag的个数总和。
当压缩比例为0.226时,识别错误率开始出现,当压缩比例小于0.077时,便基本无法识别所有的图片中的Apriltag了。
▲ 图1.4.1 不同尺寸下的识别数量
下面显示了原始图像以及压缩比率分别为0.226、0.077对应的图片相关尺寸。
▲ 图1.4.2 原图与压缩后的图片
※ 测试结果 ※
通过图片扩增的方法,对于给定的测试Apriltag定位图片进行扩增,然后通过apriltag Python软件包对不同缩放比例下的图片进行检测,统计了在不同压缩比例下识别Apriltag的数量。实验结果显示,在主要包含有Apriltag图片,宽、长像素需要在100以上,才能够比较可靠的被识别。
■ 相关文献链接:
- 智能车竞赛相关的教高司公函:公函[2005]201号文、教高司[2005]13号
- 第十七届智能车竞赛智能视觉组比赛细则
- 第十七届全国大学生智能车竞赛智能视觉组规则补充说明(1)
- APRILTAG 标准图片:TAG25H9
- 根据Apriltag进行角度和距离检测
- 基于Python下的Apriltag检测
- 深度学习中图片数据增强方法
- 搭建AI Studio 中Python开发环境
- 两个对于Apriltag图片处理问题讨论
● 相关图表链接:
- 图1 在半个比赛场地内的Apriltag定位立方体
- 图1.1.1 用于测试Apriltag图片
- 图1.2.1 检测输出的Apriltag中心与四个角落
- 图 Apriltag增强后的图片
- 图1.4.1 不同尺寸下的识别数量
- 图1.4.2 原图与压缩后的图片
不同分辨率下Apriltag识别精度测试相关推荐
- 模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度
模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度 发表于2015-03-30 23:46| 6209次阅读| 来源CSDN| 8 条评论| 作者霍强 模式识别微软亚洲研究院微软OCR文字 ...
- 怎么测试本地网页在不同分辨率下电脑显示效果_4K商用超值利器 飞利浦272P7VPTKEB显示器评测...
随着4K显示器的价格不断走低,越来越多的电脑用户已经拥有了这种超高分辨率显示器.此次评测为大家带了的飞利浦272P7VPTKEB就是一款物美价廉的产品,它专为商用办公而设计,并且兼顾了不错的影音娱乐效 ...
- 苹果申请声波屏下指纹识别专利 精度足以取代Touch ID
本文讲的是 苹果申请声波屏下指纹识别专利 精度足以取代Touch ID, 据 AppleInsider 北京时间 8 月 29 日报道,当地时间周二,美国专利和商标局授予苹果一项声波指纹成像技术专利, ...
- Screenfly – 各种设备的屏幕和分辨率下快速测试网站
Screenfly 让你能够在各种设备的屏幕和分辨率下查看你的网站.输入网址,并点击GO开始浏览网页.Screenfly 可以使用代理服务器来模拟设备,当您查看您的网站,代理服务器模仿您所选择的设备的 ...
- 全球人脸识别精度一年提高75.6%,拉动全球安防市场超高增长
来源:AI 科技评论 摘要:有「工业界黄金标准」之称的美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)最近公布了全球人 ...
- 细粒度图像分类_支付宝AI大幅提升细粒度图像分类识别精度:一眼看穿万物细微差异...
近日,计算机视觉A类顶级会议CVPR 2020开幕在即, 由全球最大机器学习平台Kaggle承办的FGVC(Fine-Grained Visual Categorization,细粒度图像分类)全球挑 ...
- 支付宝AI大幅提升细粒度图像分类识别精度,一眼看穿万物细微差异
近日,计算机视觉A类顶级会议CVPR 2020 开幕在即, 由Kaggle承办的FGVC(Fine-Grained Visual Categorization,细粒度图像分类)全球挑战赛结果揭晓,支付 ...
- [病虫害识别|博士论文]非结构环境下病虫害识别方法研究
概述 提出一种基于级联卷积神经网络的植物病害识别方法 提出一种融合农田多源环境信息的害虫监测方法 提出一种新的目标检测损失函数解决特征冲突问题 本文研究的主要方面在于特征提取.(其他部分沿用目前最全面 ...
- (13)[Xamarin.Android] 不同分辨率下的图片使用概论
原文 [Xamarin.Android] 不同分辨率下的图片使用概论 设计Android App的时候,其尺寸众多也是一个挑战之一.要针对不同尺寸设计Android App时,就要先来了一下dpi(d ...
最新文章
- #每天一种设计模式# 模板方法
- c莫比乌斯函数_代佳璇缘起一条莫比乌斯环,我爱上了难缠的数学!
- 常用的正则表达式(方便自己看)
- Failed to initiate service connection to simulator
- 处理时间_4_计算时间列所在的周的序号
- List中subList方法抛出异常java.util.ConcurrentModificationException原理分析
- resources.arsc格式(包-类型-资源项)
- mysql 检查_检查MySQL的健康状况
- IMail邮件服务-1
- 明明不胖,为什么你一直都喊着要减肥?
- python入门三剑客_python数据分析三剑客基础之matpoltlib初解
- bzoj3262: 陌上花开 树套树
- java 中英日期转换器_Java SimpleDateFormat中英文时间格式化转换详解
- matlab图像取样和量化,数字图像基础之图像取样和量化
- Qt之Base64编解码
- Lifeline功能介绍04——个人课程的查看及管理
- 【LR/PS插件】胶片颗粒调色光晕视觉效果工具 Optics 2022.0.1 Win
- Java对象关系映射(ORM)
- python自学到大牛_如何才能自学成为 Python 大牛?
- ArcGIS Server Felx API接入E都市地图