labelme 使用教程
迷若烟雨 2018-09-06 10:18:53 9348 收藏 8
分类专栏: 深度学习
版权
labelme是使用python写的基于QT的跨平台图像标注工具,可用来标注分类、检测、分割、关键点等常见的视觉任务,支持VOC格式和COCO等的导出,代码简单易读,是非常利用上手的良心工具.
安装
最简单的方式莫过于通过pip安装 pip install labelme
但是由于我们要在其基础上二次开发,所以只能 pip install -e .
cd examples/tutorial
labelme apc2016_obj3.jpg # specify image file
labelme apc2016_obj3.jpg -O apc2016_obj3.json # close window after the save
labelme apc2016_obj3.jpg --nodata # not include image data but relative image path in JSON file
labelme apc2016_obj3.jpg \
--labels highland_6539_self_stick_notes,mead_index_cards,kong_air_dog_squeakair_tennis_ball # specify label list
# semantic segmentation example
cd examples/semantic_segmentation
labelme data_annotated/ # Open directory to annotate all images in it
labelme data_annotated/ --labels labels.txt # specify label list with a file
可视化真值: labelme_draw_label_png apc2016_obj3_json/label.png
可视化真值并导出数据: labelme_json_to_dataset apc2016_obj3.json -o apc2016_obj3_json
代码解析
程序的入口在__main__.py中的main函数, 其处理了外部传进的命令行后传递给MainWindow,还实现了不同语言的适配.MainWindows的实现在app.py中, 初始化时构建了菜单、docker栏、快捷键等, 所有的标注都会绘制在一个canvas上, shape.py用于绘制已经标注的图形,主要看mousePressEvent、mouseMoveEvent和mouseReleaseEvent三个鼠标回调函数
mousePressEvent是鼠标按下时消息的回调,有一个ev参数作为输入,保存了鼠标按下时的上下文,首先将鼠标的坐标由窗口坐上角转换为以点击点为中心的坐标, 然后判断按下的是鼠标左键还是右键,如果是左键,还需进一步判断当前所属的模式是创建制模式还是修改模式,如果是创建模式,则需要创建选中元素的点,将其添加到形状列表中,而修改模式则需要判断是否选中了某个元素,然后将其坐标进行修改.如果按下的是右键则默认修改模式,直接拖动点.
mouseMoveEvent用于绘制元素添加的中间过程,以便有更清晰的提示,判断逻辑与之前类似,还判断了已有元素是否处于选中状态,如果是则将其高亮显示.
mouseReleaseEvent用于处理鼠标抬起的回调,主要就是恢复鼠标按下时修改的光标形状,如果有修改则setDirty用于标识需要保存.
目前labelme的标签并不会显示在标注点而是docker栏上,这很不方面我们直接看,因此需要增加这项能力.
在def drawVertex(self, path, i):最后加上就可以了
if i == 0:
myFont = QtGui.QFont("Times", 20)
mypoint = point - QtCore.QPointF(0,d)
path.addText(mypoint,myFont,self.label)
cvat
cvat是OpenCV开发的在线交互式图像和视频标注工具,被用来标注数以亿计的目标和属性,可以在cvat.org体验效果. 其支持众多主流标注格式的导入和导出,为制作标准数据集提供了很大的便利;支持帧间插值和预训练模型自动标注、大多数常用操作均配置快捷键.
安装首先克隆仓库并安装必须的库
sudo apt-get install -y curl redis-server python3-dev python3-pip python3-venv libldap2-dev libsasl2-dev
git clone https://github.com/opencv/cvat
cd cvat && mkdir logs keys
sudo pip3 install -r cvat/requirements/development.txt
python3 manage.py migrate
python3 manage.py collectstatic
新建超级管理员账户,根据提示输入将要新建的管理员账户名、邮箱和密码,注意密码至少8位且不能太简单
python3 manage.py createsuperuser
python3 manage.py runserver --noreload --nothreading --insecure 127.0.0.1:7000
使用谷歌浏览器打开网址127.0.0.1:7000, 使用刚才新建的账户名和密码登录,选择新建任务
使用教程 注册:先注册超级管理员,再赋予普通标注员以权限.
新建标注任务:使用Create new task按钮新建标注任务,设置任务的参数
————————————————
版权声明:本文为CSDN博主「迷若烟雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/minstyrain/java/article/details/82454991