本文档旨在针对大家在使用 X-AnyLabeling
项目中碰到的一些常见问题进行梳理,以更好地帮助大家使用该工具,后续会不间断地更新此文档。
Q: X-AnyLabeling
目前支持哪些标注样式?
A: 当前支持多边形、矩形、圆形、直线和点。
Q: X-AnyLabeling
目前提供哪些基础模型?
A: 详情可移步至 models_list 文档查看。
Q: 如何将打标完的 *.json
标签文件转换为 YOLO
/VOC
/COCO
等主流格式?
A: 考虑到当前标注工具框架的兼容性,为了更好的扩展和维护,目前部分功能并没有集成到工具内,而是视为一个独立的组件抽离出来供大家使用,同时也方便大家修改。
针对工具本身自定义(custom
)的格式,我们可以使用工程目录下的 tools/label_converter.py
脚本轻松转换,以下是参考的转换指令:
#=============================================================================== Usage ================================================================================#
#
#---------------------------------------------------------------------------- custom2voc -----------------------------------------------------------------------------#
# python tools/label_converter.py --task xxx --src_path xxx_folder --dst_path xxx_folder --classes xxx.txt --mode custom2voc
#
#---------------------------------------------------------------------------- voc2custom -----------------------------------------------------------------------------#
# python tools/label_converter.py --task xxx --src_path xxx_folder --img_path xxx_folder --classes xxx.txt --mode voc2custom
#
#---------------------------------------------------------------------------- custom2yolo ----------------------------------------------------------------------------#
# python tools/label_converter.py --task xxx --src_path xxx_folder --dst_path xxx_folder --classes xxx.txt --mode custom2yolo
#
#---------------------------------------------------------------------------- yolo2custom ----------------------------------------------------------------------------#
# python tools/label_converter.py --task xxx --src_path xxx_folder --img_path xxx_folder --classes xxx.txt --mode yolo2custom
#
#---------------------------------------------------------------------------- custom2coco ----------------------------------------------------------------------------#
# python tools/label_converter.py --task xxx --src_path xxx_folder --dst_path xxx_folder --classes xxx.txt --mode custom2coco
#
#---------------------------------------------------------------------------- coco2custom ----------------------------------------------------------------------------#
# python tools/label_converter.py --task xxx --src_path xxx.json --dst_pat xxx_folder --img_path xxx_folder --classes xxx.txt --mode coco2custom
#
#---------------------------------------------------------------------------- custom2dota ----------------------------------------------------------------------------#
# python tools/label_converter.py --task rotation --src_path dota_image_folder --dst_path save_folder --mode custom2dota
#
#---------------------------------------------------------------------------- dota2custom ----------------------------------------------------------------------------#
# python tools/label_converter.py --task rotation --src_path dota_label_folder --img_path dota_image_folder --mode dota2custom
#
#---------------------------------------------------------------------------- dota2dcoco ----------------------------------------------------------------------------#
# python tools/label_converter.py --task rotation --src_path dota_label_folder --dst_path xxx.json --img_path dota_image_folder --classes xxx.txt --mode dota2dcoco
#
#---------------------------------------------------------------------------- dcoco2dota ----------------------------------------------------------------------------#
# python tools/label_converter.py --task rotation --src_path xxx.json --dst_path dota_folder --mode dcoco2dota
#
#=============================================================================== Usage ================================================================================#
注意:
- 目前
--task
支持的任务有 ['rectangle', 'polygon'] 即矩形框和多边形框两种,其中多边形框任务只提供yolo
和custom
之间的互相转换,方便大家训练检测和分割任务。至于其它的任务,如关键点等,可以参考下脚本自行修改适配下。 - 此处
--classes
参数指定的*.txt
文件是用户预定义的类别文件,每一行代表一个类别,类别编号按从上到下的顺序编排,可参考assets
目录下的classes.txt
。
Q: 语义分割任务如何将输出的标签文件转换为 *.png 格式输出?
A: 针对工具本身自定义(custom
)的格式,我们可以使用工程目录下的 tools/polygon_mask_conversion.py
脚本轻松转换,以下是参考的转换指令:
python tools/polygon_mask_conversion.py --img_path xxx_folder --mask_path xxx_folder --mode poly2mask
# [option] 如果标签和图像不在同一目录下,请使用以下命令:
python tools/polygon_mask_conversion.py --img_path xxx_folder --mask_path xxx_folder --json_path xxx_folder --mode poly2mask
同样地,也支持将掩码图一键转换为自定义格式导入 X-AnyLabeling
中进行修正,输出的 *.json
文件默认保存至 'img_path' 目录:
python tools/polygon_mask_conversion.py --img_path xxx_folder --mask_path xxx_folder --mode mask2poly
Q: 如何修改自定义快捷键?
A: 可通过修改当前设备的用户根目录下的 .anylabelingrc
文件:
#Linux
cd ~/.anylabelingrc
#Windows
cd C:\\Users\\xxx\\.anylabelingrc
Q: 如何使用 SAM 系列模型?
A: 可参考以下步骤实施:
- 点击菜单栏左侧的
Brain
标志按钮以激活AI功能选项; - 从下拉菜单
Model
中选择Segment Anything Models
系列模型;
说明:模型精度和速度因模型而异,其中
Segment Anything Model (ViT-B)
是最快的但精度不高;Segment Anything Model (ViT-H)
是最慢和最准确的;Quant
表示量化过的模型;
- 使用自动分割标记工具标记对象:
+Point
:添加一个属于对象的点;-Point
:移除一个你想从对象中排除的点;+Rect
:绘制一个包含对象的矩形。Segment Anything 将自动分割对象。
- 清除:清除所有自动分割标记;
- 完成对象(f):当完成当前标记后,我们可以及时按下快捷键f,输入标签名称并保存当前对象。
注意
X-AnyLabeling
在第一次运行任何模型时,需要从服务器下载模型,需要一段时间,这具体取决于本地的网络速度;- 第一次进行 AI 推理也需要时间,请耐心等待,因此后台任务会运行以缓存
SAM
模型的“编码器”,在接下来的图像中自动分割模型需要时间会缩短。
Q: 如何支持自定义模型?
A: 请参考 custom_model.md 文档。
Q: 如何编译打包成可执行文件?
A:可参考以下打包指令:
#Windows-CPU
bash scripts/build_executable.sh win-cpu
#Windows-GPU
bash scripts/build_executable.sh win-gpu
#Linux-CPU
bash scripts/build_executable.sh linux-cpu
#Linux-GPU
bash scripts/build_executable.sh linux-gpu
注意事项:
- 编译前请针对相应的 GPU/CPU 版本修改
anylabeling/app_info.py
文件中的__preferred_device__
参数;- 如果需要编译
GPU
版本,请通过pip install -r requirements-gpu-dev.txt
安装对应的环境;特别的,对于Windows-GPU
版本的编译,请自行修改anylabeling-win-gpu.spec
的datas
列表参数,将您本地的onnxruntime-gpu
的相关动态库*.dll
添加进列表中;此外,下载onnxruntime-gpu
包是需要根据CUDA
版本进行适配,具体匹配表可参考官方文档说明。- 对于
macos
版本可自行参考anylabeling-win-*.spec
脚本进行修改。
Q: Grounding-DINO系列模型加载失败
A: 由于防火墙的原因,可能没有配置科学上网的同学会遇到加载失败的问题。如果是源码运行的用户,可以通过手动加载的方式的将依赖文件下载到对应的缓存目录上,具体可参考官方文档。对于下载可执行文件的用户,Linux
平台同上;针对Windows
平台用户,可以将对应的 models--bert-base-uncased
压缩包解压后与 *.exe
文件放置到同一目录下运行即可。
Q: 初始化加载时下载模型失败如何处理?
A: 由于当前模型权重暂存在 github
上,下载前请先开启科学上网,否则大概率会因为网络问题下载失败;如果不具备条件的可考虑手动下载方式,将下载好的 *.onnx
文件放置到当前系统用户目录下的 anylabeling_data/models/xxx
下。
这里 xxx
为对应的模型的名称,具体地可参考 X-anylabeling/anylabeling/configs/auto_labeling/models.yaml
文件中的对应 model_name
字段,示例如下:
(x-anylabeling) cvhub@CVHub:~/anylabeling_data$ tree
.
└── models
├── mobile_sam_vit_h-r20230810
│ ├── mobile_sam.encoder.onnx
│ └── sam_vit_h_4b8939.decoder.onnx
├── yolov5s-r20230520
│ └── yolov5s.onnx
├── yolov6lite_s_face-r20230520
└── yolox_l_dwpose_ucoco-r20230820
├── dw-ll_ucoco_384.onnx
└── yolox_l.onnx
Q: 能正常加载模型,但推理没结果?
A: 请先下载源码,在终端运行,查看具体的报错信息再尝试解决,如解决不了可在 issue 提交反馈。
Q: Linux 环境下 GUI 界面中文显示乱码?
A: 这是由于当前系统环境缺乏中文字体,可以参考以下步骤配置。
cd /usr/share/fonts
sudo mkdir myfonts
cd myfonts
sudo cp /mnt/c/Windows/Fonts/simsun.ttc .
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv
注:此处
/mnt/c/Windows/Fonts/simsun.ttc
为新宋体文件,大家可以将自己喜欢的支持中文的 *.ttc 文件拷贝到myfonts
目录下即可。