星级打分
平均分: NAN 参与人数: 0 我的评分: 未评
本帖最后由 此昵称已存在 于 2022-4-8 22:05 编辑
前几天挂了一晚的Kaggle训练模型,一大早就打包下载下来准备在本地合成,结果是合成阶段差点把我本地磁盘给爆满,电脑都快给卡死在命令行那 (没钱买硬盘...)于是我就想能不能把DFL的部分脚本也搬到Kaggle上去做,在云端全处理完,最后打包下载到本地,这样就省的大量切图文件冗余在自己电脑中占用空间。
( 这个贴子部分内容如果看不懂,请转战论坛精品贴的Kaggle使用教程: 传送门 )
训练模型代码
我们在Kaggle上训练模型,其实是在notebook里敲打如上代码来执行训练的命令,在本地就体现为执行bat脚本,其实原理都是一样的,只要你知道DFL训练模型的执行代码,把DFl项目部署到本地的Vscode或者其他Python编译器里也照样能跑。
但是呢,Kaggle平台有个缺点就是不能与控制台交互(也可能是我没找到方法),换句话说,Kaggle不能像在本地运行train SAEHD.bat那样可以在cmd中自由控制,所以得预先让程序知道我们想要的训练参数,并按照流程执行下去。
关于Training的方法大家可以去原教程贴学习,这里我就只说怎么去Merger了。
1. 替换掉项目里的data_dst文件夹(非必须)
准备好要合成的dst文件,文件夹里一定要包括没有切脸的视频帧,合成需要。
2. kaggle新增合成参数数据集
就像上文说的,我们要事先准备好程序运行下去的参数,为了方便使用,我建议是在kaggle项目里添加一个数据集,日后也可以根据需求而更改,如下图。
3.合成参数修改(重点)
(PS:以下四个文件最好都从Kaggle上部署的DFL项目里下载,修改后再上传,本地的DFL和GitHub上的DFL版本可能不一样,会导致意料外的错误 )
MergerConfig.py文件位于DFL的merger文件夹下,主要是更改合成参数,随便用一个python编辑器打开此文件,并ctrl+F搜索ask_settings定位
由于考虑到篇幅过大,下面我就把文件修改前后的地方用截图的方式展示,有代码注释
修改前:
修改后:
Merger.py文件位于DFL的mainscripts文件夹下,主要更改cpu线程数,随便用一个python编辑器打开此文件,并定位到下图位置
修改前:
修改后:
(PS:cpu线程数量可酌情给,大家看情况设置,我比较懒,没有去实验线程数上下限 )
下面是分两种方法设置,二选一即可:
①
main.py位于DFL的根目录下,主要是决定合成阶段是用CPU还是GPU,当然我们这里选择GPU会快很多,随便用一个python编辑器打开此文件,并定位到下图位置,找到force_gpu_idxs
修改前:
修改后:
(该方法由贴子地板楼层用户deeplovelyf 提供)
②
nn.py位于DFL的根目录/core/leras/ 下,这里对其进行修改也是为了选择GPU,随便用一个python编辑器打开此文件,并定位到下图位置
(如果有多个GPU,可以自行修改,格式切记是 '0~9' )
4. 合成参数上传
因为GPU选择有两种方法,我这里就多一步上传的代码,在notebook里新建code cell,然后输入即可,main.py和nn.py二选一即可
5.合成
如果是按第2步创建的数据集,可以直接在notebook里新建code cell,然后输入下面的代码
方法 ① 代码:
!python main.py merge --input-dir /kaggle/working/workspace/data_dst --output-dir /kaggle/working/workspace/data_dst/merged
--output-mask-dir /kaggle/working/workspace/data_dst/merged_mask --aligned-dir /kaggle/working/workspace/data_dst/aligned
--force-model-name DFD224F
--model-dir /kaggle/working/workspace/model --model SAEHD
--force-gpu-idxs 0
方法 ② 代码:
!python main.py merge --input-dir /kaggle/working/workspace/data_dst --output-dir /kaggle/working/workspace/data_dst/merged
--output-mask-dir /kaggle/working/workspace/data_dst/merged_mask --aligned-dir /kaggle/working/workspace/data_dst/aligned
--force-model-name DFD224F
--model-dir /kaggle/working/workspace/model --model SAEHD
(为了版面格式,我手动回车了)
我这里也只是个参考,如果有路径问题,自己想办法解决一下
--force-model-name后面加上模型的名称
--force-gpu-idxs后面跟上GPU的序号
顺便说下方法一和二的区别:
方法一是只修改了main.py中的process_merger部分,可以使用--force-gpu-idxs命令来强迫合成阶段所选的GPU,对于DFL其他部分没啥影响;
方法二修改的是接口内部的参数,可能会影响到其他功能的使用,大概就是有出现"Which GPU indexes to choose?"选择的bat脚本(苦笑)
所以还是建议选择方法一比较好吧。