Merge pull request #141 from AbdullahAlfaraj/update_preprocessor

Update_preprocessor
pull/137/head
Abdullah Alfaraj 2023-03-07 23:30:12 +03:00 committed by GitHub
commit bca743dd17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 143 additions and 97 deletions

View File

@ -713,12 +713,14 @@ let g_old_slider_height = 512
let g_sd_config_obj let g_sd_config_obj
let g_hi_res_upscaler_models let g_hi_res_upscaler_models
let g_controlnet_max_models let g_controlnet_max_models
// let g_controlnet_preprocessors
;(async function () { ;(async function () {
let temp_config = new sd_config.SdConfig() let temp_config = new sd_config.SdConfig()
await temp_config.getConfig() await temp_config.getConfig()
g_hi_res_upscaler_models = temp_config.getUpscalerModels() g_hi_res_upscaler_models = temp_config.getUpscalerModels()
g_sd_config_obj = temp_config
g_controlnet_max_models = temp_config.getControlNetMaxModelsNum() g_controlnet_max_models = temp_config.getControlNetMaxModelsNum()
// g_controlnet_preprocessors = temp_config.getControlNetPreprocessors()
g_sd_config_obj = temp_config
for (let model of g_hi_res_upscaler_models) { for (let model of g_hi_res_upscaler_models) {
//update the hi res upscaler models menu //update the hi res upscaler models menu

View File

@ -404,12 +404,16 @@ function selectModelUi(model_hash) {
} }
function autoFillInModel(model_hash) { function autoFillInModel(model_hash) {
// unCheckAllSamplers() try {
model_element = getModelElementByHash(model_hash) // unCheckAllSamplers()
selectModelUi(model_hash) model_element = getModelElementByHash(model_hash)
// model_element. selectModelUi(model_hash)
const model_title = model_element.dataset.model_title // model_element.
return model_title const model_title = model_element.dataset.model_title
return model_title
} catch (e) {
console.warn(e)
}
} }
////// End Models////////// ////// End Models//////////
@ -424,13 +428,15 @@ function setInitImageSrc(image_src) {
ini_image_element.src = image_src ini_image_element.src = image_src
} }
function setControlImageSrc(image_src, element_index = 0) { function setControlImageSrc(image_src, element_index = 0) {
const control_net_image_element = const control_net_image_element = document.getElementById(
document.getElementById('control_net_image'+'_'+element_index) 'control_net_image' + '_' + element_index
)
control_net_image_element.src = image_src control_net_image_element.src = image_src
} }
function setControlMaskSrc(image_src, element_index = 0) { function setControlMaskSrc(image_src, element_index = 0) {
const control_net_image_element = const control_net_image_element = document.getElementById(
document.getElementById('control_net_mask'+'_'+element_index) 'control_net_mask' + '_' + element_index
)
control_net_image_element.src = image_src control_net_image_element.src = image_src
} }

View File

@ -42,7 +42,10 @@ class SdConfig {
if (comp?.props?.elem_id) { if (comp?.props?.elem_id) {
const elem_id = comp?.props?.elem_id const elem_id = comp?.props?.elem_id
if (elem_id === 'setting_control_net_max_models_num') { if (elem_id === 'setting_control_net_max_models_num') {
console.log('setting_control_net_max_models_num: ', comp?.props?.value) console.log(
'setting_control_net_max_models_num: ',
comp?.props?.value
)
max_models_num = comp?.props?.value max_models_num = comp?.props?.value
break break
} }
@ -50,7 +53,25 @@ class SdConfig {
} }
console.log('max_models_num: ', max_models_num) console.log('max_models_num: ', max_models_num)
return max_models_num return max_models_num
} catch (e) {
console.warn(e)
return 1 // default max number is one
}
}
getControlNetPreprocessors() {
try {
let max_models_num
let choices
for (let comp of this.config.components) {
const label = comp?.props?.label
if (label === 'Preprocessor') {
choices = comp?.props?.choices
break
}
}
console.log('Preprocessor list: ', choices)
return choices
} catch (e) { } catch (e) {
console.warn(e) console.warn(e)
} }

View File

@ -25,28 +25,33 @@ async function requestControlNetModuleList() {
// const control_net_json = await api.requestGet( // const control_net_json = await api.requestGet(
// `${g_sd_url}/controlnet/model_list` // `${g_sd_url}/controlnet/model_list`
// ) // )
const module_list = [ // const module_list = [
// 'none', // // 'none',
'canny', // 'canny',
'depth', // 'depth',
'depth_leres', // 'depth_leres',
'hed', // 'hed',
'mlsd', // 'mlsd',
'normal_map', // 'normal_map',
'openpose', // 'openpose',
// "openpose_hand", // // "openpose_hand",
'pidinet', // 'pidinet',
'scribble', // 'scribble',
'fake_scribble', // 'fake_scribble',
'segmentation', // 'segmentation',
] // ]
const module_list = g_sd_config_obj.getControlNetPreprocessors()
// const module_list = g_controlnet_preprocessors
return module_list return module_list
} }
async function populateModelMenu() { async function populateModelMenu() {
try { try {
const models = await requestControlNetModelList() const models = await requestControlNetModelList()
for (let index = 0; index < g_controlnet_max_supported_models; index++) { for (
let index = 0;
index < g_controlnet_max_supported_models;
index++
) {
html_manip.populateMenu( html_manip.populateMenu(
'mModelsMenuControlNet_' + index, 'mModelsMenuControlNet_' + index,
'mModelsMenuItemControlNet_' + index, 'mModelsMenuItemControlNet_' + index,
@ -64,8 +69,11 @@ async function populateModelMenu() {
async function populatePreprocessorMenu() { async function populatePreprocessorMenu() {
try { try {
const modules = await requestControlNetModuleList() const modules = await requestControlNetModuleList()
for (let index = 0; index < g_controlnet_max_supported_models; index++) { for (
let index = 0;
index < g_controlnet_max_supported_models;
index++
) {
html_manip.populateMenu( html_manip.populateMenu(
'mModuleMenuControlNet_' + index, 'mModuleMenuControlNet_' + index,
'mModuleMenuItemControlNet_' + index, 'mModuleMenuItemControlNet_' + index,
@ -80,17 +88,20 @@ async function populatePreprocessorMenu() {
} }
} }
async function initializeControlNetTab(controlnet_max_models) { async function initializeControlNetTab(controlnet_max_models) {
if(controlnet_max_models > g_controlnet_max_supported_models) try {
controlnet_max_models = g_controlnet_max_supported_models if (controlnet_max_models > g_controlnet_max_supported_models)
controlnet_max_models = g_controlnet_max_supported_models
for (let index = 0; index < controlnet_max_models; index++) {
await populateModelMenu(index) for (let index = 0; index < controlnet_max_models; index++) {
await populatePreprocessorMenu(index) await populateModelMenu(index)
document.getElementById('controlnet_settings_' + index).style.display = "block"; await populatePreprocessorMenu(index)
document.getElementById(
'controlnet_settings_' + index
).style.display = 'block'
}
} catch (e) {
console.warn(e)
} }
} }
// controlnet settings getters // controlnet settings getters
function getControlNetWeightGuidanceStrength(controlnet_index = 0) { function getControlNetWeightGuidanceStrength(controlnet_index = 0) {
@ -102,17 +113,23 @@ function getControlNetWeightGuidanceStrength(controlnet_index = 0) {
} }
function getControlNetWeight(controlnet_index = 0) { function getControlNetWeight(controlnet_index = 0) {
const slider_value = document.getElementById('slControlNetWeight_' + controlnet_index).value const slider_value = document.getElementById(
'slControlNetWeight_' + controlnet_index
).value
const sd_value = general.mapRange(slider_value, 0, 100, 0, 2) // convert slider value to SD ready value const sd_value = general.mapRange(slider_value, 0, 100, 0, 2) // convert slider value to SD ready value
return sd_value return sd_value
} }
function getUseLowVram(controlnet_index = 0) { function getUseLowVram(controlnet_index = 0) {
const b_result = document.getElementById('chlowVram_' + controlnet_index).checked const b_result = document.getElementById(
'chlowVram_' + controlnet_index
).checked
return b_result return b_result
} }
function getEnableControlNet(controlnet_index = 0) { function getEnableControlNet(controlnet_index = 0) {
const is_enable = document.getElementById('chEnableControlNet_' + controlnet_index).checked const is_enable = document.getElementById(
'chEnableControlNet_' + controlnet_index
).checked
return is_enable return is_enable
} }
@ -130,7 +147,9 @@ function getSelectedModel(controlnet_index = 0) {
return model_name return model_name
} }
function getUseGuessMode(controlnet_index = 0) { function getUseGuessMode(controlnet_index = 0) {
const is_guess_mode = document.getElementById('chGuessMode_' + controlnet_index).checked const is_guess_mode = document.getElementById(
'chGuessMode_' + controlnet_index
).checked
return is_guess_mode return is_guess_mode
} }
@ -139,20 +158,18 @@ function getControlNetMaxModelsNumber() {
} }
function mapPluginSettingsToControlNet(plugin_settings) { function mapPluginSettingsToControlNet(plugin_settings) {
const ps = plugin_settings; // for shortness const ps = plugin_settings // for shortness
let controlnet_units = []; let controlnet_units = []
for (let index = 0; index < g_controlnet_max_supported_models; index++) { for (let index = 0; index < g_controlnet_max_supported_models; index++) {
if(!getEnableControlNet(index)) if (!getEnableControlNet(index)) break
break; controlnet_units[index] = {
controlnet_units[index] =
{
input_image: g_generation_session.controlNetImage[index], input_image: g_generation_session.controlNetImage[index],
mask: "", mask: '',
module: getSelectedModule(index), module: getSelectedModule(index),
model: getSelectedModel(index), model: getSelectedModel(index),
weight: getControlNetWeight(index), weight: getControlNetWeight(index),
resize_mode: "Scale to Fit (Inner Fit)", resize_mode: 'Scale to Fit (Inner Fit)',
lowvram: getUseLowVram(index), lowvram: getUseLowVram(index),
processor_res: 512, processor_res: 512,
threshold_a: 64, threshold_a: 64,
@ -164,30 +181,26 @@ function mapPluginSettingsToControlNet(plugin_settings) {
} }
} }
if ( if (
plugin_settings["mode"] === plugin_settings['mode'] === Enum.generationModeEnum['Img2Img'] ||
Enum.generationModeEnum["Img2Img"] || plugin_settings['mode'] === Enum.generationModeEnum['Inpaint'] ||
plugin_settings["mode"] === plugin_settings['mode'] === Enum.generationModeEnum['Outpaint']
Enum.generationModeEnum["Inpaint"] ||
plugin_settings["mode"] ===
Enum.generationModeEnum["Outpaint"]
) { ) {
const b_use_guess_mode = getUseGuessMode(); const b_use_guess_mode = getUseGuessMode()
controlnet_units[0]["guessmode"] = b_use_guess_mode; controlnet_units[0]['guessmode'] = b_use_guess_mode
} }
const controlnet_payload = {
...ps,
controlnet_units,
subseed: -1,
override_settings: {},
override_settings_restore_afterwards: true,
};
return controlnet_payload;
}
const controlnet_payload = {
...ps,
controlnet_units,
subseed: -1,
override_settings: {},
override_settings_restore_afterwards: true,
}
return controlnet_payload
}
function refreshControlNetTab() {}
for (let index = 0; index < g_controlnet_max_supported_models; index++) { for (let index = 0; index < g_controlnet_max_supported_models; index++) {
//event listeners //event listeners
@ -196,8 +209,9 @@ for (let index = 0; index < g_controlnet_max_supported_models; index++) {
.addEventListener('input', (evt) => { .addEventListener('input', (evt) => {
// debugger // debugger
const sd_value = general.mapRange(evt.target.value, 0, 100, 0, 1) // convert slider value to SD ready value const sd_value = general.mapRange(evt.target.value, 0, 100, 0, 1) // convert slider value to SD ready value
document.getElementById('lControlNetGuidanceStrength_' + index).textContent = document.getElementById(
Number(sd_value).toFixed(2) 'lControlNetGuidanceStrength_' + index
).textContent = Number(sd_value).toFixed(2)
}) })
document document
@ -211,7 +225,8 @@ for (let index = 0; index < g_controlnet_max_supported_models; index++) {
document document
.getElementById('bSetControlImage_' + index) .getElementById('bSetControlImage_' + index)
.addEventListener('click', async () => { .addEventListener('click', async () => {
const selectionInfo = await selection.Selection.getSelectionInfoExe() const selectionInfo =
await selection.Selection.getSelectionInfoExe()
if (selectionInfo) { if (selectionInfo) {
await g_generation_session.setControlNetImage(index) await g_generation_session.setControlNetImage(index)
} else { } else {
@ -219,30 +234,32 @@ for (let index = 0; index < g_controlnet_max_supported_models; index++) {
} }
}) })
document.getElementById('bControlMask_' + index).addEventListener('click', async () => { document
// const selectionInfo = await selection.Selection.getSelectionInfoExe() .getElementById('bControlMask_' + index)
.addEventListener('click', async () => {
// const selectionInfo = await selection.Selection.getSelectionInfoExe()
if ( if (
g_generation_session.control_net_selection_info && g_generation_session.control_net_selection_info &&
g_generation_session.controlNetMask[index] g_generation_session.controlNetMask[index]
) { ) {
const selection_info = g_generation_session.control_net_selection_info const selection_info =
const layer = await io.IO.base64ToLayer( g_generation_session.control_net_selection_info
g_generation_session.controlNetMask[index], const layer = await io.IO.base64ToLayer(
'ControlNet Mask.png', g_generation_session.controlNetMask[index],
selection_info.left, 'ControlNet Mask.png',
selection_info.top, selection_info.left,
selection_info.width, selection_info.top,
selection_info.height selection_info.width,
) selection_info.height
} else { )
// await note.Notification.inactiveSelectionArea() } else {
app.showAlert('Mask Image is not available') // await note.Notification.inactiveSelectionArea()
} app.showAlert('Mask Image is not available')
}) }
})
} }
module.exports = { module.exports = {
requestControlNetModelList, requestControlNetModelList,
populateModelMenu, populateModelMenu,