系列文章目錄
- 跑通代碼—CVPR2020–StegaStamp: Invisible Hyperlinks in Physical Photographs
- 跑通代碼—WACV2020-Dense Extreme Inception Network: Towards a Robust CNN Model for Edge Detection
文章目錄
- 系列文章目錄
- 前言
- 一、官方代碼介紹
- 二、DIV2K資料集的下載
- 三、測驗官方模型
- 3.1 測驗說明
- 3.2 結果展示
- 3.3 訓練模型
- 3.4 測驗訓練模型的結果
- 四、避坑指南
- 總結
前言
關于論文的詳解請參考博文:基于可逆神經網路的影像隱藏技術 (ICCV 2021) - HiNet: Deep Image Hiding by Invertible Network

一、官方代碼介紹
官方代碼鏈接HiNet 下載或者直接git clone之后有以下檔案,model下面儲存模型,測驗時選擇官方的模型model.pt,訓練階段會按照生成頻率50個epoch生成訓練的模型,

二、DIV2K資料集的下載
DIV2K資料集,下載最后兩個High Resolution Images,

將下載的800張訓練資料集DIV2K_train_HR和100張測驗資料集DIV2K_valid_HR放在dataset檔案夾中,
三、測驗官方模型
3.1 測驗說明
將官方的模型放在檔案model/model.pt,然后修改config.py對應的引數,主要時模型的路徑,資料集的路徑,直接運行test.py,測驗程序中會在image下四個子檔案中生成對應的宿主影像、水印影像、嵌入水印之后的影像和提取水印的影像,
3.2 結果展示

第一排是原始的宿主影像,第二排是原始的水印影像,也就是需要嵌入到原始宿主影像的資訊,第三排是嵌入水印影像之后的影像,能看到,嵌入水印之后的影像與原始的影像非常的相似,肉眼幾乎無法分辨,說明演算法的不可感知性很好,最后一排是提取出來的水印影像,與第二排的原始水印影像很相近,說明演算法的魯棒性很好,恢復水印影像的能力很強,在影像水印演算法中,應該對嵌入水印影像之后的影像進行影像攻擊,然后再提取水印影像,如果依然能很好的提取出來水印圖新,說明演算法的魯棒性很好,這里的攻擊可以是噪聲攻擊,濾波攻擊,幾何攻擊等等,
3.3 訓練模型
運行train.py檔案,便能開始訓練,

3.4 測驗訓練模型的結果
訓練200多個epoch之后,使用保存的model_checkpoint_00200.pt進行測驗,還是使用dataset的資料集,只需要將config.py中的第56行改成 suffix = ‘model_checkpoint_00200.pt’,其他的和測驗官方模型一樣,得到的結果如下,與官方的模型結果不分伯仲,

四、避坑指南
- 有的包報錯,說沒有dll檔案,明明自己安裝了包,就是報錯,最好的辦法就是卸了重新裝一遍,
- 訓練時出現freeze_support()錯誤可以將datasets.py第64行改成num_workers=0,測驗時出現freeze_support()錯誤可以修改datasets.py第73行改成num_workers=0,
- 遇到GPU記憶體溢位的時候減少config.py第16行的batch_size,實驗所用顯卡是1050 Ti,batch_size=2不會溢位,
總結
跑通了ICCV2021的一篇關于影像隱藏演算法的程式,整個程式寫的非常好,條理清晰,很容易就能跑通程式,得到論文中的結果,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/384141.html
標籤:其他
