当前位置: 首页 > 科技观察

Python+AI给老照片上色

时间:2023-03-13 03:31:48 科技观察

大家好。今天继续和大家分享有趣的AI项目。上次我们分享了GAN(GenerationAgainstNetwork)让静态的图片动起来。今天我们分享如何用NoGAN的图像增强技术给老照片上色。效果如下:对原图进行着色后,NoGAN是一种新型的GAN,可以在GAN训练上花费最少的时间。今天分享的项目是GitHub上的一个开源项目,下面运行一下。一、准备工作首先,使用gitclone命令下载源码。gitclonehttps://github.com/jantic/DeOldify.git进入项目根目录,安装Python依赖包。pip3install-rrequirements.txt在编写代码和运行项目之前,需要下载预训练模型。该项目提供了三个模型:模型的不同之处如下:ColorizeArtistic_gen.pth:在有趣的细节和活力方面实现了最高质量的图像着色,该模型使用resnet34作为UNet的主干,通过NoGANTraining/进行了5个评论家预测试GAN循环重复训练。ColorizeStable_gen.pth:在横向和纵向上取得了最佳效果,该模型在UNet上使用resnet101作为主干进行了训练,并使用NoGAN进行了3轮评论家预训练/GAN循环重复。ColorizeVideo_gen.pth:针对流畅的视频进行了优化,它只使用了inceptiongenerator/criticpre-training/GANNoGANtraining。由于追求流畅的速度,所以颜色比前两者少。将下载好的模型文件放在项目根目录下的models目录下。2.编写代码在项目根目录同级目录下创建一个Python文件,并编写代码加载刚刚下载的模型文件。fromDeOldify.deoldify.generatorsimportgen_inference_widefromDeOldify.deoldify.filtersimportMasterFilter,ColorizerFilter#指定模型文件learn=gen_inference_wide(root_folder=Path('./DeOldify'),weights_name='ColorizeVideo_gen')#加载模型deoldfly_model[MasterFilter(ColorizerFilter(learn=learn)],render_factor=10)root_folder指定项目的根目录,weights_name指定接下来使用哪个模型给照片上色。阅读旧照片并给它们上色;导入cv2importnumpy作为npfromPILimportImageimg=cv2.imread('./images/origin.jpg')img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)pil_img=Image.fromarray(img)filtered_image=deoldfly_model.filter(pil_img,pil_img,render_factor=35,post_process=True)result_img=np.asarray(filtered_image)result_img=cv2.cvtColor(result_img,cv2.COLOR_RGB2BGR)cv2.imwrite.jpg('deresult_img)使用cv2读取旧照片,并使用PIL.Image模块将图片转换成模型输入需要的格式,发送给模型着色,完成后保存。以上代码摘自项目源码。可以看到,运行代码还是很简单的。