PTT評價

Re: [創作] 用深度學習幫分類&整理CG

看板C_Chat標題Re: [創作] 用深度學習幫分類&整理CG作者
zmcx16
(zmcx16)
時間推噓16 推:16 噓:0 →:9

沒想到真的有人用我寫的這個工具, 先放上我最後整理的某繪師結果:

https://i.imgur.com/xMufj3f.png


2W多張的CG, 已分類好的CG總數為13939張, 想要的分類共有179類+Others共180類,
其中Others佔4007張(歸類為不在乎的CG), 剩下的7000多張CG暫時沒有繼續分類的打算,因為喜歡的角色作品都分得差不多了, 剩下的7000多張是還未分類的作品, 打算有閒想開拓新作品才會繼續分類。

P.S. 檔案會這麼小是因為分類結果我是直接生成symbolic link, 硬碟空間吃緊QQ

在更新一下心得:

1. 前期準備訓練資料是很痛苦的, 所以我不會要求自己一步做到底, 我第一次只手動
準備好100多張, 大概20類的CG。 所以一開始分類的結果很糟是預期的, 重點是在於讓
大量相似的圖片從一堆資料夾中解放到數個資料夾, 之後再針對張數特別多的角色做手
動分類, 第一次的預測分類與其說是在分類, 不如說是在幫助你快速建立適合手動分類
的準備。 我第一次分類結果跑完, 手動整理程式的分類結果大概也只擴展到50類, 可是已分類的CG數就直接擴充到2000張, 目的就是用容易分類的圖片來幫我建立下一次的訓練資料集。 然後分類重點在於, 不要想一次把某類的CG全部分類完, 這樣用程式幫你分類就沒有意義了, 前期的重點在於準備一定數量的訓練資料, 讓程式在下次能幫你分類這
些CG。


舉例來說, 假設某角色A的CG總共有1000張, 你手動分類好20張, 下次程式就能用這20張幫你正確分類大概200張, 你在手動確認後把這200張丟到分類好的資料夾, 那下下一次程式就能用這200張幫你分類好800張, 重點在於反覆進行多次準備資料->預測->確認結果,盡量讓人工處理的CG數越少越好。


2. 在人工確認分類結果的時候, 記得把大量不感興趣的圖片先丟到特定資料夾
(Others), 然後程式分類出Others的結果可以每次都稍微看看就好, 那些大雜燴建議最後在處理, 不然到時候要從裡面挑後來又想要的圖片會很痛苦。


3. 因為動漫畫角色太多太多, 繪師風格也落差極大, 然後現在機器學習圖片分類的最大難關是, 只能分類有訓練資料的東西, 並且只能在這些認識的訓練資料中選出一個可能性最大的值, 舉例來說, 我想分類天空飛的是鳥還是飛機, 即便我的訓練資料在完善, 模型在強大, 給模型看樹葉的圖, 模型還是只會把樹葉的圖當成鳥或是飛機, 他沒辦法告訴你這張圖不是鳥也不是飛機, 所以要做一個萬用型的分類器是不可能的, 真的要分類CG, 必需決定好你的資料源以及分類的目的, 例如想從一堆繪師的作品只找出re zero的CG, 或是只從某繪師的作品分類多個作品的CG, 千萬不要把多個繪師的CG混在一起做分類多個作品的CG這樣的事, 這樣做的話還不如單純用人工分類搞不好還比較有效率。


4. 這個工具並不適合做專職分類圖片這個主題, 因為圖片的主題不只一種, 就跟CG網站對每一張CG會上一堆tag一樣, 真的要做分類圖片這件事, 最適合的方法還是用資料庫針對每一張CG的tag分類做儲存, 這樣分類的結果才有價值以及能再利用, 也可以快速針對不同的主題找圖。所以這工具的主要目的並不是整理資料, 而是以鑑賞為目的幫圖片做分類, 千萬不要以整理資料的目的用這個工具, 而是要先看你的需求是不是只要把圖片分類成單一主題就可以滿足需求。


舉例來說, 我做這個分類主要是這繪師的HCG主題太多, 不同角色混在一起根本不能用,
鑑賞觀感也大打折扣, 可是針對角色去分類資料夾的話, 對我來說就變成極度實用了, 如果是為整理圖片資料為目的, 這工具只能做單一主題的分類, 真的要整理圖片還是建議用資料庫系統比較適合。


如果有其他問題或建議, 歡迎寄信給我或直接部落格留言~ 原本這工具我就是以我個人需求設計實作的, 看到有人用真的蠻開心的XD



※ 引述《bulico (abcd)》之銘言:
: ※ 引述《zmcx16 (zmcx16)》之銘言:
: : 註: 這個程式因為根據顯卡不同要安裝的函式庫也不相同, 所以並沒有編成可執行檔提供
: : 使用, 需要會架設python環境才有辦法使用這工具。
: : Github:
: : https://github.com/zmcx16/ReclassifyAnimeCG
: : 部落格文章(文長):
: : https://blog.zmcx16.moe/2021/10/reclassifyanimecg-cg.html
: : 會想寫這個工具的主要原因是, 我有追蹤一些繪師並且用下載器去追蹤下載那些繪師的作
: : 品, 不過基本上繪師畫的圖通常就是幾天放個一張, 或是一次推出的CG圖庫都是複合的動
: : 漫畫主題, 然後下載器下載又不可能自動幫我分類這些圖片, 導致這些圖片就越來越雜: : 亂, 每個資料夾都混雜複數個主題&角色, 每個資料夾的名稱又沒有特定的主題性, 讓我
: : 自己事後很難找圖不說, 連看都懶得看了...。 後來就想到現在深度學習分類圖片已經很
: : 強了, 那我乾脆來寫個工具輔助我整理圖庫吧!!
: : 這個工具目前沒有特別為動漫CG分類做特別設計, 目前功能就是單純套用目前流行的影像
: : 分類模型, 然後整合一些檔案比對跟複製的功能, 方便用來整理CG, 使用的方法如下:: 玩了近一個月,很理想也很方便的工具!
: 不過在使用階段遇到很多挫折...
: 因為對python不熟,光是建置環境/函示庫/到可以運行就花了兩天時間,
: 好不容易開始跑問題又來了,我沒有分類好的圖庫,
: 估狗看有沒有善心人士整理,結論是天下沒有白癡的午餐。
: 最後沒辦法只好求助 rule○○
: 克服萬難後開始訓練
: 我的電腦1w多張圖大概要訓練2天半
: 反正上班沒事就放著讓它跑,回家再試看看模型的成果
: 結果瑪修、浜風和妖夢都混在一起
: fate的saber臉系列也是
: 更麻煩的是繪師的原創角色
: 像龍膽的退魔師和對魔忍,混在一起就很難分辨
: 目測分類準確率約3成
: 可能是分類不夠多,訓練資料也不夠,要人力介入的部分還很多
: https://i.imgur.com/JWEIu2N.png

: 現在是蒐集訓練用資料的部分最頭痛
: 如果有更有效率的做法,再懇請分享,感謝!

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.236.174 (臺灣)
PTT 網址

thelittleone12/12 04:25欸不是 不要假日半夜發U質技術文 容易錯過耶

a236498312/12 04:36太強了==

rickphyman4212/12 04:58有神快拜

arrenwu12/12 05:42人工智慧需要工人智慧啊 是說你們沒考慮找其他人一起幫忙

arrenwu12/12 05:42label ?

個人做這工具的目的不在研究, 只是想讓自己方便整理圖庫讓自己好鑑賞用, 另外如果缺 資料集, 推薦兩個地方: 1. Danbooru (ACG專用的機器學習數據集)

https://www.gwern.net/Danbooru2020

2. yande.re (警告, 這圖庫網站有含HCG) 裡面的圖片都有用tag分類好了, 當時為了做這個工具有特地幫自己做的下載器讓他支援 這個網站, 缺dataset的話可以用下載器直接針對自己需要的tag下載:

https://project.zmcx16.moe/?page=mahomangadownloader

另外關於framework的部分, 我N年前也有玩過Tensorflow, 不過後來機器學習的東西放生 很久,為了做這個工具重新調查目前流行的framework, 發現PyTorch超方便, 而且趨勢來 說急起直追快超過Tensorflow, 就決定用PyTorch了。

arrenwu12/12 05:51另外還想問一下,為什麼越來越多人在用PyTorch啊?

arrenwu12/12 05:51我本來以為Tensorflow會比較簡單使用說

HAmakers12/12 06:05因為TF2.0很難用吧 而且1.0轉2.0很麻煩 我看網路上一堆

HAmakers12/12 06:05原本用TF的open source都直接該pytorch

nightcrow12/12 06:18太強了,自己要用的工具自己做

cool920312/12 06:29雖然麻煩了些,但我個人認為在圖片給分類模型前可以多

cool920312/12 06:29用yolo去做臉部的尋找,然後切割出來當input。雖然整體

cool920312/12 06:29會因為要多跑yolo導致訓練與推理時間變長,但這應該可

cool920312/12 06:29以有效解決背景或整體風格問題,來提升分類的正確率

原本我也有想過做臉部切割前處理幫助提升分類準確率, 也有別人寫好的現成工具可以用

https://github.com/nagadomi/lbpcascade_animeface

不過後來第一階段做完測試後, 發現準確率已經達到我的需求了, 以我自己準備的Rezero dataset, 用現成的模型準確率可以到93%, 就覺得沒必要了...。 而且後來想想, ACG角 色繪圖風格差距特大, 有時候看服裝跟配色辨識還比看臉容易, 如果真的要加臉部辨識 應該也是當feature使用, 單只看臉部的話感覺不會比看整張圖辨識率高。

ILYY12/12 07:08PyTorch把很多東西都包好了 寫model像疊樂高一樣

ILYY12/12 07:11很快就可以組成多個或更改model來train

inte629l12/12 09:14

mictoaety12/12 09:24先推 最近也在研究

mom21312/12 09:51Pytorch 對新手來說很友善 資源教程也多 大學專題等級

e5a1t2012/12 09:56推 同作者畫風一致應該比較好分

newwu12/12 10:45pytorch比較好用吧 很直覺

joewang8512/12 12:20

※ 編輯: zmcx16 (123.194.201.118 臺灣), 12/12/2021 13:18:56 ※ 編輯: zmcx16 (123.194.201.118 臺灣), 12/12/2021 13:20:19 ※ 編輯: zmcx16 (123.194.201.118 臺灣), 12/12/2021 13:25:43

bulico12/12 14:34痾阿,我就是試圖分類多個繪師兼多個作品

bulico12/12 14:35不過分類效果還不算太差,就繼續用下去了

bulico12/12 14:40剛開始甚至還把真人照放在一起train

有符合你的需求的話就OK, 不過要注意資料集過大之後訓練模型會變很久, 之後可能 還是要resampling training data解決訓練時間過久的問題。

※ 編輯: zmcx16 (223.136.236.174 臺灣), 12/12/2021 17:13:21