Python+AI給老照片上色

来源:https://www.cnblogs.com/1234567FENG/archive/2022/06/14/16374977.html
-Advertisement-
Play Games

前言 哈嘍,大家好。有沒有誰跟我一樣喜歡老照片的朋友,老照片總是讓人感覺有一種情懷,可能這就是懷念吧。有一次無意中看到 了很久很久以前的照片都是黑白的,當時很想給照片添加點顏色,但是不知道怎麼搞。今天,我終於發現了怎麼去解決這個問 題,想了想,我決定得把這個分享給大家… 今天我們分享用NoGAN的圖 ...


前言

哈嘍,大家好。有沒有誰跟我一樣喜歡老照片的朋友,老照片總是讓人感覺有一種情懷,可能這就是懷念吧。有一次無意中看到

了很久很久以前的照片都是黑白的,當時很想給照片添加點顏色,但是不知道怎麼搞。今天,我終於發現了怎麼去解決這個問

題,想了想,我決定得把這個分享給大家…
在這裡插入圖片描述

 

今天我們分享用NoGAN的圖像增強技術給老照片著色。效果如下:
在這裡插入圖片描述

原圖
在這裡插入圖片描述

上色後

NoGAN是一種新型GAN,它能花費最少的時間進行GAN訓練。

今天分享的這個項目已在GitHub開源項目,下麵我們來運行一下。

1. 準備工作

首先,用git clone命令下載源碼

git clone https://github.com/jantic/DeOldify.git

 

進入項目根目錄,安裝Python依賴包

pip3 install -r requirements.txt

 

編寫代碼運行項目之前,需要下載預訓練好的模型。項目提供了三個模型
在這裡插入圖片描述

模型

區別如下:

•ColorizeArtistic_gen.pth:在有趣的細節和活力方面實現了最高質量的圖像著色效果,該模型在 UNet 上使用 resnet34 為主幹,

通過 NoGAN 進行了 5 次評論家預訓練/GAN 迴圈重覆訓練

•ColorizeStable_gen.pth:在風景和肖像方面取得了最佳效果,該模型在 UNet 上使用 resnet101 為主幹,通過 NoGAN 進行了 3

次評論家預訓練/GAN 迴圈重覆訓練

在這裡插入圖片描述

•ColorizeVideo_gen.pth:針對流暢的視頻進行了優化,它僅使用初始生成器/評論家預訓練/GAN NoGAN 訓練。由於追求流暢的

速度,它的色彩比前兩者少。

將下載好的模型文件放在項目根目錄的models目錄下即可。

2. 編寫代碼

在項目根目錄同級目錄下創建Python文件,編寫代碼載入剛剛下載好的模型文件。

python學習交流Q群:906715085####
from DeOldify.deoldify.generators import gen_inference_wide
from DeOldify.deoldify.filters import MasterFilter, 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指定接下來使用哪個模型為照片上色。
在這裡插入圖片描述

讀取老照片,進行上色

import cv2
import numpy as np
from PIL import Image

img = 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('deoldify.jpg', result_img)

 

用cv2讀取老照片,並用PIL.Image模塊將圖片轉換成模型輸入所需要的格式,送入模型進行上色,完成後保存。

上述代碼是我從項目源碼中抽取的,可以看到,運行代碼還是非常簡單的。

感興趣的朋友可以自己運行一下,也可以試試其他模型的效果。需要源碼的朋友,在公眾號回覆 老照片上色 即可。

最後,感謝你的關註,我將持續分享優秀的 AI 項目。如果本文對你有用就點個 在看 鼓勵一下吧。

在這裡插入圖片描述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 廣義的開放平臺是個龐大的結構,它站在核心業務系統的前面,承接著所有的流量。公司所有的客戶端比如Web站點、手機APP、智能硬體都對接開放平臺API,只是各自的許可權不同,可以訪問的資源不同。狹義的開放平臺只是打開了一扇門,讓合作伙伴進來參與業務互動。從業務層面上看,開放平臺屬於流量渠道之一。本文重點討... ...
  • 0. 前情提要 面試官: 你能手寫個LRU緩存嗎? 你: LRU是什麼東西?(一臉懵逼狀) 面試官: LRU全稱Least Recently Used(最近最少使用),用來淘汰不常用數據,保留熱點數據。 你寫了5分鐘,然而只寫了個get和put方法體,裡面邏輯實在不知道咋寫。 面試官: 今天的面試先 ...
  • 順序執行 C 語言的程式是順序執行,即先執行前面的語句,再執行後面的語句。 條件執行 if if語句用於條件判斷,滿足條件時,就執行指定的語句。 if (expression) { statement // 表達式expression為真(非 0 值)時,就執行 statement 語句。 } if ...
  • @ 一.前言 使用PyQt5模仿網易雲音樂,只有UI沒有功能。 二.展示-主界面 1.靜圖1 主界面 2.靜圖2 主界面-歌單 3.靜圖3 主界面-播客 3.靜圖3 主界面-最新音樂 4.動圖1 主界面-綜合動圖展示 三.展示-登錄界面 仿照製作了一個登錄頁面(二維碼是可以掃描的,並且具有時效性哦~ ...
  • C++預設參數及其本質 1. 概述 概述 C++ 允許函數設置預設參數,在調用時可以根據情況省略實參 其規則如下 預設參數只能按照從右到左的順序。 如果函數同時有聲明、實現、預設參數只能放在函數聲明中 預設參數的值可以是常量、全局符號(全局變數、函數名) 實例1:預設參數只能按照從右到左的順序、預設 ...
  • blind watermark 盲水印技術實現,這裡主要引用網上三種java實現的效果測試和研究。可以將文字隱藏在圖片中,通過提取還原水印,實現版本保護效果。 開源代碼: https://gitee.com/chejiangyi/shuiyin/tree/master ...
  • Practical usage of cpp reference and move semantic 在優化重構一部分老代碼時,實際使用 c++ 的 reference 與 move semantic 遇到了若幹問題,在此記錄。 Aggregation 首先,數據的設計並不複雜,只有一個類,成員變數 ...
  • C++函數重載的原理 一、函數重載概述 1.1 為什麼要有函數重載 在實際的開發中,有時候我們需要實現幾個功能類似的函數,只是有些細節不同。例如希望交換兩個變數的值,但是這兩個變數可能有多種類型:int、char、double、bool等。在C語言中,程式員往往需要分別設計出多個不同名的函數,但是在 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...