prep profiles for including model/pipeline params
This commit is contained in:
parent
f36fa6b5ec
commit
72d0d374e1
|
@ -24,16 +24,21 @@ import { shallow } from 'zustand/shallow';
|
|||
import { OnnxState, StateContext } from '../state/full.js';
|
||||
import { ImageMetadata } from '../types/api.js';
|
||||
import { DeepPartial } from '../types/model.js';
|
||||
import { BaseImgParams, HighresParams, Txt2ImgParams, UpscaleParams } from '../types/params.js';
|
||||
import { BaseImgParams, HighresParams, ModelParams, Txt2ImgParams, UpscaleParams } from '../types/params.js';
|
||||
|
||||
const { useState } = React;
|
||||
|
||||
export const ALLOWED_EXTENSIONS = ['.json','.jpg','.jpeg','.png','.txt','.webp'];
|
||||
export const EXTENSION_FILTER = ALLOWED_EXTENSIONS.join(',');
|
||||
|
||||
export interface ProfilesProps {
|
||||
selectHighres(state: OnnxState): HighresParams;
|
||||
selectModel(state: OnnxState): ModelParams;
|
||||
selectParams(state: OnnxState): BaseImgParams;
|
||||
selectUpscale(state: OnnxState): UpscaleParams;
|
||||
|
||||
setHighres(params: Partial<HighresParams>): void;
|
||||
setModel(params: Partial<ModelParams>): void;
|
||||
setParams(params: Partial<BaseImgParams>): void;
|
||||
setUpscale(params: Partial<UpscaleParams>): void;
|
||||
}
|
||||
|
@ -116,6 +121,7 @@ export function Profiles(props: ProfilesProps) {
|
|||
onClick={() => {
|
||||
const state = store.getState();
|
||||
saveProfile({
|
||||
model: props.selectModel(state),
|
||||
params: props.selectParams(state),
|
||||
name: profileName,
|
||||
highres: props.selectHighres(state),
|
||||
|
@ -131,7 +137,7 @@ export function Profiles(props: ProfilesProps) {
|
|||
<ImageSearch />
|
||||
<input
|
||||
hidden
|
||||
accept={'.json,.jpg,.jpeg,.png,.txt,.webp'}
|
||||
accept={EXTENSION_FILTER}
|
||||
type='file'
|
||||
onChange={(event) => {
|
||||
const { files } = event.target;
|
||||
|
@ -139,6 +145,8 @@ export function Profiles(props: ProfilesProps) {
|
|||
const file = mustExist(files[0]);
|
||||
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
||||
loadParamsFromFile(file).then((newParams) => {
|
||||
// TODO: load model parameters
|
||||
|
||||
if (doesExist(newParams.params)) {
|
||||
props.setParams(newParams.params);
|
||||
}
|
||||
|
@ -161,6 +169,8 @@ export function Profiles(props: ProfilesProps) {
|
|||
<Button component='label' variant='contained' onClick={() => {
|
||||
const state = store.getState();
|
||||
downloadParamsAsFile({
|
||||
// TODO: save model parameters
|
||||
// model: props.selectModel(state),
|
||||
params: props.selectParams(state),
|
||||
highres: props.selectHighres(state),
|
||||
upscale: props.selectUpscale(state),
|
||||
|
|
|
@ -59,10 +59,12 @@ export function Img2Img() {
|
|||
<Stack spacing={2}>
|
||||
<Profiles
|
||||
selectHighres={selectHighres}
|
||||
selectModel={selectModel}
|
||||
selectParams={selectParams}
|
||||
selectUpscale={selectUpscale}
|
||||
setParams={setImg2Img}
|
||||
setHighres={setHighres}
|
||||
setModel={setModel}
|
||||
setParams={setImg2Img}
|
||||
setUpscale={setUpscale}
|
||||
/>
|
||||
<ModelControl model={model} setModel={setModel} />
|
||||
|
|
|
@ -91,10 +91,12 @@ export function Inpaint() {
|
|||
<Stack spacing={2}>
|
||||
<Profiles
|
||||
selectHighres={selectHighres}
|
||||
selectModel={selectModel}
|
||||
selectParams={selectParams}
|
||||
selectUpscale={selectUpscale}
|
||||
setParams={setInpaint}
|
||||
setHighres={setHighres}
|
||||
setModel={setModel}
|
||||
setParams={setInpaint}
|
||||
setUpscale={setUpscale}
|
||||
/>
|
||||
<ModelControl model={model} setModel={setModel} />
|
||||
|
|
|
@ -55,11 +55,13 @@ export function Txt2Img() {
|
|||
return <Box>
|
||||
<Stack spacing={2}>
|
||||
<Profiles
|
||||
selectParams={selectParams}
|
||||
selectHighres={selectHighres}
|
||||
selectModel={selectModel}
|
||||
selectParams={selectParams}
|
||||
selectUpscale={selectUpscale}
|
||||
setParams={setParams}
|
||||
setHighres={setHighres}
|
||||
setModel={setModel}
|
||||
setParams={setParams}
|
||||
setUpscale={setUpscale}
|
||||
/>
|
||||
<ModelControl model={model} setModel={setModel} />
|
||||
|
|
|
@ -45,10 +45,12 @@ export function Upscale() {
|
|||
<Stack spacing={2}>
|
||||
<Profiles
|
||||
selectHighres={selectHighres}
|
||||
selectModel={selectModel}
|
||||
selectParams={selectParams}
|
||||
selectUpscale={selectUpscale}
|
||||
setParams={setParams}
|
||||
setHighres={setHighres}
|
||||
setModel={setModel}
|
||||
setParams={setParams}
|
||||
setUpscale={setUpscale}
|
||||
/>
|
||||
<ModelControl model={model} setModel={setModel} />
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
/* eslint-disable camelcase */
|
||||
import { Maybe } from '@apextoaster/js-utils';
|
||||
import { BaseImgParams, HighresParams, Txt2ImgParams, UpscaleParams } from '../types/params.js';
|
||||
import { BaseImgParams, HighresParams, ModelParams, Txt2ImgParams, UpscaleParams } from '../types/params.js';
|
||||
import { Slice } from './types.js';
|
||||
|
||||
export interface ProfileItem {
|
||||
name: string;
|
||||
params: BaseImgParams | Txt2ImgParams;
|
||||
highres?: Maybe<HighresParams>;
|
||||
model?: Maybe<Partial<ModelParams>>;
|
||||
name: string;
|
||||
params: Partial<BaseImgParams | Txt2ImgParams>;
|
||||
upscale?: Maybe<UpscaleParams>;
|
||||
}
|
||||
|
||||
|
@ -77,10 +78,19 @@ export const DEFAULT_UPSCALE_OFF: UpscaleParams = {
|
|||
upscaleOrder: 'correction-first',
|
||||
};
|
||||
|
||||
export const DEFAULT_MODEL_SDV15: Partial<ModelParams> = {
|
||||
pipeline: 'txt2img',
|
||||
};
|
||||
|
||||
export const DEFAULT_MODEL_SDXL: Partial<ModelParams> = {
|
||||
pipeline: 'txt2img-sdxl',
|
||||
};
|
||||
|
||||
export const DEFAULT_PROFILES: Array<ProfileItem> = [
|
||||
// SD v1.5 base
|
||||
{
|
||||
name: 'base SD v1.5',
|
||||
model: DEFAULT_MODEL_SDV15,
|
||||
params: {
|
||||
batch: 1,
|
||||
cfg: 5,
|
||||
|
@ -101,11 +111,35 @@ export const DEFAULT_PROFILES: Array<ProfileItem> = [
|
|||
highres: DEFAULT_HIGHRES_OFF,
|
||||
upscale: DEFAULT_UPSCALE_OFF,
|
||||
},
|
||||
// SD v1.5 clip skip
|
||||
{
|
||||
name: 'base SD v1.5 clip skip',
|
||||
model: DEFAULT_MODEL_SDV15,
|
||||
params: {
|
||||
batch: 1,
|
||||
cfg: 5,
|
||||
eta: 0,
|
||||
negativePrompt: '',
|
||||
prompt: '<clip:skip:2> ',
|
||||
scheduler: 'deis',
|
||||
steps: 30,
|
||||
seed: -1,
|
||||
tiled_vae: false,
|
||||
unet_overlap: 0.75,
|
||||
unet_tile: 512,
|
||||
vae_overlap: 0.25,
|
||||
vae_tile: 512,
|
||||
width: 512,
|
||||
height: 512
|
||||
},
|
||||
highres: DEFAULT_HIGHRES_OFF,
|
||||
upscale: DEFAULT_UPSCALE_OFF,
|
||||
},
|
||||
// SD v1.5 LCM
|
||||
{
|
||||
name: 'base SD v1.5 LCM',
|
||||
model: DEFAULT_MODEL_SDV15,
|
||||
params: {
|
||||
// "pipeline": "txt2img-sdxl",
|
||||
scheduler: 'lcm',
|
||||
prompt: '<lora:lcm:1.0> ',
|
||||
negativePrompt: '',
|
||||
|
@ -124,9 +158,11 @@ export const DEFAULT_PROFILES: Array<ProfileItem> = [
|
|||
},
|
||||
highres: DEFAULT_HIGHRES_OFF,
|
||||
upscale: DEFAULT_UPSCALE_OFF,
|
||||
}, // SD v1.5 highres
|
||||
},
|
||||
// SD v1.5 highres
|
||||
{
|
||||
name: 'base SD v1.5 highres',
|
||||
model: DEFAULT_MODEL_SDV15,
|
||||
params: {
|
||||
batch: 1,
|
||||
cfg: 5,
|
||||
|
@ -150,6 +186,9 @@ export const DEFAULT_PROFILES: Array<ProfileItem> = [
|
|||
// SD v1.5 panorama
|
||||
{
|
||||
name: 'base SD v1.5 panorama',
|
||||
model: {
|
||||
pipeline: 'panorama',
|
||||
},
|
||||
params: {
|
||||
batch: 1,
|
||||
cfg: 12,
|
||||
|
@ -173,6 +212,7 @@ export const DEFAULT_PROFILES: Array<ProfileItem> = [
|
|||
// SDXL base
|
||||
{
|
||||
name: 'base SDXL',
|
||||
model: DEFAULT_MODEL_SDXL,
|
||||
params: {
|
||||
batch: 1,
|
||||
cfg: 10,
|
||||
|
@ -196,6 +236,7 @@ export const DEFAULT_PROFILES: Array<ProfileItem> = [
|
|||
// SDXL highres
|
||||
{
|
||||
name: 'base SDXL highres',
|
||||
model: DEFAULT_MODEL_SDXL,
|
||||
params: {
|
||||
batch: 1,
|
||||
cfg: 10,
|
||||
|
@ -219,8 +260,8 @@ export const DEFAULT_PROFILES: Array<ProfileItem> = [
|
|||
// SDXL LCM
|
||||
{
|
||||
name: 'base SDXL LCM',
|
||||
model: DEFAULT_MODEL_SDXL,
|
||||
params: {
|
||||
// "pipeline": "txt2img-sdxl",
|
||||
scheduler: 'lcm',
|
||||
prompt: '<lora:sdxl-lcm:1.0> ',
|
||||
negativePrompt: '',
|
||||
|
@ -243,6 +284,7 @@ export const DEFAULT_PROFILES: Array<ProfileItem> = [
|
|||
// SDXL panorama
|
||||
{
|
||||
name: 'base SDXL panorama',
|
||||
model: DEFAULT_MODEL_SDXL,
|
||||
params: {
|
||||
batch: 1,
|
||||
cfg: 12,
|
||||
|
@ -266,6 +308,7 @@ export const DEFAULT_PROFILES: Array<ProfileItem> = [
|
|||
// SDXL turbo
|
||||
{
|
||||
name: 'base SDXL turbo',
|
||||
model: DEFAULT_MODEL_SDXL,
|
||||
params: {
|
||||
scheduler: 'dpm-sde',
|
||||
prompt: '',
|
||||
|
|
Loading…
Reference in New Issue