modelscope / facechain

FaceChain is a deep-learning toolchain for generating your Digital-Twin.
Apache License 2.0
8.72k stars 814 forks source link

如何更换基模? #217

Closed Wallfacer005CN closed 10 months ago

Wallfacer005CN commented 10 months ago

如何更换基模?

Nomination-NRB commented 10 months ago

我打算pr,写好了,先给你看一下 如果用app.py启动的话,webui上面直接切换就行,有两个:leosamsMoonfilm_filmGrain20和MajicmixRealistic_v6

脚本运行

如果不想启动服务,而是直接在命令行进行开发调试等工作,FaceChain也支持在python环境中直接运行脚本进行训练和推理。在克隆后的文件夹中直接运行如下命令来进行训练:

目前有两种基模型:

base_models = [
    {   
        'name': 'leosamsMoonfilm_filmGrain20',
        'model_id': 'ly261666/cv_portrait_model',
        'revision': 'v2.0',
        'sub_path': "film/film",
        'style_list': ['工作服(Working suit)', 
                       '盔甲风(Armor)',
                       'T恤衫(T-shirt)',
                       '汉服风(Hanfu)',
                       '女士晚礼服(Gown)',
                       '赛博朋克(Cybernetics punk)',
                       '凤冠霞帔(Chinese traditional gorgeous suit)']
    },
    {
        'name': 'MajicmixRealistic_v6',
        'model_id': 'YorickHe/majicmixRealistic_v6',
        'revision': 'v1.0.0',
        'sub_path': "realistic",
        'style_list': ['冬季汉服(Chinese winter hanfu)', 
                       '校服风(School uniform)', 
                       '婚纱风(Wedding dress)', 
                       '夜景港风(Hong Kong night style)', 
                       '雨夜(Rainy night)', 
                       '模特风(Model style)', 
                       '机车风(Motorcycle race style)', 
                       '婚纱风-2(Wedding dress 2)',
                       '拍立得风(Polaroid style)', 
                       '仙女风(Fairy style)', 
                       '古风(traditional chinese style)', 
                       '壮族服装风(Zhuang style)', 
                       '欧式田野风(European fields)']
    },
]

不同的基模型提供的风格不一样,根据自己的需要切换基模型以及对应的配置信息,例如:

PYTHONPATH=. sh train_lora.sh "ly261666/cv_portrait_model" "v2.0" "film/film" "./imgs" "./processed" "./output"
PYTHONPATH=. sh train_lora.sh "YorickHe/majicmixRealistic_v6" "v1.0.0" "realistic" "./imgs" "./processed" "./output"

参数含义(两个基模型配置参数同理):

ly261666/cv_portrait_model: ModelScope模型仓库的stable diffusion基模型,该模型会用于训练,可以不修改
v2.0: 该基模型的版本号,可以不修改
film/film: 该基模型包含了多个不同风格的子目录,其中使用了film/film目录中的风格模型,可以不修改
./imgs: 本参数需要用实际值替换,本参数是一个本地文件目录,包含了用来训练和生成的原始照片
./processed: 预处理之后的图片文件夹,这个参数需要在推理中被传入相同的值,可以不修改
./output: 训练生成保存模型weights的文件夹,可以不修改

等待5-20分钟即可训练完成。用户也可以调节其他训练超参数,训练支持的超参数可以查看train_lora.sh的配置,或者facechain/train_text_to_image_lora.py中的完整超参数列表。

进行推理时,请编辑run_inference.py中的代码:

use_main_model = True
use_face_swap = True
# 使用姿态处理,默认False
use_post_process = False
# 使用风格化,默认False
use_stylization = False
# 使用深度控制,默认False,仅在使用姿态控制时生效
use_depth_control = False
# 使用姿态控制,默认False
use_pose_model = False
# 姿态控制图片路径,仅在使用姿态控制时生效
pose_image = 'poses/man/pose1.png'
# 填入上述的预处理之后的图片文件夹,需要和训练时相同
processed_dir = './processed'
# 推理生成的图片数量
num_generate = 5
# 基模型
base_model = 'ly261666/cv_portrait_model'
# 该基模型的版本号
revision = 'v2.0'
multiplier_style = 0.25
multiplier_human = 0.85
# 该基模型包含了多个不同风格的子目录,其中使用了film/film目录中的风格模型,可以不修改
base_model_sub_dir = 'film/film'
# 训练生成保存模型weights的文件夹,需要保证和训练时相同
train_output_dir = './output'
# 指定一个保存生成的图片的文件夹,本参数可以根据需要修改
output_dir = './generated'
# 用来训练和生成的原始照片文件夹 
input_dir = './imgs'
# 默认使用工作服(Working suit)风格
style = styles[0]
model_id = style['model_id']

之后执行(若不指定参数推理,则使用run_inference.py文件中的默认参数):

python run_inference.py 

即可在output_dir中找到生成的个人数字形象照片。

也可以执行(若指定参数推理,需要和训练时保持一致,模型,版本号等其他信息):

python run_inference.py --base_model "YorickHe/majicmixRealistic_v6" --revision "v1.0.0" --base_model_sub_dir "realistic" --input_dir "./imgs" --processed_dir "./processed" --output_dir "./generated"

即可在output_dir中找到生成的个人数字形象照片。

Wallfacer005CN commented 10 months ago

除了这两个之外,可以更换其他sd模型做基模吗?

sunbaigui commented 10 months ago

除了这两个之外,可以更换其他sd模型做基模吗?

可以的。

sunbaigui commented 10 months ago

closed as completed.

kidhan1234 commented 9 months ago

@Nomination-NRB 请问你pr了吗,下面这个base_models在哪查看 base_models = [ {
'name': 'leosamsMoonfilm_filmGrain20', 'model_id': 'ly261666/cv_portrait_model', 'revision': 'v2.0', 'sub_path': "film/film", 'style_list': ['工作服(Working suit)', '盔甲风(Armor)', 'T恤衫(T-shirt)', '汉服风(Hanfu)', '女士晚礼服(Gown)', '赛博朋克(Cybernetics punk)', '凤冠霞帔(Chinese traditional gorgeous suit)'] }, { 'name': 'MajicmixRealistic_v6', 'model_id': 'YorickHe/majicmixRealistic_v6', 'revision': 'v1.0.0', 'sub_path': "realistic", 'style_list': ['冬季汉服(Chinese winter hanfu)', '校服风(School uniform)', '婚纱风(Wedding dress)', '夜景港风(Hong Kong night style)', '雨夜(Rainy night)', '模特风(Model style)', '机车风(Motorcycle race style)', '婚纱风-2(Wedding dress 2)', '拍立得风(Polaroid style)', '仙女风(Fairy style)', '古风(traditional chinese style)', '壮族服装风(Zhuang style)', '欧式田野风(European fields)'] }, ]

Nomination-NRB commented 9 months ago

@Nomination-NRB 请问你pr了吗,下面这个base_models在哪查看 base_models = [ { 'name': 'leosamsMoonfilm_filmGrain20', 'model_id': 'ly261666/cv_portrait_model', 'revision': 'v2.0', 'sub_path': "film/film", 'style_list': ['工作服(Working suit)', '盔甲风(Armor)', 'T恤衫(T-shirt)', '汉服风(Hanfu)', '女士晚礼服(Gown)', '赛博朋克(Cybernetics punk)', '凤冠霞帔(Chinese traditional gorgeous suit)'] }, { 'name': 'MajicmixRealistic_v6', 'model_id': 'YorickHe/majicmixRealistic_v6', 'revision': 'v1.0.0', 'sub_path': "realistic", 'style_list': ['冬季汉服(Chinese winter hanfu)', '校服风(School uniform)', '婚纱风(Wedding dress)', '夜景港风(Hong Kong night style)', '雨夜(Rainy night)', '模特风(Model style)', '机车风(Motorcycle race style)', '婚纱风-2(Wedding dress 2)', '拍立得风(Polaroid style)', '仙女风(Fairy style)', '古风(traditional chinese style)', '壮族服装风(Zhuang style)', '欧式田野风(European fields)'] }, ]

在这里,但这个是非功能性pr,他们好像没有接受 pull requests: update run_inference.py and README_ZH.md and README.md #219

base_models原本是在facechain/facechain/constants.py里面,现在仓库最新版只保留了ly261666/cv_portrait_model

我fork过,你可以去我仓库看https://github.com/Nomination-NRB/facechain/blob/main/facechain/constants.py

kidhan1234 commented 9 months ago

cv_portrait_model是比majic好吗,为什么他们只保留cv_portrait_model,我一般常用majic

Nomination-NRB commented 9 months ago

cv_portrait_model是比majic好吗,为什么他们只保留cv_portrait_model,我一般常用majic

这个我就不知道了,最开始因为两种模型提供的风格不一样才区分开的,现在用cv_portrait好像都可以使用那些风格了

kidhan1234 commented 9 months ago

我看现在版本的base_models里有majic哇,可以直接使用PYTHONPATH=. sh train_lora.sh "YorickHe/majicmixRealistic_v6" "v1.0.0" "realistic" "./imgs" "./processed" "./output"来训练majic的lora吗 image

Nomination-NRB commented 9 months ago

我看现在版本的base_models里有majic哇,可以直接使用PYTHONPATH=. sh train_lora.sh "YorickHe/majicmixRealistic_v6" "v1.0.0" "realistic" "./imgs" "./processed" "./output"来训练majic的lora吗 image

哦哦,我看错了,是app.py界面上不显示了,可以直接这样训练,但你推理的时候也需要用majic,要统一,所以我之前才弄了那个pr,通过命令行传参,若不传就用默认cv_portrait