feat(新功能):
fix(修复bug): design 分割预处理新增25padding,后处理取消插值处理 docs(文档变更): refactor(重构): test(增加测试):
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user