Pixellib语义分割-图像背景替换
1.Pixellib
Pixellib 是一个基于 TensorFlow 和 OpenCV 的深度学习库,用于语义分割和实例分割任务,提供了强大的工具和库来构建和训练深度神经网络模型。Pixellib 支持多种主流深度学习模型,如 DeepLabV3、Mask R-CNN、YOLOv4、YOLOv5 和 Panoptic FPN 等
2. 安装
安装tenforflow:pip3 install tensorflow-gpu或pip3 install tensorflow
安装Pixellib:pip3 install pixellib
3. 资源地址
github官网地址: https://github.com/ayoolaolafenwa/PixelLib
官方文档: https://pixellib.readthedocs.io/en/latest/
模型权重下载地址: https://github.com/bonlime/keras-deeplab-v3-plus/releases
3.颜色背景替换
import cv2 from pixellib.tune_bg import alter_bg change_bg = alter_bg() change_bg.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5") output = change_bg.color_bg("sample.jpeg", colors = (0, 128, 0))#将背景置为绿色 cv2.imwrite("img.jpg", output) new_image = cv2.imread("img.jpg") # 模糊让边缘更平滑 blurred_image = cv2.GaussianBlur(new_image, (5, 5), 0) # 保存最终输出图像 cv2.imwrite("img_blur.jpg", blurred_image)
原图 换背景颜色图
4. 替换背景图片
from pixellib.tune_bg import alter_bg import cv2 # 创建 alter_bg 实例 change_bg = alter_bg() # 加载预训练模型 change_bg.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5") # # 替换背景 output = change_bg.change_bg_img(f_image_path="sample.jpeg",b_image_path="bg.jpeg", output_image_name="new_img.jpg") # 加载输出图像 new_image = cv2.imread("new_img.jpg") #模糊 blurred_image = cv2.GaussianBlur(new_image, (5, 5), 0) # 保存最终输出图像 cv2.imwrite("final_output.jpg", blurred_image)
原图 换背景图
上面是网上找的图,再测试一下手机拍的图。
5. 虚化背景
from pixellib.tune_bg import alter_bg # 创建 alter_bg 实例 change_bg = alter_bg() # 加载预训练模型 change_bg.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5") # 替换背景 output=change_bg.change_bg_img(f_image_path="sample.jpeg",b_image_path="bg.jpeg",output_image_name="new_img.jpg",detect="person") change_bg.blur_bg("final_output.jpg", extreme=True, detect="person", output_image_name="blur_img.jpg")
小结:对于color_bg函数,可以指定detect参数来获取我们想要分割的目标,默认是模型获取所有目标。如果目标很多,只想要获取人物,可以detect="person'。
不足或错误之处,欢迎指正与评论!