P2.标注自己的语义分割数据集
2.1使用终端安装 Labelme
1.使用Anaconda终端安装labelme
安装 Anaconda和在Anaconda中安装好Python 后,可以使用 Python 包管理器安装 Labelme pip3
打开终端并运行以下命令:
pip3 install --upgrade labelme
点击查看代码
#报错如下:
(base) C:\Users\ASUS>pip3 install --upgrade labelme Collecting labelme Downloading labelme-5.6.1-py3-none-any.whl (1.4 MB) ERROR: Package 'labelme' requires a different Python: 3.8.3 not in '>=3.9'
2.报错原因
从错误信息来看,而我当前使用的 Python 版本是 3.8.3,而最新版本的 labelme(5.6.1)要求 Python 版本至少为 3.9,因此安装失败
3.解决方案
(1)创建 Python 3.9 的虚拟环境
点击查看代码
#此处labelme为我的虚拟环境名称
conda create -n labelme python=3.9

(2)激活新环境
点击查看代码
#此处labelme为我的虚拟环境名称
conda activate labelme
(3)安装labelme
点击查看代码
#此处labelme为软件
pip install --upgrade labelme
(4)若安装 labelme 时提示缺少依赖(如 PyQt5),可通过conda install pyqt补充安装
按提示输入y确认安装。
4.安装完成后,运行命令:labelme,即可看到图形用户界面

2.2打开labelme
1.标注前
(1)File—开启Save Automatically(自动保存)
(2)File—关闭Save With Image Data(同时保存图像数据),不把图像本身保存至标签文件中
(3)应提前把所有图像放到同一个文件夹中,再点击“打开目录”,用labelme打开这个文件夹标注
2.标注中:编辑-创建AI多边形
(1)通过点选想要标注的物体,让AI自动标注,双击,取一个“标签”名,然后Ctrl+S,保存标注的label格式的json文件
(2)AI标注结果:

(3)保存的json文件用记事本打开:

(4)总结版
①应使标注文件保存至图像相同目录下,标注过程中,不要切换图像和标注文件的目录
②多段线(polygon)应尽可能精细,紧密贴合物体的真实边缘轮廓。
③如果使用AI-Polygon辅助标注,每张图片需先等待SAM分割一切大模型处理几秒钟,才能开始标注。
④如果是实例分割标注:标目标检测框时,画物体的外接矩形框。框的两个点,必须分别是左上角和右下角,顺序不能错。
⑤如果是目标检测+关键点检测标注:多段线(polygon)的第一个点必须且只能落入一个框中。见视频教程:https://www.bilibili.com/video/BV19g4y1777q
3.标注后确认
(1)要求:
Labelme标注的json文件最后imagePath图像路径,只能是图像名字本身,不能有其它的路径和符号(例如../、\之类的)
(2)但是我的imagePath有问题:
"imagePath": "..\images\c38e1f595c46d502c75bda7ec9bf6078.jpg",
(3)原因分析:
根据【“标注中:(1)应使标注文件保存至图像相同目录下,标注过程中,不要切换图像和标注文件的目录”】,我不满足;
我的标注文件和图像不在同一目录下:分别在images和images_jsons_Deletable

(4)重新单独设置测试数据集:

并打开labelme重新标注:

(5)重新标注如下:

(6)ImagePath正确:

2.3标注流程总结
1.up主总结

2.按照以上步骤在labelme里面进行标注图像
3.打开github网站的Label2Everything网址
https://github.com/TommyZihao/Label2Everything

3.常见计算机视觉标注格式相互转换之labelme转mask
(1)修改jupyter notebook默认路径
根据博客园的【P4. PyCharm与Jupyter的使用和对比(三种代码编辑方式:Python文件、Python控制台和Jupyter) 】的【4.5修改Anaconda中Jupyter Notebook默认工作路径(内容引自知乎)】部分,将默认路径从D:\DeepLearning\Learn_torch修改成了D:\DeepLearning
(2)Jupyter中kernel的安装和修改
①安装如下代码:
python -m ipykernel install --user --name pytorch_env --display-name "Label2Everything"
②修改kernel,即可使用Label2Everything进行运行jupyter

(3)依次运行【A】【B】【C】的代码
eg运行【B】的代码时,第一块报错:
点击查看代码
!rm -rf Watermelon87_Semantic_Seg_Labelme.zip Watermelon87_Semantic_Seg_Labelme # 删除原有压缩包和文件夹
!wget https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20230130-mmseg/dataset/watermelon/Watermelon87_Semantic_Seg_Labelme.zip # 下载压缩包
!unzip Watermelon87_Semantic_Seg_Labelme.zip >> /dev/null # 解压压缩包
!rm -rf Watermelon87_Semantic_Seg_Labelme.zip # 删除压缩包
在jupyter中运行以上代码后,报错如下:
点击查看代码
'rm' 不是内部或外部命令,也不是可运行的程序或批处理文件。
'wget' 不是内部或外部命令,也不是可运行的程序或批处理文件。
系统找不到指定的路径。
'rm' 不是内部或外部命令,也不是可运行的程序或批处理文件
怎么解决?
【deepseek】你遇到的错误是因为这些命令(rm、wget、unzip)是Linux/macOS 系统的终端命令,而你可能在Windows 系统的 Jupyter Notebook中运行,Windows 不支持这些命令,因此会报错。
解决方法:在 Windows 系统中替换为对应的命令
以下是 Windows 系统中实现相同功能的代码(使用 Python 的os和zipfile库,跨平台兼容):
点击查看代码
import os
import zipfile
import requests
# 定义文件和文件夹名称
zip_filename = "Watermelon87_Semantic_Seg_Labelme.zip"
folder_name = "Watermelon87_Semantic_Seg_Labelme"
# 1. 删除原有压缩包和文件夹(如果存在)
if os.path.exists(zip_filename):
os.remove(zip_filename)
if os.path.exists(folder_name):
# 递归删除文件夹及内容
import shutil
shutil.rmtree(folder_name, ignore_errors=True)
# 2. 下载压缩包(替代wget)
url = "https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20230130-mmseg/dataset/watermelon/Watermelon87_Semantic_Seg_Labelme.zip"
print("开始下载压缩包...")
response = requests.get(url, stream=True)
with open(zip_filename, "wb") as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
print("下载完成")
# 3. 解压压缩包(替代unzip)
print("开始解压...")
with zipfile.ZipFile(zip_filename, "r") as zip_ref:
zip_ref.extractall() # 解压到当前目录
print("解压完成")
# 4. 删除压缩包
if os.path.exists(zip_filename):
os.remove(zip_filename)
print("已删除压缩包")
改成以上代码,可以实现,or直接下载作者的mask文件(但是后面自己处理遥感影像的时候,这种格式转换的代码肯定需要自己跑一遍,现在想接着往下听,就先学到这啦)
浙公网安备 33010602011771号