mirror of
https://github.com/easydiffusion/easydiffusion.git
synced 2024-12-24 16:08:55 +01:00
Initial implementation of prompt matrix - creates multiple task entries for the different permutations
This commit is contained in:
parent
7ae70d5a4d
commit
6b7d4877e6
@ -15,7 +15,7 @@
|
|||||||
<div id="container">
|
<div id="container">
|
||||||
<div id="top-nav">
|
<div id="top-nav">
|
||||||
<div id="logo">
|
<div id="logo">
|
||||||
<h1>Stable Diffusion UI <small>v2.21 <span id="updateBranchLabel"></span></small></h1>
|
<h1>Stable Diffusion UI <small>v2.22 <span id="updateBranchLabel"></span></small></h1>
|
||||||
</div>
|
</div>
|
||||||
<ul id="top-nav-items">
|
<ul id="top-nav-items">
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
@ -226,7 +226,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
<script src="media/main.js?v=32"></script>
|
<script src="media/main.js?v=33"></script>
|
||||||
<script>
|
<script>
|
||||||
async function init() {
|
async function init() {
|
||||||
await loadModifiers()
|
await loadModifiers()
|
||||||
|
@ -596,16 +596,8 @@ function makeImage() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let prompts = promptField.value
|
let prompts = getPrompts()
|
||||||
prompts = prompts.split('\n')
|
prompts.forEach(createTask)
|
||||||
prompts.forEach(prompt => {
|
|
||||||
prompt = prompt.trim()
|
|
||||||
if (prompt === '') {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
createTask(prompt)
|
|
||||||
})
|
|
||||||
|
|
||||||
initialText.style.display = 'none'
|
initialText.style.display = 'none'
|
||||||
}
|
}
|
||||||
@ -747,6 +739,78 @@ function createTask(prompt) {
|
|||||||
taskQueue.unshift(task)
|
taskQueue.unshift(task)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getPrompts() {
|
||||||
|
let prompts = promptField.value
|
||||||
|
prompts = prompts.split('\n')
|
||||||
|
|
||||||
|
let promptsToMake = []
|
||||||
|
|
||||||
|
prompts.forEach(prompt => {
|
||||||
|
prompt = prompt.trim()
|
||||||
|
if (prompt === '') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let promptMatrix = prompt.split('|')
|
||||||
|
prompt = promptMatrix.shift().trim()
|
||||||
|
|
||||||
|
promptsToMake.push(prompt)
|
||||||
|
|
||||||
|
promptMatrix = promptMatrix.map(p => p.trim())
|
||||||
|
promptMatrix = promptMatrix.filter(p => p !== '')
|
||||||
|
|
||||||
|
if (promptMatrix.length > 0) {
|
||||||
|
let promptPermutations = permutePrompts(prompt, promptMatrix)
|
||||||
|
promptsToMake = promptsToMake.concat(promptPermutations)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return promptsToMake
|
||||||
|
}
|
||||||
|
|
||||||
|
function permutePrompts(promptBase, promptMatrix) {
|
||||||
|
let prompts = []
|
||||||
|
let permutations = permute(promptMatrix)
|
||||||
|
permutations.forEach(perm => {
|
||||||
|
let prompt = promptBase
|
||||||
|
|
||||||
|
if (perm.length > 0) {
|
||||||
|
let promptAddition = perm.join(', ')
|
||||||
|
if (promptAddition.trim() === '') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt += ', ' + promptAddition
|
||||||
|
}
|
||||||
|
|
||||||
|
prompts.push(prompt)
|
||||||
|
})
|
||||||
|
|
||||||
|
return prompts
|
||||||
|
}
|
||||||
|
|
||||||
|
function permute(arr) {
|
||||||
|
let permutations = []
|
||||||
|
let n = arr.length
|
||||||
|
let n_permutations = Math.pow(2, n)
|
||||||
|
for (let i = 0; i < n_permutations; i++) {
|
||||||
|
let perm = []
|
||||||
|
let mask = Number(i).toString(2).padStart(n, '0')
|
||||||
|
|
||||||
|
for (let idx = 0; idx < mask.length; idx++) {
|
||||||
|
if (mask[idx] === '1' && arr[idx].trim() !== '') {
|
||||||
|
perm.push(arr[idx])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (perm.length > 0) {
|
||||||
|
permutations.push(perm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return permutations
|
||||||
|
}
|
||||||
|
|
||||||
// create a file name with embedded prompt and metadata
|
// create a file name with embedded prompt and metadata
|
||||||
// for easier cateloging and comparison
|
// for easier cateloging and comparison
|
||||||
function createFileName(seed, outputFormat) {
|
function createFileName(seed, outputFormat) {
|
||||||
|
Loading…
Reference in New Issue
Block a user