feat(新功能):

fix(修复bug): design 分割预处理新增25padding,后处理取消插值处理
docs(文档变更):
refactor(重构):
test(增加测试):
This commit is contained in:
zhouchengrong
2025-01-13 15:41:37 +08:00
parent f36edbe248
commit 9c52811c05
2 changed files with 11 additions and 9 deletions

View File

@@ -36,11 +36,11 @@ class Segmentation:
# preview 过模型 不缓存 # preview 过模型 不缓存
if "preview_submit" in result.keys() and result['preview_submit'] == "preview": if "preview_submit" in result.keys() and result['preview_submit'] == "preview":
# 推理获得seg 结果 # 推理获得seg 结果
seg_result = get_seg_result(result["image_id"], result['image'])[0] seg_result = get_seg_result(result["image_id"], result['image'])
# submit 过模型 缓存 # submit 过模型 缓存
elif "preview_submit" in result.keys() and result['preview_submit'] == "submit": elif "preview_submit" in result.keys() and result['preview_submit'] == "submit":
# 推理获得seg 结果 # 推理获得seg 结果
seg_result = get_seg_result(result["image_id"], result['image'])[0] seg_result = get_seg_result(result["image_id"], result['image'])
self.save_seg_result(seg_result, result['image_id']) self.save_seg_result(seg_result, result['image_id'])
# null 正常流程 加载本地缓存 无缓存则过模型 # null 正常流程 加载本地缓存 无缓存则过模型
else: else:
@@ -49,14 +49,14 @@ class Segmentation:
# 判断缓存和实际图片size是否相同 # 判断缓存和实际图片size是否相同
if not _ or result["image"].shape[:2] != seg_result.shape: if not _ or result["image"].shape[:2] != seg_result.shape:
# 推理获得seg 结果 # 推理获得seg 结果
seg_result = get_seg_result(result["image_id"], result['image'])[0] seg_result = get_seg_result(result["image_id"], result['image'])
self.save_seg_result(seg_result, result['image_id']) self.save_seg_result(seg_result, result['image_id'])
result['seg_result'] = seg_result result['seg_result'] = seg_result
# 处理前片后片 # 处理前片后片
temp_front = seg_result == 1.0 temp_front = seg_result == 1
result['front_mask'] = (255 * (temp_front + 0).astype(np.uint8)) result['front_mask'] = (255 * (temp_front + 0).astype(np.uint8))
temp_back = seg_result == 2.0 temp_back = seg_result == 2
result['back_mask'] = (255 * (temp_back + 0).astype(np.uint8)) result['back_mask'] = (255 * (temp_back + 0).astype(np.uint8))
result['mask'] = result['front_mask'] + result['back_mask'] result['mask'] = result['front_mask'] + result['back_mask']
return result return result

View File

@@ -13,7 +13,6 @@ import cv2
import mmcv import mmcv
import numpy as np import numpy as np
import torch import torch
import torch.nn.functional as F
import tritonclient.http as httpclient import tritonclient.http as httpclient
from app.core.config import * from app.core.config import *
@@ -85,6 +84,9 @@ def seg_preprocess(img_path):
if ori_shape != (img_scale_w, img_scale_h): if ori_shape != (img_scale_w, img_scale_h):
# mmcv.imresize(img, img_scale_h, img_scale_w) # 老代码 引以为戒!哈哈哈~ h和w写反了 # mmcv.imresize(img, img_scale_h, img_scale_w) # 老代码 引以为戒!哈哈哈~ h和w写反了
img = cv2.resize(img, (img_scale_h, img_scale_w)) img = cv2.resize(img, (img_scale_h, img_scale_w))
# 扩充25的白边
img = cv2.copyMakeBorder(img, 25, 25, 25, 25, cv2.BORDER_CONSTANT, value=[255, 255, 255])
# img = mmcv.imnormalize(img, mean=np.array([123.675, 116.28, 103.53]), std=np.array([58.395, 57.12, 57.375]), to_rgb=True) # img = mmcv.imnormalize(img, mean=np.array([123.675, 116.28, 103.53]), std=np.array([58.395, 57.12, 57.375]), to_rgb=True)
preprocessed_img = np.expand_dims(img.transpose(2, 0, 1), axis=0) preprocessed_img = np.expand_dims(img.transpose(2, 0, 1), axis=0)
return preprocessed_img, ori_shape return preprocessed_img, ori_shape
@@ -114,9 +116,9 @@ def get_seg_result(image_id, image):
# no cache # no cache
def seg_postprocess(image_id, output, ori_shape): def seg_postprocess(image_id, output, ori_shape):
seg_logit = F.interpolate(torch.tensor(output).float(), size=ori_shape, scale_factor=None, mode='bilinear', align_corners=False) seg_logit = cv2.resize(output[0][0].astype(np.uint8), (ori_shape[1] + 50, ori_shape[0] + 50))
seg_pred = seg_logit.cpu().numpy() seg_logit = seg_logit[25: - 25, 25: - 25]
return seg_pred[0] return seg_logit
def key_point_show(image_path, key_point_result=None): def key_point_show(image_path, key_point_result=None):