编程语言
首页 > 编程语言> > GFPGAN源码分析—第四篇

GFPGAN源码分析—第四篇

作者:互联网

2021SC@SDUSC

源码:utils.py

本篇主要分析utils.py中的class GFPGANer的enhance()方法,该方法实现了图像的修复

目录

enhance( )

(1).清空之前初始化的face_helper的所有参数

(2).修复前对图片进行预处理:仿射变换(对齐),相似变换(截取)

(3)人脸修复

(4)调用astype('uint8')会将小数部分直接截去,0-255之间的整数保留

(5)如果满足not has_aligned=True:修复前没有图像对齐 和paste_back=True:设置了需要将修复好的人脸贴回原图;做以下操作:


enhance( )

参数:(self, img, has_aligned=False, only_center_face=False, paste_back=True)

(1).清空之前初始化的face_helper的所有参数

#查看clean_all函数的实现
def clean_all(self):
    self.all_landmarks_5 = []
    self.restored_faces = []
    self.affine_matrices = []
    self.cropped_faces = []
    self.inverse_affine_matrices = []
    self.det_faces = []
    self.pad_input_imgs = []

(2).修复前对图片进行预处理:仿射变换(对齐),相似变换(截取)

if has_aligned:
    img = cv2.resize(img, (512, 512))
    self.face_helper.cropped_faces = [img]
else:
    self.face_helper.read_image(img)
    # get face landmarks for each face
    self.face_helper.get_face_landmarks_5(only_center_face=only_center_face)
    # align and warp each face
    self.face_helper.align_warp_face()

(3)人脸修复

遍历face_helper截取的所有cropped_face,修复前再做一下处理:归一化等

for cropped_face in self.face_helper.cropped_faces:
    # prepare data
    cropped_face_t = img2tensor(cropped_face / 255., bgr2rgb=True, float32=True)
    #归一化
    normalize(cropped_face_t, (0.5, 0.5, 0.5), (0.5, 0.5, 0.5), inplace=True)
    cropped_face_t = cropped_face_t.unsqueeze(0).to(self.device)

调用gfpgan对图像进行修复,失败的话输出错误提醒,并返回未修复的照片

try:
    output = self.gfpgan(cropped_face_t, return_rgb=False)[0]
    # convert to image
    restored_face = tensor2img(output.squeeze(0), rgb2bgr=True, min_max=(-1, 1))
except RuntimeError as error:
    print(f'\tFailed inference for GFPGAN: {error}.')
    restored_face = cropped_face

经过修复后图片矩阵的数字一定的float的。但是需要保存.png,所以图片的数字类型必须变到[0,255]的整数,

(4)调用astype('uint8')会将小数部分直接截去,0-255之间的整数保留

restored_face = restored_face.astype('uint8')
self.face_helper.add_restored_face(restored_face)

(5)如果满足not has_aligned=True:修复前没有图像对齐 和paste_back=True:设置了需要将修复好的人脸贴回原图;做以下操作:

标签:修复,helper,self,img,cropped,face,源码,GFPGAN,第四篇
来源: https://blog.csdn.net/Vaifer233/article/details/121757350