-
Notifications
You must be signed in to change notification settings - Fork 937
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
人像模型预测结果锯齿问题 #390
Comments
#228 (comment) 参考此issue,预测结果有锯齿,应该跟transforms的定义有关,可以将输入图像的shape设得更大,来优化锯齿的问题。
锯齿可能原因如下:
|
找了一张图片进行测试,并将官方模型对应model.yml下的target_size调成与图片大小对应的size,锯齿效果依然很明显,和paddlehub提供的人像分隔模型效果差的有点远 另外为什么paddlehub预测得到的掩码范围是0-255的 我们只有0和1呢? |
预测的掩码是0-1, 其中0和1即为分类结果,0表示该像素点分为背景,1表示该像素点被分为人体。这个0或1是根据预测的score进行判断,在paddlex中语义分割模型结果包含了 对应于这里的人像分割, 当前你这里提到预测效果不佳的问题,可以确认下是否是因为PaddleHub展示的是score_map的原因 |
paddlehub效果是可以的 ,我在paddlex中直接使用的是label_map的结果 这里只有0和1 我将0的部分移除后 图像的锯齿效果会比较明显,这里按照您的处理 我应该怎么处理score_map会得到一个比较理想的0-255范围的掩码数据呢? |
给一张你测试的用例图我试试 |
这里你是用的bg_replace.py这个脚本的测试吗,使用这个脚本进行背景替换时,需注意设置image_shape参数
通过修改image_shape,我们可以加大输入的大小,从而得到更好的效果,效果图如图2
|
这是我通过官网模型测试代码 模型地址:https://bj.bcebos.com/paddlex/examples/human_seg/models/humanseg_server_params.tarmodel = pdx.load_model('C:/Users/bigdata/Downloads/humanseg_server_params') image_name = 'd:/tmp/qbs.jpg' r ,c = result['label_map'].shape cv2.imwrite('output/tmp.jpg', src) 原图:结果图: |
PaddleHub的原理是,模型预测出结果后,将预测的score_map转成0-255的值,并且作为alpha通道添加到原图上,保存成4通道的图,因此看起来会更柔和,我这里将下载的模型中
预测时采用如下示例代码
|
import paddlex as pdx
import cv2
import numpy as np
import matplotlib.pyplot as plt
def process(logit, shape):
thresh = 120
logit = logit * 255
logit = cv2.resize(logit, shape)
logit -= thresh
logit[logit < 0] = 0
logit = 255 * logit / (255 - thresh)
return logit.astype('uint8')
# 模型地址:https://bj.bcebos.com/paddlex/examples/human_seg/models/humanseg_server_params.tar
#model = pdx.load_model('C:/Users/bigdata/Downloads/humanseg_server_params')
model = pdx.load_model('d:/tmp/models/deeplab/best_model/')
image_name = 'd:/tmp/qbs.jpg'
result = model.predict(image_name)
pdx.seg.visualize(image_name, result, weight=0.0, save_dir='output')
#score_map = (result['score_map'][:, :, 1] * 255).astype('uint8') #将背景部分score转换为0-244
im = cv2.imread(image_name)
rows, cols, _ = im.shape
score_map = process(result['score_map'][:, :, 1], (cols, rows))
score_map = np.expand_dims(score_map, axis=2)
rgba = np.concatenate((im, score_map), axis=2) #将3通道变为4通道
cv2.imwrite('d:/output/tmp.png',rgba) |
@jiangjiajun 感谢支持 现在效果好多了,请问咱们提供图形分割数据集吗,或者哪里可以获取到开源的图形分割数据集(装饰 图案 logo之类的) |
我们没有提供相应开源数据集,可以在网上搜下 |
这个是由外部提供的数据,参考其官方网站 https://supervise.ly/ |
没有找到下载页面 |
咱们官方提供的人像语义分割模型 predict后获得的掩码图像存在锯齿问题,请问如何去除,让边缘变得平滑一些,
我之前也测试过paddlehub模型,输出的掩码模型不是只有0和1两个label,且预测结果无锯齿问题
paddlex 人像模型地址
The text was updated successfully, but these errors were encountered: