Laravel起步

使用Laravel从头重新实现图像标注工具。此节只简单学习使用Laravel吧。

环境介绍和安装

我就使用手头的windows10系统 + xampp(php7)为开发环境吧。

为了方便使用php命令,xampp/php目录加入了系统PATH路径中。

参考 https://getcomposer.org/doc/00-intro.md#installation-windows 安装composer,路径也加入到系统PATH路径中。

然后安装Laravel,命令composer global require "laravel/installer",会将laravel安装在其global工作目录即C:\Users\[windows username]\AppData\Roaming\Composer下。

Laravel项目开创

参考文章Create an Admin Interface in LaravelPHP laravel系列之迷你博客搭建 – PHP 中文社区 这两个例子都非常完整。

composer create-project laravel/laravel roidrawer-project

创建完就可以把 roidrawer-project/public目录添加到apache配置文件中了。

后面参考上面的例子搭建用户管理系统也可以,不过我觉得使用 https://github.com/Zizaco/entrust 来搭建项目所用用户管理系统。

最后,我觉得 https://tutorials.kode-blog.com/laravel-5-tutorialhttps://tutorials.kode-blog.com/laravel-5-admin-panel 这两个教程也不错。

图像识别领域在线测试的方法

上一篇文章图像标注工具的一些做法讲述了数据集的标注,此篇讲解使用一个数据集测试的方案。

很简单,我们的测试集肯定要恒定以方便结果之间的比对。我的做法就是对测试集来源数据集做一次快照以固化数据标定内容,这样也方便之后对数据集进行修订,我把快照的结果称为测试模板。如果实在是原始数据集更新了数据标注,就需要再次快照成一个测试模板,而这基于两个测试模板分别进行的测试的结果显然将不具备太大的比较意义。

服务器端呢,直接提供几个API让客户端能连接上创建测试任务下载测试数据和提交测试结果便可以了。

测试过程其实也好办,本地构建一个简单的推断程序,通过服务器端API创建任务,依次下载测试集数据执行推断,并将推断结果提交到服务器即可。一个测试任务的结果全部提交后,服务器可以自动给出召回率准确度和其他指标。

图像标注工具的一些做法

我主要面向图像分类和BoundingBox检测标注,没有考虑图像的语义标注、多边形标注的分割任务等,也没有考虑视频和语音类媒体。

我把(待)标注的数据集成为数据仓库,按照任务分为:
01二类:只包含正样本负样本两个分类;
带删除的01二类:附带一个删除操作将样本剔除;
多类分类:多个分类的分类标注;
单类ROI:单一目标类型的BoundingBox标注;
多类ROI:多类目标的BoundingBox标注,相比单类需要给出每个BBOX的类型了;
多标签ROI:每个BoundingBox可以给定多个标签。

其中,我可以把多个“单类ROI”加上类型合成一个“多类ROI”,这样的话,对于标注多类的任务就可以先拆解成多个单类的任务以减少标注时选择类别的操作。

为了提高操作效率,除了拖曳BoundingBox外,尽量使用键盘完成,比如选择类别标签和提交结果转到上一张下一张等等。具体,就是使用空格和回车键提交结果并转下一张,使用数字键和部分字母键直接给刚拖曳得到的Box赋予类别信息,和游戏一样使用方向键和WASD键来执行转到上一张下一张,甚至还设置了右键提交的选项,拖曳box完成后右键即执行提交。

这些操作优化都是针对正常途径操作的,对于修改操作等提供了到达方式但是没有这些优化操作。

经过这些优化,我自认为这个标注系统的操作还是很高效的,每人一小时甚至可以标注上千张图片。因为提交自动转下一张,这个操作甚至导致我成瘾难以推出任务。

图像标注工具简单列表

究竟需要什么样的标注工具:单人or多人协同?最后数据保存格式?运行环境?分类任务or/and检测任务?效率和速度?等等。确定了这些才可以去挑选工具或自制工具。

有图像标注工具推荐或者分享吗? – 知乎
What is the best image labeling tool for object detection? – Quora

1
tzutalin/labelImg: LabelImg is a graphical image annotation tool and label object bounding boxes in images
py+qt单机软件,保存结果PASVAL VOC XML格式。

2
hzylmf/od-annotation: 目标检测数据标注工具
python flask写就的B/S架构的工具,支持多人。结果可导出为PASCAL VOC XML格式。

3
Image Labeler Label ground truth in a collection of images
Matlab工具,支持多种标注类型。

4
LabelMe. The Open annotation tool
MIT出品,提供手机APP,提供Matlab接口。

5
wkentaro/labelme: Image Polygonal Annotation with Python.
高仿MIT LabelMe的PyQT单机软件。

6
lanbing510/ImageLabel: 图像标注工具 Image Label Tool
单机多边形标注工具

7
VGG Image Annotator (VIA)
VGG组提供的多边形标注工具,html+js写就,单机浏览器下使用。

8
OpenCV探索之路(二十五):制作简易的图像标注小工具 – Madcola – 博客园
网友自写简易工具

9
Labelbox: Data labeling platform for expert artificial intelligence applications
提供商业服务,支持COCO和VOC XML格式。

10
Dataturks – ML data annotations and labeling doesn’t need to suck
提供商业服务

11
NaturalIntelligence/imglab: Web based tool to label images for objects. So that they can be used to train dlib or other object detectors. Integrated with Face++

12
精灵标注助手-人工智能数据集标注必备工具

13
RectLabel – Labeling images for bounding box object detection and segmentation

14
OCLAVI | Object Classification and Annotation for Computer Vision Models
提供商业服务

15
Edgecase AI data labeling | Bounding Box
提供商业服务

16
puzzledqs/BBox-Label-Tool: A simple tool for labeling object bounding boxes in images
python tkinter 单机工具

17
LabelD by sweppner

18
A Universal Labeling Tool for Computer Vision: Sloth

19
LIBLABEL: Lightweight Semantic/Instance Annotation Tool Autonomous Vision Group | MPI for Intelligent Systems

20
wadefelix/ROIDrawer 把我的也贴一贴。计划重写中。。。
B/S架构,支持多人,支持导出PASCAL VOC XML。关注效率,针对左右键盘右手鼠标这种操作方式特别优化设计,除了拖曳bounding box外重复操作尽量使用键盘按键完成。