资源 | MIT开放图像标注工具LabelMe源代码:助力机器视觉的发展

2017 年 8 月 1 日 机器之心

选自Github

机器之心编译

参与:蒋思源、路雪


计算机视觉需要大量的标注图像来执行各类任务,ImageNet 的成功就在于其巨量的标注图像。近日,MIT 的计算机科学和人工智能实验室(CSAIL)开放了图像标注工具 LabelMe 的源代码,我们可以使用该工具创建定制化标注任务或执行图像标注。同时,CSAIL 开放此工具的源码有助于进一步开发出更高效的标注方式和工具,有助于机器视觉的进一步发展。


  • 项目开源地址:https://github.com/CSAILVision/LabelMeAnnotationTool

  • LabelMe 地址:http://labelme.csail.mit.edu/Release3.0/


在该网址我们可以找到可在服务器上安装的 LabelMe 图像标注工具源码。LabelMe 是一个用于在线图像标注的 Javascript 标注工具。与传统图像标注工具相比,其优势在于我们可以在任意地方使用该工具。此外,它也可以帮助我们标注图像,不需要在电脑中安装或复制大型数据集。


下载


我们可以在该网址直接下载源码压缩文件:https://github.com/CSAILVision/LabelMeAnnotationTool/archive/master.zip

或者,使用以下命令直接复制该 GitHub 项目:


$ git clone https://github.com/CSAILVision/LabelMeAnnotationTool.git


目录

  • Images:图像所在文件夹。

  • Annotations:标注所在文件夹。

  • Masks:分割掩码所在文件夹(scribble mode)。

  • Scribbles:scribble 所在文件夹(scribble mode)。

  • tool.html:LabelMe 标注工具的主网页。

  • annotationTools:源码目录。

  • annotationCache:临时文件地址。

  • Icons:网页所用图标。


快速操作指南


1. 将 LabelMe 标注工具代码放在网页服务器上(网页服务器配置要求见下文)。


2. 在命令行上运行:


$ make


这将设置 perl 脚本需要的全局变量。注意:如果我们移动代码位置,那么我们必须重新运行「make」来刷新全局变量。


1. 在「Images」文件夹内创建一个子文件夹,将我们的图像放在该文件夹内。如:「Images/example_folder/img1.jpg」。确保所有的图像的扩展名为「.jpg」,文件夹/文件名由字母和数字构成(即不包含空格和其他字符)。


2. 使用网页浏览器前往以下 URL 地址:http://www.yourserver.edu/path/to/LabelMe/tool.html?collection=LabelMe&mode=f&folder=example_folder&image=img1.jpg


3. 标注图像。点击「show me another image」前往下一个图像。


4. 现在,你所作出的标注将出现在「Annotations」文件夹内。


网页服务器要求


在网页服务器上设置 LabelMe 工具,需要执行以下操作:

  • 运行 Apache 服务器(Ubuntu 配置说明:https://github.com/CSAILVision/LabelMeAnnotationTool/blob/master/UBUNTU.md,Windows 配置说明:https://github.com/CSAILVision/LabelMeAnnotationTool/blob/master/WINDOWS.md)

  • 在 Apache 内启用 authconfig,使服务器侧(包括 SSI)能够运行。这使得 SVG 能够发挥作用。这一步最常出现错误,所以务必确保这一步正常运行。

  • 运行 perl/CGI 脚本,这是第二大容易出现错误的地方。

  • 确保 php5 和 libapache2-mod-php5 库已安装。我们可以运行以下代码在 Linux 上运行它们:

$ sudo apt-get install php5 libapache2-mod-php5


  • Ubuntu 配置说明:https://github.com/CSAILVision/LabelMeAnnotationTool/blob/master/UBUNTU.md

  • Windows 配置说明:https://github.com/CSAILVision/LabelMeAnnotationTool/blob/master/WINDOWS.md


如果无法绘制多边形(polygons),那么检查该网页是否为「application/xhtml+xml」网页(火狐浏览器可以通过 Tools->Page Info 查看)。如果不是,确保 SSI 已启用(查看上文「在 Apache 内启用 authconfig」)。


确保我们的图像拥有对网页服务器的读取权限,「Annotations」文件夹中的多个文件夹拥有写入权限。此外,「annotationCache/TmpAnnotations」也需要写入权限。


该标注工具的特点


下面是我们能在整个标注工具内使用的统一资源定位符变量:

  • mode=im:仅展示图像和画布(不展示除图像外的其他东西)。

  • mode=mt:Mechanical Turk 模式。

  • mode=f:点击「next image」按钮,进入该文件夹下的下一张图像。

  • mode=i:点击「next image」按钮,在 LabelMe 默认集合中随机打开下一张图像。

  • mode=c:进入集合中的下一张图像(集合通过 dirlist 设置)。

  • username=johndoe:为标注会话设定用户名。

  • collection=LabelMe:使用默认 LabelMe 集合列表,设置一个新的集合列表请查看下文。

  • folder=MyLabelMeFolder:LabelMe 中图像储存的文件夹。

  • image=image.jpg:需要标注的 LabelMe 图像

  • objects=car,person,building:当弹窗询问用户对象的名称,用户可以从下拉式菜单中(例 car、person、building)选择一个对象。

  • scribble=false:关闭 scribble 模式。

  • objlist=visible:该命令控制右侧的对象列表可见或不可见,不可见应该设置为「objlist=hidden」。

  • actions=n:控制用户可以执行的操作,如果需要设置任何我们希望执行的操作,需要使用下列的属性组合。例如,我们可以设置「actions=rmd」来允许执行重命名、修改控制点和删除操作。默认情况下,「actions=n」。下面展示了所有可执行的操作:

           n:创建和编辑新的多边形(polygons)

           r:重命名已存在的对象

           m:在已存在的对象上修改控制点

           d:删除已存在的对象

           a:允许所有的操作

           v:仅查看多边形,不允许编辑

  • viewobj=e:控制用户可查看的对象,可以使用以下命令选项设定。默认为「viewobj=e」,并且请注意删除了的对象将会显示为灰色,并且对象列表中的对象名将会采用斜体。

            e:允许查看新的和之前标注过的对象

            n:仅允许查看新的对象

            d:允许查看新的和已删除的对象

            a:允许查看所有的对象(新的、已存在的和已删除的)


以下为 Mechanical Turk 模式下的设置:

  • mt_sandbox=true:使用 Mechanical Turk 沙盒模式。该模式可以在 Mechanical Turk 上进行调试,我们可以设置该变量以确保每一部分都能运行。

  • N=5:标注者至少需要标注 5 个多边形。使用 N=inf 设置,标注者可任意多地标注样本。

  • mt_intro=http://yourpage.com (http://yourpage.com/):我们可以使用该变量定制化地设定标注者所能看到的指令。默认情况下将为标注者提供以下指令:http://labelme2.csail.mit.edu/Release3.0/annotationTools/html/mt_instructions.html

  • mt_instructions=Place your instructions here:我们可以定制化标注者在标注任务上方看到的一行指令。默认情况下,指令为:请尽可能多的使用对象标注该图像。


我们可以使用以下命令行创建需要标注的图片集:


$ cd ./annotationTools/sh/


$ ./populate_dirlist.sh


这将在「./Images」文件夹内创建一个所有图像的列表,列表在「./annotationCache/DirLists/labelme.txt」文件内。


之后,我们可以使用以下 URL 地址(http://www.yourserver.edu/path/to/LabelMe/tool.html?collection=labelme&mode=i)标注集合内的图像。我们可以通过在命令行中运行下列命令,创建一个包含特定文件夹的集合:


$ cd ./annotationTools/sh/


$ ./populate_dirlist.sh my_collection.txt example_folder


该列表出现在「./annotationCache/DirLists/my_collection.txt」内部。我们可以使用以下 URL 地址标注集合内的图像:http://www.yourserver.edu/path/to/LabelMe/tool.html?collection=my_collection&mode=i。

  • 我们可以将集合内的 XML 文件模板修改为「./annotationCache/XMLTemplates/your_collection.xml」,以改变集合内标注文件的布局。默认模板是「./annotationCache/XMLTemplates/labelme.xml」。

  • 该标注工具行为的日志文件记录在「./annotationCache/Logs/logfile.txt」中。确保该文件拥有写入权限。


CODE API


以下是源代码概览。更多细节详见 https://cdn.rawgit.com/CSAILVision/LabelMeAnnotationTool/master/annotationTools/js/api/index.html。

  • tool.html:该标注工具的入口点。主要功能是添加所有 javascript 代码,放置画布。

  • annotationTools/js/:包含实现该标注工具功能所需的所有 javascript 代码。我们还提供了 code API,利用 code API 可获取从源代码注释中自动提取出来的 Javascript 源代码。

  • annotationTools/perl/:包含用于与服务器后端交流的所有 Perl 脚本。

  • annotationTools/css/:包含所有 CSS 样式定义。

  • annotationTools/html/:包含 HTML 辅助文件(如适用于 Mechanical Turk 平台的说明文件)。


原文链接:https://github.com/CSAILVision/LabelMeAnnotationTool




本文为机器之心编译,转载请联系本公众号获得授权

✄------------------------------------------------

加入机器之心(全职记者/实习生):hr@jiqizhixin.com

投稿或寻求报道:editor@jiqizhixin.com

广告&商务合作:bd@jiqizhixin.com

登录查看更多
8

相关内容

图像描述生成(Image Caption)是一个融合计算机视觉、自然语言处理和机器学习的综合问题,它类似于翻译一副图片为一段描述文字。该任务对于人类来说非常容易,但是对于机器却非常具有挑战性,它不仅需要利用模型去理解图片的内容并且还需要用自然语言去表达它们之间的关系。除此之外,模型还需要能够抓住图像的语义信息,并且生成人类可读的句子。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
CVPR 2020 最佳论文与最佳学生论文!
专知会员服务
34+阅读 · 2020年6月17日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
96+阅读 · 2020年6月3日
【CVPR2020-旷视】DPGN:分布传播图网络的小样本学习
专知会员服务
26+阅读 · 2020年4月1日
【资源】100+本免费数据科学书
专知会员服务
105+阅读 · 2020年3月17日
近期必读的5篇 CVPR 2019【图卷积网络】相关论文和代码
专知会员服务
32+阅读 · 2020年1月10日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
Mask-RCNN模型的实现自定义对象(无人机)检测
计算机视觉life
17+阅读 · 2019年8月12日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
资源 | 深度学习图像标注工具汇总
AI100
6+阅读 · 2018年6月12日
资源 | MIT开放最新课程:深度学习导论
AI100
4+阅读 · 2018年2月9日
如何用TensorFlow和TF-Slim实现图像标注、分类与分割
北京思腾合力科技有限公司
21+阅读 · 2017年11月24日
HULAC:一个高效的中文词法分析工具包(清华)
全球人工智能
5+阅读 · 2017年11月12日
无需一行代码就能搞定机器学习的开源神器
人工智能头条
6+阅读 · 2017年11月7日
Self-Driving Cars: A Survey
Arxiv
41+阅读 · 2019年1月14日
Arxiv
7+阅读 · 2018年11月27日
3D-LaneNet: end-to-end 3D multiple lane detection
Arxiv
7+阅读 · 2018年11月26日
Arxiv
11+阅读 · 2018年5月13日
Arxiv
4+阅读 · 2018年1月19日
VIP会员
相关VIP内容
CVPR 2020 最佳论文与最佳学生论文!
专知会员服务
34+阅读 · 2020年6月17日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
96+阅读 · 2020年6月3日
【CVPR2020-旷视】DPGN:分布传播图网络的小样本学习
专知会员服务
26+阅读 · 2020年4月1日
【资源】100+本免费数据科学书
专知会员服务
105+阅读 · 2020年3月17日
近期必读的5篇 CVPR 2019【图卷积网络】相关论文和代码
专知会员服务
32+阅读 · 2020年1月10日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
相关资讯
Mask-RCNN模型的实现自定义对象(无人机)检测
计算机视觉life
17+阅读 · 2019年8月12日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
资源 | 深度学习图像标注工具汇总
AI100
6+阅读 · 2018年6月12日
资源 | MIT开放最新课程:深度学习导论
AI100
4+阅读 · 2018年2月9日
如何用TensorFlow和TF-Slim实现图像标注、分类与分割
北京思腾合力科技有限公司
21+阅读 · 2017年11月24日
HULAC:一个高效的中文词法分析工具包(清华)
全球人工智能
5+阅读 · 2017年11月12日
无需一行代码就能搞定机器学习的开源神器
人工智能头条
6+阅读 · 2017年11月7日
相关论文
Self-Driving Cars: A Survey
Arxiv
41+阅读 · 2019年1月14日
Arxiv
7+阅读 · 2018年11月27日
3D-LaneNet: end-to-end 3D multiple lane detection
Arxiv
7+阅读 · 2018年11月26日
Arxiv
11+阅读 · 2018年5月13日
Arxiv
4+阅读 · 2018年1月19日
Top
微信扫码咨询专知VIP会员