diff --git a/lama_cleaner/app/src/adapters/inpainting.ts b/lama_cleaner/app/src/adapters/inpainting.ts
index 9c9e459..f7fd3ef 100644
--- a/lama_cleaner/app/src/adapters/inpainting.ts
+++ b/lama_cleaner/app/src/adapters/inpainting.ts
@@ -17,6 +17,7 @@ export default async function inpaint(
fd.append('ldmSteps', settings.ldmSteps.toString())
fd.append('ldmSampler', settings.ldmSampler.toString())
+ fd.append('zitsWireframe', settings.zitsWireframe.toString())
fd.append('hdStrategy', settings.hdStrategy)
fd.append('hdStrategyCropMargin', settings.hdStrategyCropMargin.toString())
fd.append(
diff --git a/lama_cleaner/app/src/components/Settings/ModelSettingBlock.tsx b/lama_cleaner/app/src/components/Settings/ModelSettingBlock.tsx
index 2d7a1f9..02fdfb2 100644
--- a/lama_cleaner/app/src/components/Settings/ModelSettingBlock.tsx
+++ b/lama_cleaner/app/src/components/Settings/ModelSettingBlock.tsx
@@ -2,6 +2,7 @@ import React, { ReactNode } from 'react'
import { useRecoilState } from 'recoil'
import { settingState } from '../../store/Atoms'
import Selector from '../shared/Selector'
+import { Switch, SwitchThumb } from '../shared/Switch'
import { LDMSampler } from './HDSettingBlock'
import NumberInputSetting from './NumberInputSetting'
import SettingBlock from './SettingBlock'
@@ -9,6 +10,7 @@ import SettingBlock from './SettingBlock'
export enum AIModel {
LAMA = 'lama',
LDM = 'ldm',
+ ZITS = 'ZITS',
}
function ModelSettingBlock() {
@@ -39,7 +41,7 @@ function ModelSettingBlock() {
target="_blank"
rel="noreferrer noopener"
>
- {name}
+ Paper: {name}
- {githubUrl}
+ Offical Repository: {githubUrl}
)
@@ -89,6 +91,34 @@ function ModelSettingBlock() {
)
}
+ const renderZITSModelDesc = () => {
+ return (
+
+ {renderModelDesc(
+ 'Incremental Transformer Structure Enhanced Image Inpainting with Masking Positional Encoding',
+ 'https://arxiv.org/abs/2203.00867',
+ 'https://github.com/DQiaole/ZITS_inpainting'
+ )}
+ {
+ setSettingState(old => {
+ return { ...old, zitsWireframe: checked }
+ })
+ }}
+ >
+
+
+ }
+ />
+
+ )
+ }
+
const renderOptionDesc = (): ReactNode => {
switch (setting.model) {
case AIModel.LAMA:
@@ -99,6 +129,8 @@ function ModelSettingBlock() {
)
case AIModel.LDM:
return renderLDMModelDesc()
+ case AIModel.ZITS:
+ return renderZITSModelDesc()
default:
return <>>
}
diff --git a/lama_cleaner/app/src/store/Atoms.tsx b/lama_cleaner/app/src/store/Atoms.tsx
index 89ab854..7e8f374 100644
--- a/lama_cleaner/app/src/store/Atoms.tsx
+++ b/lama_cleaner/app/src/store/Atoms.tsx
@@ -46,6 +46,9 @@ export interface Settings {
// For LDM
ldmSteps: number
ldmSampler: LDMSampler
+
+ // For ZITS
+ zitsWireframe: boolean
}
export const settingStateDefault = {
@@ -54,8 +57,12 @@ export const settingStateDefault = {
graduallyInpainting: true,
runInpaintingManually: false,
model: AIModel.LAMA,
+
ldmSteps: 50,
ldmSampler: LDMSampler.plms,
+
+ zitsWireframe: true,
+
hdStrategy: HDStrategy.RESIZE,
hdStrategyResizeLimit: 2048,
hdStrategyCropTrigerSize: 2048,
diff --git a/lama_cleaner/server.py b/lama_cleaner/server.py
index 79b8a0b..769692f 100644
--- a/lama_cleaner/server.py
+++ b/lama_cleaner/server.py
@@ -95,6 +95,7 @@ def process():
ldm_steps=form["ldmSteps"],
ldm_sampler=form["ldmSampler"],
hd_strategy=form["hdStrategy"],
+ zits_wireframe=form["zitsWireframe"],
hd_strategy_crop_margin=form["hdStrategyCropMargin"],
hd_strategy_crop_trigger_size=form["hdStrategyCropTrigerSize"],
hd_strategy_resize_limit=form["hdStrategyResizeLimit"],