# CodeFormer [https://github.com/sczhou/CodeFormer](https://github.com/sczhou/CodeFormer) 這裡是線上demo版,可以直接上傳圖片測試: [https://replicate.com/sczhou/codeformer](https://replicate.com/sczhou/codeformer) 作者也有整理出colab的版本,可以用colab試跑: [https://colab.research.google.com/drive/1m52PNveE4PBhYrecj34cnpEeiHcC5LTb?usp=sharing](https://colab.research.google.com/drive/1m52PNveE4PBhYrecj34cnpEeiHcC5LTb?usp=sharing),這篇文章也是基於colab的教學寫的。 ## How to Use CodeFormer 實驗環境:python 3.10, cuda 12.2 1. 進入CodeFormer資料夾: `cd CodeFormer` 2. 建立conda環境: `conda create -f environment.yml`,並且啟動環境:`conda activate codeformer` 3. 將要做SR的圖片放在`inputs/user_upload`資料夾中 4. 執行程式碼: `python inference_codeformer.py -w 0.7 --input_path inputs/user_upload --bg_upsampler realesrgan --face_upsample` 一些引數的意義如下: * -w: 品質(較低數值)跟保真度(較高數值)的平衡係數,保真度越高會越接近原本模糊圖片中給的圖片特徵 * -\-input_path: 待處理的圖片路徑 * -\-bg_upsampler: 加強背景細節的模型 * -\-face_upsampler: SR圖片是否要放大 5. SR結果將會出現在`results/user_upload_0.7`中,其中的`croped_faces`資料夾是原圖上切下來的人臉部分,`restored_faces`資料夾是**只有**人臉部分的SR結果,`final_results`是整張圖做SR後的結果。 ## How to Use CodeFormer's API 這邊我也有將這部分的code打包成API。運作方式是client端將模糊圖片用base64編碼後傳送給server,server收到圖片會將圖片儲存下來,再用模型處理這張圖片,然後將處理好的SR圖片用base64編碼回傳給client,並且刪除儲存在server端的模糊圖片跟SR圖片,client收到後可以解碼得到SR的結果圖片並儲存下來。這邊模型是收到圖片之後才會load model,可能會速度比較慢一點(?,可能是一個可以改善的地方。 1. 在server端執行程式: `python server.py`,這邊需要看一下server執行在哪個IP以及port上,以實習單位的電腦來說,會執行在192.168.50.26的5001 port上面,接下來就用這組IP以及port來舉例,使用者需要依照自己的情況修改IP跟port的部分。終端應該會出現類似以下圖片。 ![](https://hackmd.io/_uploads/ryd5IlHCh.jpg) 2. 按照實際情況修改`client.py`中的變數: * `addr`: 上一步中server執行的IP * `img_name`: 模糊圖片的路徑以及檔名 * `result_img_name`: server回傳的SR圖片要儲存的路徑以及檔名 4. 在client端執行程式: `python client.py`,終端中應該會出現類似以下的圖片 ![](https://hackmd.io/_uploads/Bk_wUgHRn.jpg) ※ server跟client可以在不同電腦,但是必須在同一個內網下。