labelme:图像数据标注

导读

深度学习第一步就是制作数据集,手动去标注一些数据。本文将介绍一个用于图像数据标注的软件:labelme,并介绍它的安装方法,使用方法等。

1. labelme

labelme是麻省理工(MIT)的计算机科学和人工智能实验室(CSAIL)研发的图像注释工具,它是用PythonPyQT编写的,用于图像标注。

  • 对图像进行多边形,矩形,圆形,多段线,线段,点形式的标注(可用于目标检测,图像分割,等任务)。
  • 对图像进行进行 flag 形式的标注(可用于图像分类 和 清理 任务)。
  • 视频标注
  • 生成 VOC 格式的数据集
  • 生成 COCO 格式的数据集

2. 安装

  • 利用conda安装
# 新建环境
conda create -n labelme python=3

# 激活环境
conda activate labelme

# 安装labelme
conda install labelme -c conda-forge
  • Docker安装
# on macOS
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\" &
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=docker.for.mac.host.internal:0 -v $(pwd):/root/workdir wkentaro/labelme

# on Linux
xhost +
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=:0 -v $(pwd):/root/workdir wkentaro/labelme
  • Ubuntu
sudo apt-get install labelme

# or
sudo pip3 install labelme

# or install standalone executable from:
# https://github.com/wkentaro/labelme/releases

3. 使用

3.1. 命令行运行

# 确保已经激活虚拟环境
labelme

3.2. 程序主界面

运行上面命令后,正常情况下,会出现下面窗口。

程序主界面

程序界面主要分为六个区域,最上面为菜单栏,最左边为工具栏,中间为中心窗口(展示图片以及进行标注),右侧上方为展示标注标签的窗口,右侧下方为展示文件列表的窗口,最下面为状态栏。菜单栏、工具栏以及在中心窗口右键均可以选择命令进行执行,右侧的标签列表可以进行交互来进行与标注相关的动作,如切换、删除、编辑、隐藏标注等,右侧文件列表亦可进行交互来切换文件等。

3.3. 程序功能说明:

  • 菜单栏功能部分:

    • Open : 打开图片文件,通过点击命令或者快捷键即可运行。打开文件后,右侧文件列表会显示在同一目录下的所有文件,点击文件列表中的文件即可进行切换。图片格式支持jpg、png、gif、bmp、jpeg等
  • Next Image:切换至下一张图片,若无下一张图片,会弹出窗口提醒用户,通过点击命令或者快捷键即可运行。3d状态下会切换当前聚焦视角的图片,可通过鼠标点击切换聚焦视角。

    • Prev Image : 切换至上一张图片,若无上一张图片,会弹出窗口提醒用户,通过点击命令或者快捷键即可运行。3d状态下会切换当前聚焦视角的图片,可通过鼠标点击切换聚焦视角。
    • Open Dir:打开文件夹,通过点击或者快捷键即可运行。打开文件夹默认会显示文件夹中的第一张图片,同时右侧文件列表也会显示文件夹里的所有图片,点击文件列表中的文件可以进行文件切换。
    • Import:导入标注文件,通过点击即可运行。标注文件的样例文件请参考此处
    • Save : 保存文件,通过点击或者快捷键即可运行。会将对标注的更改进行保存,写入默认标注文件中。
    • Close : 关闭当前文件,通过点击或者快捷键即可运行。
    • Quit : 退出程序,通过点击或者快捷键即可运行
    • Create Brush :

      • 2d状态下:创建画刷形状,通过点击或者快捷键即可运行。创建画刷形状用于进行分割标注,在想要进行标注的区域,点击鼠标即可进行绘制,绘制完毕后按下回车键即可键入标注文字,添加标注。
      • 3d状态下:创建画刷形状,在任意视角任意图片直接点击鼠标进行绘制即可,绘制完毕后按下回车键,键入标注文字即可添加标注。
    • Edit Brush :编辑画刷大小,通过点击或者快捷键即可运行。默认为圆形画刷,可以改变画刷大小(注,画刷大小是以当前图片的宽度为比例)
    • Create Rectangle :

      • 2d状态下:创建矩形,通过点击或者快捷键即可运行。在想要进行标注的区域,点击鼠标开始绘制,在移动鼠标的过程中,会同步显示矩形边框,绘制完毕时,再点击鼠标即可。
      • 3d状态下:创建长方体,通过在任意视角的图片点击即可开始该视角下的矩形框的绘制,再次点击鼠标该视角下矩形框即绘制完毕,这时在其他视角,可以通过右键聚焦视角,并进行图片的切换,当其他视角下有最开始创建的矩形框时,移动鼠标即可进行其他视角下的矩形框的绘制,绘制完毕时再次点击鼠标即可,长方体绘制完毕后,按下回车键,键入标注文字,即可添加标注。
    • Create Circle:创建圆形,操作与创建矩形类似,请参考创建矩形。
    • Create Polygons:创建多边形,通过点击或者快捷键即可运行。在想要标注的区域,点击鼠标开始绘制,在想要绘制的多边形顶点处再次点击鼠标,继续绘制,绘制完毕后,按下回车键。(即文档中要求的绘制闭合折线)
    • Create Curve:创建平滑曲线,通过点击或者快捷键即可运行。在想要标注的区域,点击鼠标开始绘制,接着自由移动鼠标即可,绘制完毕后按下回车键。
    • Edit Color:编辑标注颜色,通过点击或者快捷键即可运行。会弹出颜色对话框,任意选颜色即可。
    • Edit Polygons:进入编辑状态,通过点击或者快捷键即可运行。点击后会进入编辑状态,在该状态下,可以对标注进行拖动,选中,撤销,重做,放大缩小等一系列操作。
    • Delete Polygons:删除标注,通过点击或者快捷键即可运行。该动作只有在编辑状态下且有标注被选中才能进行操作。
    • Edit Label:编辑标注文字,通过点击或者快捷键即可运行。该动作只有在编辑状态且有标注被选中才能进行操作。
    • Undo:撤销动作,通过点击或者快捷键即可运行。可以撤销任意步数的动作。
    • Redo:重做动作,通过点击或者快捷键即可运行。可以重做任意步数的动作。
    • Undo last point:撤销当前正在创建的标注形状,通过点击或者快捷键即可运行。会移除当前正在创建的标注形状。
    • Polygon Labels:是否显示标签列表组件,点击即可进行切换。
    • File List:是否显示文件列表,点击即可进行切换。
    • 3D:是否进入3D模式,点击即可进行2d及3d状态的转换。
    • Hide Polygons:隐藏所有标注,点击即可运行。
    • Show Polygons:显示所有标注,点击即可运行。
    • Magnifier:是否显示放大镜,点击即可运行。默认会捕捉鼠标附近20$\times$20的区域,放大至100$\times$100,显示在图片右下角(需注意图片的大小,因为会在图片右下角显示100$\times$100)
    • Zoom In:放大图片,点击或者快捷键即可运行。默认会放大图片至1.2倍。
    • Zoom Out:缩小图片,点击或者快捷键即可运行。默认会缩小图片至0.8倍。
    • Original Size:图片恢复至原始图片大小,点击或者快捷键即可运行。会使图片按照原始大小显示。
    • Fit Window:图片宽度适应中心窗口,点击或者快捷键即可运行。会使图片按照中心窗口宽度显示。
  • 工具栏功能部分:

    • 工具栏命令即为菜单栏命令的部分,请参考菜单栏命令
  • 状态栏功能部分:

    • 部分命令执行时会在状态栏处显示。
  • 鼠标在图片上移动时,会同步在状态栏处显示当前鼠标的坐标。2d显示二维坐标,3d显示三维坐标。
  • 中心窗口功能部分:

    • 为方便用户交互,图片上的标注形状默认显示为不填充,即只显示边框,当鼠标进入标注形状内部时,标注形状为悬浮(hovered)状态,内部会填充颜色,当鼠标点击标注形状时,标注形状为选中(selected)状态,内部也会填充颜色,同时在标签列表窗口处也会显示标签选中状态。当标注脱离悬浮状态(unhovered)或者未选中状态(unselected)时,内部会显示不填充。对选中的标注形状即可进行一系列操作,如拖动标注形状,删除,更改等动作。
    • 2d状态下,在中心窗口点击右键亦可选择执行部分命令,方便交互。
  • 3d状态下,中心窗口分为3个视角,三个视角顺序未从左至右,从上至下,分别为0,1,2。第一个视角为从上往下看的俯视视角,图片顺序为从上至下,第二个视角为正视视角,图片顺序为从后往前,第三个视角为右视视角,图片顺序为从左至右。鼠标点击视角可进行视角图片的聚焦,即切换视角。
  • 标签列表组件功能部分:

    • 在标签列表窗口中右键可以选择并执行部分命令
  • 在标签列表窗口中可以通过点击标签进行标注的选中,选中状态会同步至中心窗口中并显示标注形状填充

    • 改变标签列表窗口中标签的checkstate可以进行是否显示该标注状态的切换,checked为显示,unchecked为隐藏
    • 在中心窗口对标注的交互会在标签列表中同步更新,例如添加标注、删除标注等
  • 文件列表组件功能部分:

    • 2d状态下,在文件列表窗口中点击文件即可进行文件的切换
  • 3d状态下,由于文件的切换由中心窗口控制,因此点击不会有反应
  • 其他说明:

    • 标注文件默认名说明:在读取图片时,会读取默认标注文件,默认标注文件名与图片名相同,后缀名为json。3d状态下默认标注文件名为该文件夹下第一张图片名+“_3D”,后缀名为json。
    • 标注文件格式说明:type表明标注形状的类型,分为Brush(画刷形状),Rectangle(矩形形状),Polygons(多边形形状),Circle(圆形形状),Curve(平滑曲线形状),Brush3D(3d画刷形状),Rectangle3D(3d长方体形状);color代表标注形状颜色;label代表标注标签文字,points代表像素点位(2d存储为横纵坐标比例,3d存储为横纵坐标比例,及z方向上的顺序)radius代表画刷形状的大小或者圆形形状的大小;width代表矩形的宽;height代表矩形的高;zspan代表3d长方体在z方向上的跨度
    • 程序中使用标签列表窗口显示标签,且在点击标签时,中心窗口会同步标注形状被选中,内部会显示为填充,其中颜色也为由用户自定义。
    • examples文件夹里面有样例图片以及样例标注文件可做测试用。

往期推荐

本文由mdnice多平台发布


科学冷冻工厂
29 声望2 粉丝