<?xml version="1.0" encoding="utf-8"?>
<PowerConfig version="3.5.0.0">
    <BaseConfig>
        <!-- 0: rear Skin, 1: front SKIN -->
        <AlgoMode>-1</AlgoMode>

        <!-- max number of faces can be processed -->
        <MaxFaceNum>30</MaxFaceNum>

        <!-- enable drcGain or not -->
        <UseDrcgain>0</UseDrcgain>

        <!-- border rate for blending HD result with input -->
        <BlendRate>10</BlendRate>

        <!-- algorithm run condition -->
        <GlobalRunCondition use="1">
            <!-- lumType: 0 means ISO, 1 means LuxIndex -->
            <LumVal type="0" min="0" max="665600"></LumVal>

            <!-- roll: [minRoll,maxRoll], yaw: [minYaw, maxYaw], pitch: [minPitch, maxPitch] -->
            <FaceAngle minRoll="0" maxRoll="360" minYaw="-90" maxYaw="90" minPitch="-90" maxPitch="90"></FaceAngle>
        </GlobalRunCondition>
        <IQAConfig use="0" path="pllm_config.xml"></IQAConfig>

        <!-- method: 0 - USM, 1 - Pyramid-->
        <SharpenConfig method="0">
            <USM>
                <Sigma>1.0</Sigma>
                <Weight>3.0</Weight>
                <Threshold>1</Threshold>
            </USM>
            <Pyramid>
                <!-- maximum levelMum is 4 -->
                <LevelNum>3</LevelNum>
                <Levels>16 64 256</Levels>
            </Pyramid>
        </SharpenConfig>

        <!-- SkinSoftenConfig -->
        <SkinSoftenConfig use="1">
            <!-- valid value range: (0, 100] -->
            <DefaultSoftenLevel>10</DefaultSoftenLevel>
        </SkinSoftenConfig>

        <!-- FaceBoxConfig -->
        <FaceBoxConfig>
            <FaceCropRatio>0.20 0.65 0.20 0.35</FaceCropRatio>
        </FaceBoxConfig>

        <!-- StruMask expand ratios; Silkworm and stru share a blur kernel -->
        <StruMaskConfig>
            <ExpandRadius use="1">
                <Eye      x="11" y="11"></Eye>
                <Mouth    x="8"  y="8"></Mouth>
                <Nas      x="0"  y="0"></Nas>
                <Silkworm x="-1"  y="0"></Silkworm>
            </ExpandRadius>
            <BlurRadius use="1" val="3"></BlurRadius>
            <SilkwormBlurRadius use="1" val="1"></SilkwormBlurRadius>
        </StruMaskConfig>

		<!-- FaceMask expand ratios; Blur kernels of silkworm and stru are separate -->
        <FaceMaskConfig>
            <ExpandRadius use="1">
                <Eye      x="4"  y="4"></Eye>
                <Mouth    x="2"  y="2"></Mouth>
                <Eyebrow  x="2"  y="2"></Eyebrow>
                <Nostril  x="1"  y="1"></Nostril>
                <Silkworm x="-1"  y="0"></Silkworm>
            </ExpandRadius>
            <FiveSenseBlurRadius use="1" val="3"></FiveSenseBlurRadius>
            <SilkwormBlurRadius use="1" val="1"></SilkwormBlurRadius>
        </FaceMaskConfig>

        <SilkwormConfig minScore="0.1"></SilkwormConfig>

        <!-- MoleMask expand ratios,blur kernel -->
        <MoleMaskConfig>
            <!-- small mole net, big mole net-->
            <ExpandRadius use="1">0 -1</ExpandRadius>
            <BlurRadius   use="1">1 1</BlurRadius>
        </MoleMaskConfig>

        <!-- color fix method: 0 - None, 1 - Adain, 2 - Wavelet, 3 - UV fusion-->
        <ColorFix>1</ColorFix>
		<!-- small face box area (width x height)-->
		<SmallFaceAreaThresh>16384</SmallFaceAreaThresh>
    </BaseConfig>

    <!-- model config list -->
    <ModelConfigList>
        <SDBaseModelConfig use="1" nid="0">
            <UNet>
                <TimestepEmbedding>power_t_emb.bin</TimestepEmbedding>
                <TextEmbedding>power_prompt_embeds.bin</TextEmbedding>
                <StaticPath>unet_parallel_lora_16a8w.parallel_share.bin</StaticPath>
            </UNet>
        </SDBaseModelConfig>

        <!-- HDnet, output node sequence: hdout0, hdout1 -->
        <!-- mid front  -->
		<!-- big rear kids -->
        <ModelConfig use="1" nid="0" engine="7" device="0" power="0" thread="1" width="1152" height="1536" inRPadding="0" outRPadding="0">
            <ModelPath>RearBigKidsHD.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>add_6_act_fake_quant add_8_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- mid rear -->
        <ModelConfig use="1" nid="1" engine="7" device="0" power="0" thread="1" width="640" height="768" inRPadding="0" outRPadding="0">
            <ModelPath>RearMidHD.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>add_6_act_fake_quant add_8_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- big rear -->
        <ModelConfig use="1" nid="2" engine="7" device="0" power="0" thread="1" width="1152" height="1536" inRPadding="0" outRPadding="0">
            <ModelPath>RearBigMainHD.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>add_6_act_fake_quant add_8_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- min night -->
        <SDModelConfig use="1" nid="3" engine="7" device="0" power="0" thread="1" width="512" height="640" baseModelId="0">
            <ScalingFactor>1.0</ScalingFactor>
            <Timesteps>249</Timesteps>
            <SharedBuffer>48</SharedBuffer>
            <Encoder>
                <ModelPath>night_512x640_vae_encoder.vdnn</ModelPath>
                <InputNode>input_0</InputNode>
                <OutputNode>output_0</OutputNode>
            </Encoder>
            <UNet>
                <ModelPath>night_512x640_unet_parallel_lora_16a8w_diff.vdnn</ModelPath>
                <InputNode>input_0 input_1 input_2 input_3</InputNode>
                <OutputNode>output_0</OutputNode>
                <TimestepEmbedding></TimestepEmbedding>
                <TextEmbedding></TextEmbedding>
            </UNet>
            <Decoder>
                <ModelPath>night_512x640_vae_decoder.vdnn</ModelPath>
                <InputNode>input_0 input_1</InputNode>
                <OutputNode>output_0 output_1</OutputNode>
            </Decoder>
        </SDModelConfig>

        <!-- mid night -->
        <SDModelConfig use="1" nid="4" engine="7" device="0" power="0" thread="1" width="768" height="960" baseModelId="0">
            <ScalingFactor>1.0</ScalingFactor>
            <Timesteps>249</Timesteps>
            <SharedBuffer>108</SharedBuffer>
            <Encoder>
                <ModelPath>night_768x960_vae_encoder.vdnn</ModelPath>
                <InputNode>input_0</InputNode>
                <OutputNode>output_0</OutputNode>
            </Encoder>
            <UNet>
                <ModelPath>night_768x960_unet_parallel_lora_16a8w_diff.vdnn</ModelPath>
                <InputNode>input_0 input_1 input_2 input_3</InputNode>
                <OutputNode>output_0</OutputNode>
                <TimestepEmbedding></TimestepEmbedding>
                <TextEmbedding></TextEmbedding>
            </UNet>
            <Decoder>
                <ModelPath>night_768x960_vae_decoder.vdnn</ModelPath>
                <InputNode>input_0 input_1</InputNode>
                <OutputNode>output_0 output_1</OutputNode>
            </Decoder>
        </SDModelConfig>

        <!-- min tele -->
        <SDModelConfig use="1" nid="5" engine="7" device="0" power="0" thread="1" width="512" height="640" baseModelId="0">
            <ScalingFactor>1.0</ScalingFactor>
            <Timesteps>249</Timesteps>
            <SharedBuffer>48</SharedBuffer>
            <Encoder>
                <ModelPath>night_512x640_vae_encoder.vdnn</ModelPath>
                <InputNode>input_0</InputNode>
                <OutputNode>output_0</OutputNode>
            </Encoder>
            <UNet>
                <ModelPath>night_512x640_unet_parallel_lora_16a8w_diff.vdnn</ModelPath>
                <InputNode>input_0 input_1 input_2 input_3</InputNode>
                <OutputNode>output_0</OutputNode>
                <TimestepEmbedding></TimestepEmbedding>
                <TextEmbedding></TextEmbedding>
            </UNet>
            <Decoder>
                <ModelPath>night_512x640_vae_decoder.vdnn</ModelPath>
                <InputNode>input_0 input_1</InputNode>
                <OutputNode>output_0 output_1</OutputNode>
            </Decoder>
        </SDModelConfig>

        <!-- mid tele -->
        <SDModelConfig use="1" nid="6" engine="7" device="0" power="0" thread="1" width="768" height="960" baseModelId="0">
            <ScalingFactor>1.0</ScalingFactor>
            <Timesteps>249</Timesteps>
            <SharedBuffer>108</SharedBuffer>
            <Encoder>
                <ModelPath>tele_768x960_vae_encoder.vdnn</ModelPath>
                <InputNode>input_0</InputNode>
                <OutputNode>output_0</OutputNode>
            </Encoder>
            <UNet>
                <ModelPath>tele_768x960_unet_parallel_lora_16a8w_diff.vdnn</ModelPath>
                <InputNode>input_0 input_1 input_2 input_3</InputNode>
                <OutputNode>output_0</OutputNode>
                <TimestepEmbedding></TimestepEmbedding>
                <TextEmbedding></TextEmbedding>
            </UNet>
            <Decoder>
                <ModelPath>tele_768x960_vae_decoder.vdnn</ModelPath>
                <InputNode>input_0 input_1</InputNode>
                <OutputNode>output_0 output_1</OutputNode>
            </Decoder>
        </SDModelConfig>

        <!-- min stage -->
        <SDModelConfig use="1" nid="7" engine="7" device="0" power="0" thread="1" width="512" height="640" baseModelId="0">
            <ScalingFactor>1.0</ScalingFactor>
            <Timesteps>249</Timesteps>
            <SharedBuffer>48</SharedBuffer>
            <Encoder>
                <ModelPath>stage_512x640_vae_encoder.vdnn</ModelPath>
                <InputNode>input_0</InputNode>
                <OutputNode>output_0</OutputNode>
            </Encoder>
            <UNet>
                <ModelPath>stage_512x640_unet_parallel_lora_16a8w_diff.vdnn</ModelPath>
                <InputNode>input_0 input_1 input_2 input_3</InputNode>
                <OutputNode>output_0</OutputNode>
                <TimestepEmbedding></TimestepEmbedding>
                <TextEmbedding></TextEmbedding>
            </UNet>
            <Decoder>
                <ModelPath>stage_512x640_vae_decoder.vdnn</ModelPath>
                <InputNode>input_0 input_1</InputNode>
                <OutputNode>output_0 output_1</OutputNode>
            </Decoder>
        </SDModelConfig>
        <!-- mid stage -->
        <SDModelConfig use="1" nid="8" engine="7" device="0" power="0" thread="1" width="768" height="960" baseModelId="0">
            <ScalingFactor>1.0</ScalingFactor>
            <Timesteps>249</Timesteps>
            <SharedBuffer>108</SharedBuffer>
            <Encoder>
                <ModelPath>stage_768x960_vae_encoder.vdnn</ModelPath>
                <InputNode>input_0</InputNode>
                <OutputNode>output_0</OutputNode>
            </Encoder>
            <UNet>
                <ModelPath>stage_768x960_unet_parallel_lora_16a8w_diff.vdnn</ModelPath>
                <InputNode>input_0 input_1 input_2 input_3</InputNode>
                <OutputNode>output_0</OutputNode>
                <TimestepEmbedding></TimestepEmbedding>
                <TextEmbedding></TextEmbedding>
            </UNet>
            <Decoder>
                <ModelPath>stage_768x960_vae_decoder.vdnn</ModelPath>
                <InputNode>input_0 input_1</InputNode>
                <OutputNode>output_0 output_1</OutputNode>
            </Decoder>
        </SDModelConfig>

        <!-- facenet, output node sequence: despot, refine, refine100 -->
        <!-- min -->
        <ModelConfig use="1" nid="9" engine="7" device="0" power="0" thread="1" width="512" height="640" outWidth="512" outHeight="640" inRPadding="0" outRPadding="0">
            <ModelPath>BeautyFace_512x640.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>clone_act_fake_quant clone_1_act_fake_quant netv2_rf100_add_act_fake_quant</OutputNode>
        </ModelConfig>

		<!-- mid -->
        <ModelConfig use="1" nid="10" engine="7" device="0" power="0" thread="1" width="640" height="768" inRPadding="0" outRPadding="0">
            <ModelPath>BeautyFace_640x768.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>clone_act_fake_quant clone_1_act_fake_quant netv2_rf100_add_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- max -->
        <ModelConfig use="1" nid="11" engine="7" device="0" power="0" thread="1" width="768" height="960" outWidth="768" outHeight="960" inRPadding="0" outRPadding="0">
            <ModelPath>BeautyFace_768x960.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>clone_act_fake_quant clone_1_act_fake_quant netv2_rf100_add_act_fake_quant</OutputNode>
        </ModelConfig>

		<!-- super -->
        <ModelConfig use="1" nid="12" engine="7" device="0" power="0" thread="1" width="1152" height="1536" outWidth="1152" outHeight="1536" inRPadding="0" outRPadding="0">
            <ModelPath>BeautyFace_1152x1536.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>clone_act_fake_quant clone_1_act_fake_quant netv2_rf100_add_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- sut net -->
        <!-- min -->
        <ModelConfig use="1" nid="13" engine="7" device="0" power="0" thread="1" width="512" height="640" inRPadding="0" outRPadding="0">
            <ModelPath>RearSut_512x640.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>netv2_sut_add_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- mid -->
        <ModelConfig use="1" nid="14" engine="7" device="0" power="0" thread="1" width="640" height="768" inRPadding="0" outRPadding="0">
            <ModelPath>RearSut_640x768.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>add_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- max -->
        <ModelConfig use="1" nid="15" engine="7" device="0" power="0" thread="1" width="768" height="960" inRPadding="0" outRPadding="0">
            <ModelPath>RearSut_768x960.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>netv2_sut_add_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- super -->
        <ModelConfig use="1" nid="16" engine="7" device="0" power="0" thread="1" width="1152" height="1536" inRPadding="0" outRPadding="0">
            <ModelPath>RearSut_1152x1536.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>netv2_sut_add_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- mole net -->
        <!-- big -->
        <ModelConfig use="1" nid="17" engine="7" device="0" power="0" thread="1" width="1280" height="1280" inRPadding="0" outRPadding="0">
            <ModelPath>BigMoleSeg.vdnn</ModelPath>
            <BinPath>BigMoleSeg.bin</BinPath>
            <InputNode>im</InputNode>
            <OutputNode>sigmoid_act_fake_quant sigmoid_1_act_fake_quant sigmoid_2_act_fake_quant sigmoid_3_act_fake_quant model_model_31_m_4_act_fake_quant model_model_31_m_5_act_fake_quant model_model_31_m_6_act_fake_quant model_model_31_m_7_act_fake_quant model_model_31_proto_cv3_conv_act_fake_quant</OutputNode>
        </ModelConfig>

        <ModelConfig use="1" nid="18" engine="7" device="0" power="0" thread="1" width="768" height="768">
            <ModelPath>SmallMoleSeg.vdnn</ModelPath>
            <BinPath>SmallMoleSeg.bin</BinPath>
            <InputNode>im</InputNode>
            <OutputNode>sigmoid_act_fake_quant sigmoid_1_act_fake_quant sigmoid_2_act_fake_quant sigmoid_3_act_fake_quant model_model_31_m_4_act_fake_quant model_model_31_m_5_act_fake_quant model_model_31_m_6_act_fake_quant model_model_31_m_7_act_fake_quant model_model_31_proto_cv3_conv_act_fake_quant</OutputNode>
        </ModelConfig>

        <!-- bodynet -->
        <!-- big -->
        <ModelConfig use="1" nid="19" engine="7" device="0" power="0" thread="1" width="1024" height="1024" inRPadding="0" outRPadding="0">
            <ModelPath>BigBody.vdnn</ModelPath>
            <InputNode>inp</InputNode>
            <OutputNode>clone_act_fake_quant add_xms_act_fake_quant</OutputNode>
        </ModelConfig>
    </ModelConfigList>

    <modelSelect type="HDNet">
        <model key="BigKids" nid="0" />
        <model key="MidRear" nid="1" />
        <model key="BigRear" nid="2" />
        <model key="MinNight" nid="3" />
        <model key="MidNight" nid="4" />
        <model key="MinTele" nid="5" />
        <model key="MidTele" nid="6" />
        <model key="MinStage" nid="7" />
        <model key="MidStage" nid="8" />
    </modelSelect>

    <modelSelect type="FaceNet">
        <model key="Min" faceNetId="9" sutNetId="13" />
        <model key="Mid" faceNetId="10" sutNetId="14" />
        <model key="Max" faceNetId="11" sutNetId="15" />
        <model key="Sup" faceNetId="12" sutNetId="16" />
    </modelSelect>

    <modelSelect type="MoleNet">
        <model key="Big" nid="17" />
        <model key="Small" nid="18" />
    </modelSelect>

    <modelSelect type="BodyNet">
        <model key="Big" nid="19" />
    </modelSelect>
</PowerConfig>
