大胆猜想:Labelme的AI多边形(AI-Polygon)功能是怎么实现的?

30 阅读2分钟

大胆猜想:Labelme的AI多边形(AI-Polygon)功能是怎么实现的?

百度一下,有关AI-Polygon的词条大多是使用教程,却很少有人挖掘其背后的原理。在开发自己的标注软件过程中,我设想出一个接近原版的开发逻辑:

1,加一个按钮(名称为AI多边形),点击开启AI-Polygon功能,同时关闭其他所有鼠标操作会触发的功能

2,跳出选项框,供用户选择模型,用户选择后选项框关闭,并记录用户的选择作为flag

3,用户用左或右键点击画布,创建一个点,并且根据左或右键,设置该点的status值(左为1,右为0)

4,获取该点坐标、flag、status,存到一个字典里(还可根据软件用途扩展功能,例如记录当前图片名称等等)

5,调用API,API接收字典,完成模型推理,并返回一个列表,组成是:((点坐标),(点坐标)……),分割列表得到接下来要画的图形边框上多个点的坐标

6,根据API返回点的坐标,画出图形,图形绘制逻辑见附录1

7,若用户继续点击画布,则重复步骤3-6(称为一个轮回),并且在再次执行完步骤5之后,先清除上一个轮回画出的图形(注意!在点击AI多边形按钮之前画布上原有的图形不要清除),再执行该轮回的步骤6

8,若用户再次点击“AI多边形”按钮,则结束功能,保留最后一次绘制的图形

附录:

1, 图形绘制流程:

a.监听鼠标(鼠标按下、移动、释放等)

b.对象的创建和标签设置

c.对象的同步(随图像缩放和移动)

d.对象的加载和导出

e.对象的编辑支持

f.对象的清除功能

g.对象的特殊功能:如旋转框(RotatedRect)