当前位置: 首页 > 编程日记 > 正文

【AI】dlib中图像标注工具 imglab 详细说明

一、基本用法

imglab是一个在图像上标注矩形的工具。基本方法
1> 获取图片列表:./imglab -c mydataset.xml /tmp/images,/tmp/images为保存图像的文件夹
2> 标注每个图片:./imglab mydataset.xml,使用shift+鼠标左键拖动来选择目标
3> 修改标注:如果要忽略已经标注的框,双击框,然后按下i,将会忽略该框"ignore"

二、imglab图像界面操作详解
1、启动imglab

./imglab -c mydataset.xml /tmp/images
启动和的界面如下:
在这里插入图片描述

2、编辑标签

应用程序顶部的“Next label”字段将为新矩形提供标签。在此处先编辑标签。
在这里插入图片描述

3、标注图像

通过按住shift键、单击鼠标左键并拖动来添加一个新的矩形。在矩形右下角显示,编辑好的标签。
在这里插入图片描述

4、编辑标签小技巧

通过按tab键快速编辑下一个Label字段的内容。

5、删除标注的矩形

双击一个矩形,选中它,按delete键删除它。

6、主动忽略

在双击左键,选中矩形后,按下i或END键将其标记为忽略。忽略的矩形上显示一个X。
在这里插入图片描述

7、删除整张图像

选中左边列表要删除的图像,并按Alt+d删除图像。

8、右键标注

首先在启动imglab时,加上命令行参数–parts,例如:–parts “leys reye nose mouth”;
然后选择一个矩形后,单击右键,将出现一个弹出菜单,选择一个标签来标记对象。
在这里插入图片描述

9、切换到下一张或前一张

按下down或s键选择列表中的下一个图像,按up或w键选择前一个图像。

10、图像缩放

按住ctrl,然后滚动鼠标滚轮来缩放。当放大后出现滚动条后,左键单击然后拖动,可以拖动图像。

11、修改标签

按住ctrl并左键单击一个矩形,它将从“Next label”字段中获得标签。

12、修改矩形边框

在将要修改的边框上,按住shift + 右键,然后拖动可以移动选中的边框。

13、快速标注

按住ctrl并按down或up键,将矩形标签从一个图像传播到下一个图像,同时跳过空白图像。
同样,按住ctrl+shift将通过视觉跟踪算法将整个框从一个图像传播到下一个图像,这在连续图像,如一段视频连续截屏的图片有帮助
比如,先标注了一张人脸:
在这里插入图片描述
此时按下 Ctrl+Shift+“方向键下”组合键,将会根据视频跟踪算法,自动标注下一张,如图:
在这里插入图片描述

14、在图像之间跳转

在键盘上输入一个数字将跳转到特定的图像。(从当前图像算起?<不太会用>)

15、将当前图像直方图均衡化

按下e键来切换图像直方图均衡化。直方图均衡化的图片如下
在这里插入图片描述

三、imglab命令行参数详解
Usage: imglab [options] <image files/directories or XML file>
Options:-h                            Displays this information. -v                            Display version. Creating XML files:-c <arg>          创建一个名为<arg>的XML文件,列出一组图像。--convert <arg>   将外部图像注释从<arg>格式转换为imglab格式。 支持的格包括: pascal-xml, pascal-v1, idl. -r                递归搜索目录中的图像。Cropping sub images:--crop-size <arg>  和--resample一起使用, 整个裁剪后的图像将<arg>倍于对象的宽度  (default 2.5). --cropped-object-size <arg>   和--resample一起使用, 使裁剪对象包含<arg>像素 (default 10000). --min-object-size <arg>       和--resample一起使用, 跳过小于<arg>像素的对象 (default 1). --one-object-per-image        和--resample一起使用, 每个图像只包含一个不可忽略的对象 (i.e. the central object). --resample    裁剪出以数据集中每个对象为中心的图像。输出是一个新的XML数据集。Editing/Transforming XML datasets:--add <arg1> <arg2>           将图像元数据从<arg1>添加到<arg2>。如果两个文件中都有图像标记,则删除<arg2>中的图像标记,并用<arg1>中的图像标记替换。结果保存到merged.xml中,并且不修改<arg1><arg2>文件。--box-images                  为包含整个图像的每个图像添加一个框。--cluster <arg>               将XML文件中的所有对象聚集到<arg>不同的集群中并保存结果 cluster_###.xml and cluster_###.jpg files. --flip <arg><arg> XML文件中读取一个XML图像数据集,并输出数据集的左右翻转版本和一个附带的名为flipped_<arg>的翻转XML文件。我们还在翻转后调整对象部件标签,使新翻转的数据集具有与源数据集相同的平均部件布局。--flip-basic <arg> 这个选项就像-flip,只是我们翻转后不调整任何对象部件标签。相反,这些部分只是简单地镜像到翻转的数据集。--ignore <arg>     将标记为<arg>的框标记为忽略。生成的XML文件作为单独的文件输出,而原始文件不进行修改。--jpg               当将图像保存到磁盘时,将它们写成jpg文件而不是png。 --parts <arg>       显示器将允许图像部分被标记。允许的部件集由<arg>定义,它应该是一个用空格分隔的部件列表。--rename <arg1> <arg2>  将所有<arg1>的标签重命名为<arg2>。--rm-if-overlaps <arg>   如果标记为<arg>的框与未标记为<arg>的框重叠,则删除所有标记为<arg>的框,并将结果保存到一个新的XML文件中。--rm-other-labels <arg>  删除所有未标记为<arg>的框,并将结果保存到一个新的XML文件中。--rmdiff     对于标记为difficult的框,将忽略的标志设置为true。--rmdupes    从数据集中删除重复的图像。这是通过比较每个图像文件的md5哈希值并删除重复的图像来实现的。--rmempty   删除所有不包含非忽略注释的图像,并将结果保存到一个新的XML文件中。--rmignore  删除所有标记为忽略的框,并将结果保存到一个新的XML文件中。--rmlabel <arg> 删除所有标记为<arg>的框,并将结果保存到一个新的XML文件中。--rmtrunc       将部分位于图像外部的框的忽略标志设置为true。--rotate <arg>  读取XML图像数据集并输出一个逆时针旋转<arg>度的副本。输出保存到一个以rotated_<arg>为前缀的XML文件中。--seed <arg>    将随机种子设置为字符串<arg>。--shuffle       随机打乱XML文件中列出的图像的顺序。--sort          按字母顺序对XML文件中的图像进行排序。--sort-num-objects  将列出的图像排序为XML文件,以便首先列出包含许多对象的图像。--split <arg>       将XML文件的内容拆分为两个单独的文件。其中一个文件包含标记为<arg>的对象的图像,另一个文件包含所有其他图像。--split-train-test <arg>   将XML文件的内容拆分为两个单独的文件。包含<arg>图像片段的训练文件和包含其余(1-<arg>)图像的测试文件。分区是通过将输入xml文件中的第一个图像放入训练分割中,然后将后面的图像放入测试分割中来确定地完成的。
Viewing XML files:--files     列出给定XML文件中的所有文件。-l          列出给定XML文件中的所有标签。--size <arg>  使每个提取的对象包含大约<arg>像素(默认为8000)。--stats       列出给定XML文件中对象标签的详细统计信息。--tile <arg>  取出所有对象并将它们保存为一个名为<arg>的大图像。

相关文章:

最萌算法学习来啦,看不懂才怪!| 码书

普通程序员&#xff0c;不学算法&#xff0c;也可以成为大神吗&#xff1f;对不起&#xff0c;这个&#xff0c;绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗&#xff1f;就一直当普通程序员吗&#xff1f;如果有一本算法书&#xff0c;看着很轻松……又有…

Redis 缓存设计原则

基本原则 只应将热数据放到缓存中 所有缓存信息都应设置过期时间 缓存过期时间应当分散以避免集中过期 缓存key应具备可读性 应避免不同业务出现同名缓存key 可对key进行适当的缩写以节省内存空间 选择合适的数据结构 确保写入缓存中的数据是完整且正确的 避免使用耗时…

最强大,最简洁的【禁止输入中文】

方法一&#xff1a;禁止中文输入法 <input type"text" style"ime-mode:disabled">方法二&#xff1a;禁止黏贴&#xff0c;禁止拖拽&#xff0c;禁止中文输入法&#xff01;这种方法是最强的禁止 中文输入 <input type"text" οnpaste…

无监督机器学习中,最常见4类聚类算法总结 | 技术头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」&#xff0c;购票请扫码咨询 ↑↑↑编译 | 安然、狄思云来源 | 读芯术&#xff08;ID&#xff1a;AI_Discovery&#xff09;在机器学习过程中&#xff0c;很多数据都具有特定值的目标变量&#xff0c;我们可以用它们来训练模…

自动红眼移除算法 附c++完整代码

说起红眼算法&#xff0c;这个话题非常古老了。 百度百科上的描述&#xff1a; “红眼”一般是指在人物摄影时&#xff0c;当闪光灯照射到人眼的时候&#xff0c;瞳孔放大而产生的视网膜泛红现象。 由于红眼现象的程度是根据拍摄对象色素的深浅决定的&#xff0c;如果拍摄对象的…

【Dlib】在GPU环境中运行dlib中的例子dnn_mmod_ex报错...dlib::cuda_error...Error while calling cudaMalloc...

1、问题描述 在GPU环境下运行dlib中的例子dnn_mmod_ex时&#xff0c;报错&#xff1a; terminate called after throwing an instance of dlib::cuda_errorwhat(): Error while calling cudaMalloc(&data, new_size*sizeof(float)) in file /home/laoer/tools/dlib/dlib…

Exchange 2010正式发布了

2009年11月9号&#xff0c;Exchange 2010正式发布了&#xff0c;下载地址&#xff1a;http://www.microsoft.com/downloa ... 0-879f-d74208d6171d简体中文64位120天试用版转载于:https://blog.51cto.com/287416363/657202

【python】使用python脚本将CelebA中图片按照 list_attr_celeba.txt 中属性处理(删除、复制、移动)

1、目的 CelebA中的照片有四十种属性&#xff0c;参见&#xff1a; 【AI】CelebA数据介绍、下载及说明 根据需求从celebA中获取我们想要的图片&#xff0c;方法是将CelebA中图片按照 list_attr_celeba.txt 中属性执行删除、复制或移动操作。 命令格式&#xff1a; python3 C…

firefly 编译opencv3.3.1, CMake报错

更换gcc编译器可以解决 -D CMAKE_C_COMPILER/usr/bin/gcc-4.8转载于:https://www.cnblogs.com/gabrialrx/p/9001554.html

AI时代,为何机器人公司无法盈利只能走向倒闭?

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」&#xff0c;购票请扫码咨询 ↑↑↑作者 | Bram Vanderborght译者 | 弯月责编 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;导语&#xff1a;机器人专家需要公开诚实地讨论我们的成功&#xff0c;而不…

Google Objective-C Style Guide

看题目就知道了&#xff5e;哪天有空翻译成中文的&#xff5e;不多说了&#xff5e;上链接&#xff5e;Google Objective-C Style Guide转载于:https://blog.51cto.com/lulala/659124

ICPC 2019国际大学生程序设计竞赛,中国高校未能夺冠

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」&#xff0c;购票请扫码咨询 ↑↑↑整理 | 琥珀出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;一年一度的国际大学生程序设计竞赛&#xff08;International Collegiate Programming Contest&#xff0c;ICPC&am…

完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能

相关阅读&#xff1a; 完爆Facebook/GraphQL&#xff0c;APIJSON全方位对比解析(二)-权限控制 完爆Facebook/GraphQL&#xff0c;APIJSON全方位对比解析(三)-表关联查询 自APIJSON发布以来&#xff0c;不断有网友拿来和Facebook的GraphQL对比&#xff0c; 甚至有不少人声称“完…

【AI】吴恩达斯坦福机器学习中文笔记汇总

1、吴恩达机器学习和深度学习课程的字幕翻译以及笔记整理参见&#xff1a; 以黄海广博士为首的一群机器学习爱好者发起的公益性质项目&#xff08;http://www.ai-start.com&#xff09;。 2、黄海广博士公益项目介绍 https://www.jianshu.com/p/16a749e332db 3、吴恩达 斯坦…

【C++】C++命名空间重定向

参见博客&#xff1a; namespace使用总结 命名空间的重定向的格式&#xff1a; namespace newName oldName; 在caffe源码走读时&#xff0c;遇到namespace的重定向用法&#xff0c;以前没有用过&#xff0c;源码如下&#xff0c;其中 GFLAGS_GFLAGS_H_是为了检测gflags的版…

宝宝都能看懂的机器学习世界

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」&#xff0c;购票请扫码咨询 ↑↑↑作者 | 武博士、宋知达、袁雪瑶、聂文韬来源 | 大鱼AI&#xff08;ID&#xff1a;DayuAI-Founder&#xff09;人类需要经过各式各样的学习才有办法认识这个世界。 当小朋友第一次看到猫后…

iOS LLDB调试命令(Low Lever Debug)

断点 设置断点 $breakpoint set -n XXX set 是子命令 -n 是选项 是--name 的缩写!查看断点列表 $breakpoint list删除 $breakpoint delete 组号禁用/启用 $breakpoint disable 禁用 $breakpoint enable 启用遍历整个项目中满足Game:这个字符的所有方法 $breakpoint set -r Game…

TCP通信速率与延时关系

刚刚研究了链路延时对TCP速率的影响&#xff0c;占位&#xff0c;有空会写一下。转载于:https://blog.51cto.com/csnas/659983

十三、序列化和反序列化(部分转载)

json和pickle序列化和反序列化json是用来实现不同程序之间的文件交互&#xff0c;由于不同程序之间需要进行文件信息交互&#xff0c;由于用python写的代码可能要与其他语言写的代码进行数据传输&#xff0c;json支持所有程序之间的交互&#xff0c;json将取代XML&#xff0c;由…

【C++】google gflags详解

参考博客&#xff1b;https://blog.csdn.net/lezardfu/article/details/23753741 0、简介 gflags是google的一个开源的处理命令行参数的库&#xff0c;使用c开发&#xff0c;具备python接口&#xff0c;可以替代getopt。gflags使用起来比getopt方便&#xff0c;但是不支持参数…

何恺明等人新作:效果超ResNet,利用NAS方法设计随机连接网络 | 技术头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」&#xff0c;购票请扫码咨询 ↑↑↑译者 | 刘畅编辑 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;受人工设计的启发&#xff0c;用于图像识别的神经网络从简单的链状模型发展为具有多个分支的网络。ResN…

网络规划设计师考试命题模式持续在变   你变不变

命题模式持续在变 你变不变深入分析2009下半年&#xff5e;2010下半年3次网络规划设计师考试试卷中项目管理模块&#xff08;约有5~8题&#xff0c;约占总分数的6.67%~10.67%&#xff09;的命题规律&#xff0c;心中最强烈的一份感觉体现在一个字——变。“变”是事物持续发…

【C++】google glog详解

0、简介 glog是google的日志管理系统&#xff0c;配合gflags库&#xff0c;通过命令行参数管理日志。 源码下载&#xff1a;https://github.com/google/glog ubuntu安装&#xff1a; sudo apt-get install libgoogle-glog*参考博客&#xff1a; https://blog.csdn.net/jcjc91…

仿抖音注册界面制作

话说上次完成了仿抖音我的界面制作之后&#xff0c;今天抽空又把注册界面给做了&#xff0c;还是做了些小改动&#xff0c;将第三方登录去掉了 注册还是老规矩直接奉上psd源码&#xff1a;仿抖音注册界面psd源码 个人博客https://myml666.github.io

00后的AI开发者进阶之道:从入门到鏖战MIT编程大赛 | 人物志

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」&#xff0c;购票请扫码咨询 ↑↑↑作者 | 若名出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;当所有中国的高中生都在拼命为跨过高考这道窄门疲惫不堪时&#xff0c;美国的准高中毕业生们也开始申请大学&#x…

js的全部替换函数replaceAll

JS替换功能函数&#xff0c;用正则表达式解决&#xff0c;js的全部替换&#xff0c;学习js的朋友可以参考下。 alert("abacacf".replace(a,9)); alert("abacacf".replace(/a/g,9)); 第一个运行的结果 9bacaf 这个只是替换了第一个 第二个运行的结果 9b9c9f…

【C++】Google Protocol Buffer(protobuf)详解(一)

1、简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准&#xff0c; Protocol Buffers 是一种轻便高效的结构化数据存储格式&#xff0c;可以用于结构化数据串行化&#xff0c;或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通…

python使用difflib对比文件示例

使用difflib模块对比文件内容1 示例&#xff1a;字符串差异对比 vim duibi.py#!/usr/bin/env python # -*- coding: utf-8 -*- import re import os import difflib tex1"""tex1: this is a test for difflib ,just try to get difference of the log 现在试试…

技术大佬们都推荐的vim学习指南来了,值得收藏!

「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | kbsc13&#xff0c;京东算法工程师&#xff0c;研究领域计算机视觉来源 | 机器学习与计算机视觉&#xff08;ID&#xff1a;AI_Developer&#xff09;编辑 | Jane【导语】在 Linux 下最常使用的文本编辑…

NoSQl分类

2019独角兽企业重金招聘Python工程师标准>>> http://nosql-database.org/ nosql简单分类 类型 部分代表 特点 列存储 hbase cassandra hypertable 顾名思义&#xff0c;是按列存储数据的。最大的特点是方便存储结构化和半结构化数据&#xff0c;方便做数据压缩&…