修改labelme原始碼,解決粘連mask分離問題
問題:
我們需要訓練一個粘連物體分割的模型,使用labelme進行資料標註。我在標註完以後使用labelme_json_to_dataset命令進行生成資料集的時候出現以下情況。(其中粘連部位會被其中一個類別覆蓋)
解決方案:
首先找到json_to_dataset.py指令碼(我的是mac系統位置是/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/labelme/cli/json_to_dataset.py)修改其中的以下部分:
for shape in sorted(data["shapes"], key=lambda x: x["label"]):
label_name = shape["label"]
if label_name in label_name_to_value:
label_value = label_name_to_value[label_name]
else:
label_value = len(label_name_to_value)
label_name_to_value[label_name] = label_value
lbl_0, lbl_1, _ = utils.shapes_to_label(
img.shape, data["shapes"], label_name_to_value
)
然後修改shape.py指令碼中的shapes_to_label方法。(位置在/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/labelme/utils/shape.py)
def shapes_to_label(img_shape, shapes, label_name_to_value):
res = []
for shape in shapes:
cls = np.zeros(img_shape[:2], dtype=np.int32)
ins = np.zeros_like(cls)
instances = []
points = shape["points"]
label = shape["label"]
group_id = shape.get("group_id")
if group_id is None:
group_id = uuid.uuid1()
shape_type = shape.get("shape_type", None)
cls_name = label
instance = (cls_name, group_id)
if instance not in instances:
instances.append(instance)
ins_id = instances.index(instance) + 1
cls_id = label_name_to_value[cls_name]
mask = shape_to_mask(img_shape[:2], points, shape_type)
cls[mask] = cls_id
ins[mask] = ins_id
res.append(cls)
return res[0], res[1], ins
然後使用labelme_json_to_dataset命令再生成標籤的時候會出現以下兩張圖:
相關文章
- Netty原始碼學習6——netty編碼解碼器&粘包半包問題的解決Netty原始碼
- java nio解決半包 粘包問題Java
- netty 解決粘包 和 分包的問題Netty
- 前後端分離解決跨域問題後端跨域
- TCP 粘包 - 拆包問題及解決方案TCP
- 粘包問題原因和解決方法
- 解決 Laravel 5.8 前後端分離跨域問題Laravel後端跨域
- Spring Boot前後端分離專案Session問題解決Spring Boot後端Session
- 前後端分離解決session跨域丟失問題後端Session跨域
- 粘包問題
- docker下mysql連線數修改後不生效問題的解決DockerMySql
- Netty解決粘包和拆包問題的四種方案Netty
- 原始碼編譯,Apache DolphinScheduler前後端分離部署解決方案原始碼編譯Apache後端
- UE 不修改原始碼實現遮罩控制元件 (Mask Widget)原始碼遮罩控制元件
- TCP協議粘包問題詳解TCP協議
- 離職,問題就解決了嗎?
- Netty中使用MessagePack時的TCP粘包問題與解決方案NettyTCP
- Netty入門系列(2) --使用Netty解決粘包和拆包問題Netty
- Netty2:粘包/拆包問題與使用LineBasedFrameDecoder的解決方案Netty
- 關於google搜尋欄首字母粘連問題Go
- 原始碼安裝apache(附遇到的問題及解決)原始碼Apache
- springboot使用Filter解決前後端分離,產生的跨域問題Spring BootFilter後端跨域
- Go TCP 粘包問題GoTCP
- 解決代理連線超時問題
- 解決macOS vim 不能連按問題Mac
- 解決中文亂碼問題
- 【UGUI原始碼分析】Unity遮罩之Mask詳細解讀UGUI原始碼Unity遮罩
- vue前後端分離解決每次請求session都會變的問題Vue後端Session
- 線上直播原始碼開發IOS端問題解決方案原始碼iOS
- Socket 粘包和分包問題
- TCP粘包拆包問題TCP
- 【Swoole】從原始碼中查 Websocket 連線問題原始碼Web
- [Swoole] 從原始碼中查 Websocket 連線問題原始碼Web
- springmvc 解決中文亂碼問題SpringMVC
- MySql中文亂碼問題解決MySql
- Jmeter 解決中文亂碼問題JMeter
- 前後端分離專案,如何解決跨域問題?後端跨域
- Mysql修改密碼之後,Navicat依然使用舊密碼連線問題MySql密碼