简介这份资源是一款免 Python 环境的 labelimg.exe 图像标注工具包主要面向需要快速完成图像标注、又不想搭建 Python 开发环境的计算机视觉初学者与研究人员。工具采用图形界面直接双击运行即可启动支持边界框、多边形等常用标注方式并可将标注结果保存为 XML/YAML 格式方便导入 Pascal VOC、YOLO 等机器学习框架内置图像查看器支持缩放和平移便于看清图像细节后进行精准标注。资源包内共计 109 个文件包含可直接执行的 labelimg.exe、13 个 DLL 运行库、20 个 Python 源码、19 个 pyc 编译文件另有图标、文档和项目配置文件压缩后大小约 22.64MB既轻量又保留了必要的运行组件与源码参考。解压后无需额外配置即可上手也便于有需要的用户查阅源码或二次修改。目前已有 5012 人学习下载适合目标检测、语义分割等任务的快速标注入门。 做目标检测的朋友应该都经历过这个场景模型选好了数据集还没着落。YOLO、SSD 这类模型训练之前绕不开给图片画框标注。而提到画框标注labelimg 几乎就是默认工具网上随便一搜数据标注工具十个教程里八个用的都是它。可真正动手时会发现第一次用 labelimg 的人消耗精力最多的地方不是标注而是装环境——装 Python、配 pip、建虚拟环境、装依赖、处理各种报错一圈下来可能还没画出一个框。所以当labelimg.exe 不用安装 python 环境这个说法出现时马上吸引了大量被环境配置劝退的标注新手。这篇文章就围绕这个免安装的 exe 版本把它的原理、用法、格式门道和坑一次性讲清楚。1. labelimg.exe 的免安装到底是什么意思1.1 它只是把 Python 环境打包了一个现实情况是labelimg 本身就是用 Python 写的图形界面工具核心代码依赖 PyQt5 和 Python 标准库。所以所谓免安装并不是说这东西脱离了 Python而是有人用 PyInstaller 这类打包工具把 Python 解释器、PyQt5 依赖、labelimg 的核心代码全部塞进了一个 exe 文件里。你双击 exe 时它会在临时目录里把运行环境释放出来再启动所以你表面上没装 Python但程序内部自带了一个完整的解释器。用生活化类比pip 安装版就像你自己买菜、切菜、开火把菜做好exe 版像别人把菜做好装进保温盒你直接打开就吃。保温盒里确实有菜、有调味料、有餐具只是不需要你亲自下厨房。理解了这一层你就能明白为什么 exe 版体积动辄一两百兆也就能明白为什么它和系统里的 Python 版本完全互不干扰——你机器上 Python 3.8 也好、3.12 也罢都不会影响这个 exe 的运行。1.2 exe 版和 pip 版怎么选对比项exe 免安装版pip 安装版环境要求无需自装 Python需要 Python 环境启动方式双击 exe命令行输入 labelimg部署门槛极低中高版本更新速度依赖打包者通常较慢跟随官方最新版本二次开发基本不可可改源码、可集成脚本适合场景快速标注、临时使用、新手体验长期标注、批量处理、自定义功能我给的建议很简单如果你只是想把几百张图标完喂给模型训练exe 完全够用如果你除了标注还希望自动化生成预处理、自定义标签逻辑、或者在训练流程里批量跑标注脚本那你就该走 pip 版。两条路径并不是二选一很多人两种方式都保留着不同场景用不同方式。2. 拿到 labelimg.exe 后怎么跑起来2.1 获取渠道与下载前后的校验先说下载。exe 版本多数来自 GitHub Release、技术社区分享或网盘转载来源决定风险。从官方或可信渠道下载是第一原则下载完最好核对一下文件哈希。这里要特别提一句PyInstaller 打包的 exe 很容易触发 Windows Defender 等杀毒软件的误报很多正经打包工具也逃不过这个命运。看到报毒先别慌先看文件来源和哈希再用在线扫描服务综合判断。另一个容易被忽略的点是路径。下载后的 exe 建议放在纯英文路径下比如D:\tools\labelimg.exe不要放在带中文的桌面文件夹里。因为 PyInstaller 打包的 exe 在运行时会在临时目录解包中文用户名或中文路径在某些 Windows 版本上会导致程序启动后找不到文件、打不开图片等奇怪问题。这种问题最坑的地方在于报错信息不明确可能只是弹个无意义的提示框让人完全摸不着头脑。2.2 首次启动与界面速览双击 exe等待几秒主界面就出来了。整体布局很直观左侧是图片预览区右侧是文件列表和标注框列表。顶部工具栏的核心按钮有 Open Dir打开图片目录、Change Save Dir设置标注文件保存目录、Next Image/Prev Image上一张/下一张、Verify Image标记验证、Save保存当前标注。第一次使用最常见的困惑是为什么打开的图片目录里看不到图通常是因为没有设置保存目录或者图片目录里混入了程序不支持的格式。labelimg 默认支持常见图像格式jpg、png、bmp 这些没问题。建议在动手标注之前先把图片目录和保存目录都设置好再开始干活。这两步顺序错了保存的 xml 或 txt 就会跑到奇怪的位置后面整理数据集时够你头疼的。另外如果你在启动时遇到缺少MSVCP140.dll之类的报错通常是系统缺少 VC 运行库装一个对应的运行库合集就能解决这是 exe 版常见的依赖问题。3. 标注流程与格式选择的门道3.1 动手前先把目录结构理清在开始标第一张图之前最好先把目录结构定好。我平时用的结构是这样dataset/ ├── images/ # 原始图片 ├── annotations/ # 标注结果 └── predefined_classes.txt # 预设类别列表images 放原图annotations 放标注结果两个目录建议同级。这样做的意义在于训练脚本和数据划分脚本处理起来最顺手而且 labelimg 在 YOLO 模式下会在保存目录自动生成 classes.txt。如果你把标注结果和原图混在一个目录后期整理数据、划分训练集验证集会非常痛苦。这个习惯从第一个项目就要养成别等到标了几千张图以后再去重构目录。3.2 两种保存格式的底层逻辑这是最值得花时间理解的部分。labelimg 支持两种输出格式PascalVOC 格式会在保存目录生成 xml 文件记录每个目标的类别和 bndbox 坐标xmin、ymin、xmax、ymax是绝对像素值人眼可读YOLO 格式会生成同名 txt 文件每行一个目标格式是class_id x_center y_center width height坐标都做了归一化除以图片宽高。训练 YOLO 系列模型时txt 格式可以直接用训练 Detectron2、MMDetection 这类框架时xml 格式更常见。举个例子一张 800x600 的图里有一只猫框的左上角在 (100, 80)右下角在 (320, 480)。PascalVOC 里对应大概是annotation size width800/width height600/height /size object namecat/name bndbox xmin100/xmin ymin80/ymin xmax320/xmax ymax480/ymax /bndbox /object /annotation而同一个框在 YOLO 模式下对应的 txt 内容是0 0.2625 0.4667 0.275 0.6667这些数字怎么来的x_center(100320)/2/8000.2625y_center(80480)/2/6000.4667width(320-100)/8000.275height(480-80)/6000.6667。归一化坐标不依赖图片实际分辨率模型训练做数据增广时也不用做额外的坐标换算这是 YOLO 格式能被主流框架直接使用的重要原因。界面顶部有个当前格式按钮显示PascalVOC或YOLO点击即可切换。这里有个容易被坑的地方默认配置下如果你之前用 PascalVOC 保存过某张图切到 YOLO 后再保存可能同时存在 xml 和 txt 两个文件这容易造成数据混乱。建议一个项目全程只使用一种格式比如最终要训练 YOLO就一开始切到 YOLO 模式不要中途混用。另一个坑是 classes.txt。一旦切换到 YOLO 模式labelimg 会在保存目录维护一个 classes.txt每次保存都会重写它。如果你手动在 classes.txt 里添加了第 4 类、第 5 类下一次保存后很可能被覆盖回程序自己检测到的类别集合。正确做法是在predefined_classes.txt里维护你所有的预设标签启动前先把这个文件配好避免中途反复改类名。这个小知识点能帮你省掉大量重复劳动。3.3 标注操作与快捷键细节标注操作本身不复杂按 W 进入画框模式在图上按住鼠标左键拖出矩形框松开后弹出类别输入框输入或选择类别后回车确定按 D 切到下一张按 A 回上一张按 CtrlS 保存当前图空格键可以将图片标记为已验证图片上方会出现绿色边框。这些快捷键熟练后一张图的平均标注时间能压到几秒一天标个几百张并不夸张。还有一个实用技巧标注大图时先用 Zoom In 放大局部画完框后按快捷键快速平移。不过在非 100% 缩放下个别老版本 exe 存在坐标偏移问题虽然现在的版本大多修复了但为了保险关键框最好在 100% 缩放下核对一遍尤其是小目标密集的场景。你也不想辛苦标完几千张图训练时发现框全部偏了几个像素吧。4. 实战中的常见问题与排查技巧4.1 常见问题速查表exe 版用久了总会碰到一些反复出现的问题。我把平时遇到的和身边朋友问得多的整理成了一张表问题现象可能原因解决思路杀毒软件删掉 exePyInstaller 打包特征被误报从可信渠道重新下载添加信任白名单双击后无反应缺少 VC 运行库或系统组件安装对应运行库检查系统是否为 64 位中文路径下无法打开图片程序对非英文路径兼容差将工程放在纯英文路径避免中文用户名目录切到 YOLO 后没生成 txt当前仍是 PascalVOC 模式点击顶部格式按钮切换为 YOLO 后重新保存classes.txt 刚加的类又没了每次保存会重写该文件用 predefined_classes.txt 维护预设类别标注框在 Zoom 时偏移缩放映射问题放大标注时核对坐标关键框在 100% 下复查多图标注后内存占用过高预览加载过多高分辨率大图分批标注及时关闭程序重启这张表里的问题我基本都实际遇到过尤其是杀毒、路径、格式这三大类占掉了日常排障的八成时间。第一次用的朋友如果卡住了先对照这张表排查大部分问题都能自己解决不用急着去群里问。4.2 我踩过的几个坑我实际用下来踩过两个印象比较深的坑。第一个是杀毒软件误报。当时从某个渠道下载了一个打包好的 labelimg.exeWindows Defender 直接给删了。我第一反应是文件可能被二次打包动了手脚后来从可信渠道重新下载把哈希值比对无误再在 Defender 里加了排除项才算顺利跑起来。自此我养成一个习惯凡是这种命令行工具或打包 exe下载后先算哈希、再做一次在线扫描确定干净再放进工程目录。第二个坑是格式混乱。有一次项目要训练 YOLOv5我前期一直用的默认 PascalVOC 模式标了 200 多张图后面切到 YOLO 模式继续标。等数据整理时发现同名的 xml 和 txt 混在一起转换脚本跑出来类别编号对不上。最后没办法写了段脚本把 xml 统一转 txt 才救回来。从那以后我每个项目开始前第一件事就是确认标注模式这个习惯帮我避免了很多返工。5. 什么时候该从 exe 迁回 Python 环境5.1 exe 版的边界在哪里聊完优势也得说边界。exe 版最大的问题是版本滞后。labelimg 官方仓库更新频率不算高但社区修复和一些实用功能比如更好的高 DPI 适配、部分格式兼容修复往往只体现在源码版本里打包版不一定跟着更新。如果有一天你发现 exe 版在某个新的 Windows 版本上表现异常大概率是因为打包时用的运行库太旧。其次是无法脚本化。数据标注到了一定规模很多人会希望批量预标注、批量清洗、自动生成标签检查报告。这些东西都依赖 import labelimg 或调用其底层接口而 exe 版只是一个独立程序无法嵌入到你的 Python 脚本里。如果你做 halcon 深度学习之类更专门的标注流程或者团队在评估 cvat 这类平台化标注工具那 exe 版就只是个临时方案只能在初期帮你跑通流程很难承担起数据工程的一部分职责。5.2 按需求选择你的路线所以我的选择标准很简单刚入门、只标几十到几百张图、训练小模型验证流程直接用 exe省掉环境折腾。长期做数据标注、要写脚本批量处理、需要紧跟官方版本走 pip 安装路线。如果你决定走 pip 路线最简步骤是装好 Python 后开一个虚拟环境隔离依赖python -m venv labelimg_env激活虚拟环境pip install labelimg然后命令行输入labelimg启动。过程中如果遇到 PyQt5 相关的依赖报错基本都是 Python 版本和 pip 版本不匹配造成的优先检查虚拟环境和 Python 版本。exe 版和 pip 版并不冲突我自己的主力机上两个都有exe 给同事快速标注用pip 版用来跑脚本。最后再分享一个个人经验。我之前在测试机上一直用 exe 版做临时快速标注主力开发机上用 pip 版跑批量脚本。在实际推荐给刚入门的朋友时我会先让他们用 exe 版把标注流程跑通、把 PascalVOC 和 YOLO 格式的差异看明白等他们真正理解标注这件事本身就是数据工程的一部分之后再去碰环境配置心态会完全不一样。如果你刚开始接触目标检测别一上来就被环境配置劝退先下载一个 exe 标注一张图试试整个机器学习数据准备的地基就算打下来了。本文还有配套的精品资源点击获取