myvision
浏览器里的CV标注工作站,支持ML自动标注和5种格式导出
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
浏览器里的CV标注工作站,支持ML自动标注和5种格式导出
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你是一名计算机视觉工程师,手头有500张街景照片需要标注出其中的行人、汽车和交通标志。传统做法是在Photoshop里一个一个画框——光是想一想就让人头皮发麻。
现在,有了 MyVision,这一切都变得不一样了。只需把照片拖进浏览器,用鼠标勾勒出目标物体,一个专业的图像标注数据集就能在几分钟内生成完毕。如果懒得手动标注,它还能借助 TensorFlow.js 内置的 COCO-SSD 预训练模型自动识别常见物体,一键生成初始标注框,你只需要微调确认即可。
图1:MyVision 多边形标注功能演示
图1:MyVision 支持完整的多边形编辑操作,包括添加、删除、拖拽顶点,实时调整标注形状
MyVision 由立陶宛独立开发者 Ovidijus Parsiunas 创建于2019年2月,至今已维护超过六年。这个项目的诞生背景非常清晰——彼时市面上的图像标注工具要么功能单一、价格昂贵,要么需要复杂的本地环境配置。开发者本人从事计算机视觉相关工作,深谙数据标注的痛点,于是决定自己动手做一个在浏览器里就能跑、功能完整且完全免费工具。
六年时间里,项目经历了多个版本的迭代,从最初简单的矩形标注,逐步演进为支持多边形、点标注、COCO/YOLO/VGG/CSV/XML 等主流数据集格式导出的全能工具。如今 GitHub 上已积累超过 609 Stars 和 70 Forks,被广泛应用于学术研究和小型团队的 AI 训练数据准备。
从技术角度看,MyVision 绝非一个简单的 HTML 文件。它的前端代码总量达 541个 JavaScript 模块文件,采用清晰的 MVC 架构组织。核心依赖包括:
Fabric.js — 这是整个标注体验的基石。这个 JavaScript 画布库提供了丰富的矢量图形操作能力,包括形状绘制、变换、组合、层级管理等。MyVision 在 Fabric.js 之上构建了一套完整的标注交互系统:矩形绘制模式、点多边形绘制模式、交叉十字光标模式等,每种模式下鼠标事件的处理逻辑都封装在独立模块中。
TensorFlow.js + COCO-SSD — 最有价值的差异化功能。当用户开启"机器学习"模式时,TensorFlow.js 会在浏览器本地加载 COCO-SSD 预训练模型(这是一个能识别80类常见物体的目标检测模型),对当前图片进行推理,生成初始边界框。整个推理过程完全在本地执行,不依赖任何云端 API,用户数据永远不会离开浏览器窗口。
Webpack 5 + Babel — 现代化的构建流水线。源代码经过 Babel 转译和 Webpack 打包后,最终生成一个可以在所有现代浏览器中运行的 bundle 文件。这种架构使得项目既有良好的开发体验(模块化、热更新),又有优秀的生产环境性能。
从 src/app/ 目录结构可以看出项目的复杂度和专业性:
值得注意的是,项目没有引入任何主流前端框架(React/Vue/Angular),完全依靠原生 JavaScript 模块系统实现代码组织。这种选择对于一个工具类应用来说是务实的:更少的依赖意味着更小的 bundle 体积和更快的加载速度。
MyVision 的功能设计围绕图像标注的核心工作流展开:
标注工具:支持矩形边界框(Bounding Box)和多边形两种主要标注形态。多边形标注尤其适合形状不规则的物体(如树枝、建筑轮廓),可以精细地贴合目标边缘。每个标注可以关联一个类别标签(Label),标签可以自定义颜色和名称。
智能辅助:内置的 ML 自动标注功能让效率提升一个数量级。对于 COCO-SSD 支持的80类物体(人、车、猫、狗、杯子、椅子等),模型能自动生成候选框,用户只需审核、修正、确认即可。这对于大规模数据集的前期预处理尤其有用。
格式导出:支持导出为5种主流数据集格式——COCO JSON(最广泛使用的图像检测标注格式)、YOLO TXT(YOLO系列模型专用)、VGG JSON(VGG Image Annotator格式)、CSV(通用表格格式)和 PASCAL VOC XML(传统目标检测标准格式)。这个多格式导出能力是 MyVision 的核心竞争力之一,因为大多数开源标注工具只支持1-2种格式。
数据集转换:除了创建新标注,用户还可以导入已有的标注文件(甚至其他格式的标注),MyVision 会自动识别并加载,让用户继续编辑或直接转换为其他格式。这对于整合来自不同工具的历史标注数据非常有价值。
这是 MyVision 最令人惊喜的地方——它根本不需要部署。直接打开仓库中的 public/index.html,应用就启动了。所有依赖(Fabric.js、TensorFlow.js)都已打包在内,无需 npm install,无需任何服务器。
对于开发者想要修改源码,标准流程也很简单:
git clone https://github.com/OvidijusParsiunas/myvision
cd myvision
npm install
npm run watch # 开发模式,监听文件变化并热更新
构建产物通过 GitHub Actions 自动部署到 GitHub Pages,每次 master 分支更新都会同步发布。生产部署可以直接 fork 仓库后启用 GitHub Pages,无需任何配置。
硬件需求极低:任意能运行现代 Chrome/Firefox 的设备均可,内存 1GB、磁盘 50MB 足矣。完全无需 GPU——TensorFlow.js 可以在 CPU 上运行(虽然慢一些,但完全可以接受)。
作为一个个人维护六年的项目,MyVision 也有其局限性:
没有自动化测试:package.json 中的 test 脚本只是一个占位的 echo 命令,没有任何单元测试或集成测试。这在功能迭代过程中存在回归风险,也是项目从个人工具走向团队生产使用时需要优先补齐的部分。
不支持图像分割:虽然支持多边形标注,但导出格式中并不包含像素级的分割掩码(Mask)。如果你的任务是 SAM(Segment Anything)类型的高精度分割标注,MyVision 并不能直接满足需求。notes.txt 中记录了作者对此的思考:「Decided not to use image segmentation because it works on pixel bases」——当前的多边形只是视觉上的精确贴合,数据层面仍以边界框坐标存储。
单人维护:项目的几乎所有代码都由同一位开发者贡献,长期维护存在单点风险。代码组织虽然清晰,但没有开放外部贡献者入口(除了基础的 fork/PR 流程),社区参与度有限。
在 2024-2025 年的 AI 数据标注市场中,MyVision 代表了一种独特的定位:完全免费、完全本地、无需注册。相比 Scale AI、Labelbox、CVAT 等商业或企业级平台,MyVision 的功能深度自然不可同日而语,但对于个人研究者、小型团队和教学场景,它提供了无可替代的便利性。
从技术演进角度看,MyVision 的 ML 辅助标注功能代表了行业趋势:人类标注员越来越少地做纯粹的体力劳动,而是转变为审核者和校正者。COCO-SSD 自动生成的边界框虽然不能做到100%准确,但在大多数常见场景下能覆盖80%以上的标注工作量。类似的思路已经被 CVAT、Label Studio 等主流平台采纳。
最后,MyVision 采用 GPL-3.0 开源许可证,这意味着你可以自由使用、修改和分发代码,但修改后的版本也必须开源。如果你需要在项目中使用它,这是完全可行的——只需要遵守开源协议即可。