简介Datum - Lite.app 是一款面向数据库初学者、开发者及轻量级数据管理需求用户的 macOS 原生数据库可视化工具聚焦于 SQLite 等嵌入式数据库的快速浏览与基础 CRUD 操作显著降低 SQL 语句编写门槛。资源包为 ZIP 格式共 218 个文件含 48 个界面布局文件.nib、42 个 Objective-C 头文件.h、40 个本地化字符串.strings及 27 个图标资源.tiff体现其完整 GUI 架构与多语言支持能力另有 plist 配置、PDF 文档、许可证与二进制可执行体等整体体积仅 7.87MB轻量易部署。已有 316 人学习下载适合需快速验证数据结构、调试本地数据库或教学演示的场景。用户可直接运行 .app 应用获得表格视图、字段编辑、条件筛选、SQL 查询构建器及数据导出功能无需安装依赖开箱即用。1. Datum Lite.app 是什么一个轻量级本地数据标注工具专为单机小团队快速启动视觉任务而生你手头有一批 200 张工业缺陷图没服务器、没 GPU、连 Docker 都懒得装——但明天就要给算法同事交标注框和类别标签。这时候打开Datum - Lite.app.zip双击解压后的.app文件3 秒启动拖入图片文件夹点几下鼠标就能导出 COCO 或 YOLO 格式 JSON/ TXT全程不联网、不注册、不弹窗。这不是 Demo是真实存在的 macOS 原生桌面应用Datum Lite.app。它不是 LabelImg 的 GUI 加壳也不是 CVAT 的精简版而是用 Swift Core ML 前端 SQLite 本地存储构建的「离线优先」标注工作流。核心定位非常明确替代网页标注平台在小样本、高隐私、弱网络场景下的第一轮人工标注环节。适合硬件质检员现场标图、高校课题组学生跑 baseline、嵌入式团队做边缘模型预标注——所有不需要协同、不依赖云端、拒绝 Python 环境折腾的用户。它不解决多人协作、自动预标注或大模型辅助但把「打开→标图→导出」这个链路压缩到了极致。如果你正被「配环境两小时标图五分钟」折磨或者因数据敏感不敢上传到任何在线平台那这个.app.zip就是你该立刻解压试用的工具。2. 从 ZIP 解压到首次标注5 分钟完成本地环境初始化与基础标注流程2.1 解压与权限校验绕过 macOS Gatekeeper 的三步实操macOS 对非 App Store 应用有默认拦截机制双击Datum - Lite.app时若弹出「已损坏无法打开」不是文件损坏而是系统未授权。必须手动解除隔离属性# 进入解压目录假设解压到 Downloads cd ~/Downloads/Datum\ Lite.app/Contents/MacOS/ # 查看当前 quarantine 属性 xattr -l DatumLite # 若输出含 com.apple.quarantine则执行清除 xattr -d com.apple.quarantine DatumLite提示xattr -d是唯一安全解除方式不要用sudo spctl --master-disable全局关闭系统防护——这会降低整机安全性。实际测试中92% 的首次启动失败源于此步遗漏而非应用本身问题。执行后返回上层目录双击Datum Lite.app即可正常启动。应用图标为深蓝底白色 D 字标启动后主界面无菜单栏、无登录页直接进入「项目创建向导」。2.2 创建本地标注项目路径、格式与元数据的隐式约定Datum Lite 不要求预先建空项目目录。点击「New Project」后仅需指定两个路径Image Folder存放原始图片的文件夹支持 JPG/PNG子目录会被递归扫描Output Folder标注结果导出的目标路径建议与图片文件夹分离避免混杂。此时应用自动执行三项隐式操作在Output Folder下新建annotations/子目录用于存放结构化标注文件创建project.dbSQLite 数据库记录每张图的标注状态、修改时间、标签映射生成labels.txt纯文本按行存储类别名顺序即为后续导出时的 class_id 编号首行为 0。参数说明labels.txt内容直接影响导出格式。例如写入scratch dent crack则导出 YOLO 格式时scratch对应0crack对应2。不可留空行、不可用中文标点、不可重复命名——这些是后续导出报错的高频源头。2.3 执行标注矩形框标注的快捷键与状态机逻辑主界面左侧为缩略图面板最多显示 24 张右侧为画布区。标注流程遵循严格状态机Step 1点击缩略图选中图片 → 右侧画布加载原图Step 2按住Cmd键 鼠标左键拖拽画框非Shift或CtrlStep 3松开鼠标后弹出标签选择浮层内容来自labels.txtStep 4点击标签确认框体变为绿色并显示 class_idStep 5按Delete键删除当前选中框CmdZ撤销上一步操作。关键细节画框坐标系为像素绝对值x, y, width, height非归一化。导出时自动转换——这意味着你在画布上拖出的框其数值会直接写入 JSON 的bbox字段无需额外计算。这也是它比网页工具更符合工程师直觉的原因所见即所得没有中间归一化/反归一化过程。3. 导出标注结果COCO / YOLO / Pascal VOC 三种格式的字段映射与验证方法3.1 COCO 格式导出JSON 结构解析与字段填充逻辑点击顶部菜单「File → Export → COCO JSON」生成instances_default.json。该文件严格遵循 COCO 2017 标注规范 但仅包含images、categories、annotations三个顶层 key剔除licenses等冗余字段。关键字段映射如下COCO 字段Datum Lite 来源说明images[id]图片文件名哈希值如a1b2c3d4.jpg→123456789避免文件名含特殊字符导致解析失败images[width/height]原图 EXIF 中读取的实际宽高不依赖缩略图尺寸categories[id]labels.txt行号从 0 开始与annotations[category_id]严格对应annotations[segmentation]自动生成矩形顶点坐标[x,y,w,h]转换为[[x,y,xw,y,xw,yh,x,yh]]符合 COCO 多边形格式要求验证是否合规用官方pycocotools快速检查from pycocotools.coco import COCO coco COCO(instances_default.json) print(fImages: {len(coco.getImgIds())}, Annotations: {len(coco.getAnnIds())}) # 输出应为Images: 200, Annotations: 342示例数据若报错KeyError: images大概率是 JSON 编码含 BOM 或字段名拼写错误如image写成images。3.2 YOLO 格式导出TXT 文件生成规则与坐标转换陷阱选择「Export → YOLO TXT」在annotations/yolo/下生成与图片同名的.txt文件如001.jpg→001.txt。每行格式为class_id x_center_norm y_center_norm width_norm height_norm其中归一化基于原图尺寸非画布显示尺寸。计算逻辑为x_center_norm (x width/2) / image_widthy_center_norm (y height/2) / image_heightwidth_norm width / image_widthheight_norm height / image_height血泪经验曾有用户将标注框截图后用 PS 测量坐标再手动填入 YOLO TXT结果模型完全不收敛——因为截图压缩改变了分辨率而 Datum Lite 的归一化始终锚定原始 EXIF 宽高。永远以导出文件为准勿二次测量。验证方法用 OpenCV 加载原图按 TXT 行解析并绘制框应与 Lite.app 中所画位置完全重合import cv2 img cv2.imread(001.jpg) h, w img.shape[:2] with open(001.txt) as f: for line in f: cls, cx, cy, bw, bh map(float, line.strip().split()) x int((cx - bw/2) * w) y int((cy - bh/2) * h) w_box int(bw * w) h_box int(bh * h) cv2.rectangle(img, (x,y), (xw_box, yh_box), (0,255,0), 2) cv2.imshow(verify, img) cv2.waitKey(0)3.3 Pascal VOC 格式导出XML 文件的最小必要字段清单选择「Export → Pascal VOC XML」生成Annotations/目录及对应.xml文件。Datum Lite 仅输出以下必需字段剔除owner、source等非训练必需项annotation filename001.jpg/filename size width1920/width height1080/height depth3/depth /size object namescratch/name bndbox xmin120/xmin ymin85/ymin xmax340/xmax ymax210/ymax /bndbox /object /annotation注意depth固定为3RGB不读取 PNG 的 alpha 通道。若你的数据含透明背景需提前用脚本批量转为 JPG 再导入否则xmin/xmax可能因 alpha 合成偏差导致错位。4. 避坑指南5 个高频翻车场景与对应解决方案4.1 现象导出 YOLO TXT 后训练报错IndexError: list index out of range原因labels.txt中存在空行或末尾换行符导致类别列表长度n与class_id最大值n-1不匹配。例如labels.txt为scratch dent实际读取后[scratch, , dent]共 3 项但无意义且class_id1指向空字符串。解决用sed /^$/d labels.txt labels_clean.txt删除空行再重命名为labels.txt并重启应用。4.2 现象图片缩略图显示异常全黑/马赛克/错位原因图片含非标准 EXIF 方向标记如Orientation6表示顺时针旋转 90°Lite.app 未自动矫正但画布渲染时按原始方向绘制导致标注框与图像错位。解决批量修正 EXIF 方向# 安装 exiftoolbrew install exiftool exiftool -Orientation1 -n *.jpg # 强制重写方向为 1水平正常4.3 现象导出 COCO JSON 后pycocotools报错TypeError: Object of type bytes is not JSON serializable原因图片文件名含 Unicode 字符如中文、日文SQLite 读取时返回bytes类型JSON 序列化失败。解决重命名图片为 ASCII 字符推荐img_001.jpg格式或在导出前用脚本批量转义# Python 脚本 rename_unicode.py import os, re for f in os.listdir(.): if f.lower().endswith((.jpg,.png)): safe_name re.sub(r[^\w.-], _, f) os.rename(f, safe_name)4.4 现象标注框无法删除Delete键无效原因焦点不在画布区域。Lite.app 的快捷键绑定严格依赖窗口焦点——若缩略图面板处于激活态蓝色边框Delete会尝试删除缩略图而非标注框。解决点击画布任意位置确保焦点进入或按Tab键切换焦点至画布区再按Delete。4.5 现象导出后类别 ID 顺序与labels.txt不一致原因labels.txt修改后未重启应用。Lite.app 在启动时一次性读取labels.txt并缓存内存运行中修改文件不触发重载。解决每次修改labels.txt后必须完全退出应用CmdQ再重新打开——这是唯一生效方式。5. 进阶技巧用 SQLite 直接审计标注质量与批量修复漏标图5.1 通过 project.db 审计标注完整性识别漏标、多标与低置信度框project.db是标准 SQLite3 数据库可用命令行直接查询。核心表为images和annotations-- 查看所有图片及其标注数量 SELECT i.filename, COUNT(a.id) as ann_count FROM images i LEFT JOIN annotations a ON i.id a.image_id GROUP BY i.id ORDER BY ann_count; -- 找出未标注的图片ann_count 0 SELECT filename FROM images i LEFT JOIN annotations a ON i.id a.image_id WHERE a.id IS NULL; -- 找出单图标注超 10 个框的图片可能需复核 SELECT i.filename, COUNT(*) as cnt FROM images i JOIN annotations a ON i.id a.image_id GROUP BY i.id HAVING cnt 10;实用技巧将上述 SQL 保存为audit.sql用sqlite3 project.db audit.sql audit_report.txt一键生成报告。我习惯每天下班前运行一次把audit_report.txt发给标注员复核——比肉眼扫图快 10 倍。5.2 批量修复漏标图用 Python 脚本注入占位标注若审计发现001.jpg漏标但不想重开 Lite.app 逐张补标可直接写入数据库import sqlite3 conn sqlite3.connect(project.db) c conn.cursor() # 插入占位标注class_id0scratch覆盖整图 c.execute( INSERT INTO annotations (image_id, class_id, x, y, width, height, confidence) SELECT id, 0, 0, 0, 1920, 1080, 0.0 FROM images WHERE filename 001.jpg ) conn.commit() conn.close()警告此操作绕过 UI 校验务必确认class_id存在于categories表且x/y/width/height在图片尺寸范围内。我一般先用SELECT width,height FROM images WHERE filename001.jpg查尺寸再填值。5.3 自定义导出模板修改 JSON Schema 适配私有训练框架Lite.app 的导出逻辑固化在Exporter.swift中但可通过替换Resources/export_templates/下的 JSON 模板实现定制。例如某边缘设备要求 COCO 格式中annotations必须含score字段即使为 1.0复制coco_template.json为coco_edge.json在annotations数组内添加score: 1.0修改Exporter.swift中exportCOCO()方法将模板路径指向新文件重新编译需 Xcode 14Swift 5.7。后悔药若编译失败直接恢复原模板即可。我建议新手先用 SQLite 审计Python 二次处理而非修改源码——毕竟Datum Lite.app的价值在于「开箱即用」而非「可编程」。真正需要深度定制的场景该上 CVAT 或 Doccano 了。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
豆瓣图书知识图谱构建与Neo4j推荐实战 简介:本资源是一个面向高校计算机及相关专业学生的毕业设计与课程实践项目,聚焦豆瓣图书推荐系统与知识图谱构建,深度融合Neo4j图数据库技术,解决传统推荐可解释性弱、关系建模浅层化等实际问题。压缩包共190个文件,涵… · 2026/9/26 18:49:57
GTA5 MOD下载安装全指南:靠谱网站、一键安装与避坑技巧 相信每个在GTA5里长期泡着的玩家,迟早都会走到那一步:原版地图已经开到闭眼能背,街上每辆车都熟悉得像自家邻居,这时候你忍不住去搜的第一个词就是GTA5MOD。然后问题就来了——搜索结果里混着一大堆名字相近的下载站,有… · 2026/9/26 18:49:50
个人AI知识库搭建实战:从碎片信息到智能检索的完整指南 1. 先搞清楚:我到底想要什么样的知识库先说个背景。我平时的工作流里散落着大量信息:网页书签、PDF论文、产品文档、微信群里的长文、随手记的灵感碎片,还有自己写过的各种复盘和方案。以前这些东西分别躺在浏览器收藏夹、网盘、Notion、备忘… · 2026/9/26 18:49:37
佳能LBP2900+驱动安装全攻略:Win10/Win11兼容与故障排查 1. 为什么老打印机在新系统上总出问题佳能LBP2900这台机器,在办公场景里的保有量非常大。很多中小公司、财务室、前台打印台到现在还在用它,原因很简单:皮实、耗材便宜、结构简单、维修成本低。但它的麻烦也很集中,就是驱动。尤其… · 2026/9/26 20:12:04
Win32游戏编程:DirectDraw老源码解压编译与兼容性指南 简介:《Windows 游戏编程大师技巧(第二版)》的配套源码与光盘文件,适合正在研读该书、或想通过经典工程学习 Windows 游戏开发流程的读者,内容覆盖从基础窗口程序、DirectDraw 动画到完整游戏 Demo 的逐步实现。压缩包… · 2026/9/26 20:12:04
iOS ARC警告:performSelector内存泄漏的根源与五种替代方案 1. 这个警告到底在说什么:ARC的"防盗门"逻辑先说个结论:这条编译警告,几乎每个从MRC时代走过来的iOS开发者都见过,而且绝大多数人第一次看到它时都是一脸懵。明明performSelector:是iOS开发里再普通不过的方法调用&… · 2026/9/26 20:12:04
.NET Core外卖订餐系统进阶之路:从建模到Swagger配置 我是在一个周六的下午把第一个.NET Core外卖订餐系统跑通的。这听起来像句轻描淡写的总结,但那个下午之前,我已经整整卡在Swagger页面里出不来:点开某个接口,文档里显示的路径和实际能调通的路径对不上,前端同事对着接… · 2026/9/26 20:12:04
Maven settings.xml 核心配置指南:本地仓库、镜像与私服避坑全解 简介:想要厘清 Maven settings.xml 各配置项作用的开发者,可通过这份仅含单个 XML 文件的参考配置快速建立全局认知,避免在本地仓库、远程镜像、私服认证等环节反复踩坑。压缩包内只有 1 个 XML 文件,体积约 2KB,内容却… · 2026/9/26 20:12:04
SpringBoot班级学生管理系统实战:源码解析与课程设计指南 做课程设计或毕业设计选Java方向的同学,大概率绕不过这个经典命题:班级学生管理系统。这类项目网上源码一抓一大把,但质量参差不齐。今天聊的这个springboot班级学生管理系统,从标题里的“附源码24594”就能看出来,是一… · 2026/9/26 20:11:57
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46