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完成后右键即执行提交。

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

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