DeOldify实现老照片上色(附直接使用的工具代码) | 机器学习
目录
前言
安装
代码改造使用
总结
前言
老照片上色其实很早之前就想写了,也有不少人问了我这个项目。
最近把DeOldify项目好好弄了弄。
项目地址:DeOldify项目地址
先看看项目给出的图片对比效果。
从给出的效果可以看出,上色后的图片对人物、景色、物品、环境等等都变得很生动。
下面来安装一下项目执行环境,测试一下自己的图片。
安装
看一下项目的README中关于安装的部分。
使用anaconda安装环境。安装完成后看一下模型文件需要下载哪些。
仔细看看,文章给出了不同模型的区别。
从作者的描述中,可以看出前面2个主要是针对图像的模型,一个艺术一个稳定,等下使用的时候看看区别。
三个模型如果比较难下载,可以从我的网盘下载,地址如下。
链接:https://pan.baidu.com/s/11VJoC3na9wzOuiwsb7gw9Q
提取码:TUAN
下载的3个模型文件放到项目根目录下models文件夹内,没有就创建models。
代码改造使用
作者在README中给出了docker快速启动以及api启动方式。有点麻烦,还是自己改一下。
先看一下app.py代码内容。
@app.route("/process", methods=["POST"]) def process_image():input_path = generate_random_filename(upload_directory,"jpeg")output_path = os.path.join(results_img_directory, os.path.basename(input_path))try:if 'file' in request.files:file = request.files['file']if allowed_file(file.filename):file.save(input_path)try:render_factor = request.form.getlist('render_factor')[0]except:render_factor = 30else:url = request.json["url"]download(url, input_path)try:render_factor = request.json["render_factor"]except:render_factor = 30result = Nonetry:result = image_colorizer.get_transformed_image(input_path, render_factor=render_factor, post_process=True, watermarked=True)except:convertToJPG(input_path)result = image_colorizer.get_transformed_image(input_path, render_factor=render_factor, post_process=True, watermarked=True)finally:if result is not None:result.save(output_path, quality=95)result.close()callback = send_file(output_path, mimetype='image/jpeg')return callback, 200except:traceback.print_exc()return {'message': 'input error'}, 400finally:passclean_all([input_path,output_path])可以看出该POST接口主要操作分为:获取文件流、根据参数调整渲染因子(默认为30)、通过image_colorizer对象进行染色操作、最终将文件流返回。按照这个方法我改造了一个直接使用的工具方法。
代码如下:
#!/user/bin/env python # coding=utf-8 """ @project : DeOldify @author : 剑客阿良_ALiang @file : test1.py @ide : PyCharm @time : 2022-06-17 16:37:13 """ import os from pathlib import Pathfrom app_utils import convertToJPG from deoldify.visualize import ModelImageVisualizer, get_image_colorizerdef colorizer(input_path, output_dir):_output_path = os.path.join(output_dir, os.path.basename(input_path))_image_colorizer = get_image_colorizer(artistic=True)try:result = _image_colorizer.get_transformed_image(input_path, render_factor=30, post_process=True,watermarked=True)except:convertToJPG(input_path)result = _image_colorizer.get_transformed_image(input_path, render_factor=30, post_process=True,watermarked=True)finally:if result is not None:result.save(_output_path, quality=95)result.close()if __name__ == '__main__':colorizer("./data/image/xxx1.jpg", "./data/result1")一些异常情况我就不处理,如果需要的话,使用的时候加一些补充代码即可。
artistic参数作为是否使用艺术模型的bool参数。
看一下我准备的需要上色的照片。
选择Artistic模型的效果如下:
选择Stable模型的效果如下:
还是可以看出一些区别的,只是本人没啥艺术细菌,看不大出来怎么个艺术法。
注意
1、 上面的工具代码由于引入了项目中的几个方法,可能存在引入包缺失问题。补充安装如下:
pip install opencv-python -i https://pypi.douban.com/simple
pip install scikit-image -i https://pypi.douban.com/simple
pip install ffmpeg -i https://pypi.douban.com/simple
2、安装scikit-image的时候会安装Pillow最新版本,可能会导致执行错误,补充卸载安装Pillow如下:
pip uninstall Pillow
pip install Pillow==6.2.2
总结
最近有次中午散步的时候,听到前面两个程序员在聊天,他们说了几句话让我思考了许久。
“现在很多产品经理只会画皮不会造骨,能画的不缺鼻子少眼就不错了。”
旁边的哥们说:“不然呢?会画皮还能造骨,为什么不自己创业呢?”
“也是”
分享:
孤独是生命里必有的黑暗,它无法穿越,也不可战胜。如果我们明白了这一点,我们会觉得,其实人不需要那么多东西:名声、金钱、奢侈品、朋友或者爱情 、婚姻。至少,可以随遇而安,因为我们用这些东西对抗孤独,却没法获胜。我们唯一能做的,就是与它平静地共处。
《十一种孤独》
总结
以上是生活随笔为你收集整理的DeOldify实现老照片上色(附直接使用的工具代码) | 机器学习的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 河南大学2019计算机专业录取分数线,2
- 下一篇: 关卡 动画 蓝图 运行_动画蓝图 - U