1
0
Fork 0

prep profiles for including model/pipeline params

This commit is contained in:
Sean Sube 2023-12-16 22:40:35 -06:00
parent f36fa6b5ec
commit 72d0d374e1
Signed by: ssube
GPG Key ID: 3EED7B957D362AF1
6 changed files with 74 additions and 13 deletions

View File

@ -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),

View File

@ -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} />

View File

@ -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} />

View File

@ -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} />

View File

@ -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} />

View File

@ -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: '',