Compare commits
538 Commits
main
...
developmen
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
971f5c5ab1 | ||
|
|
22133392b2 | ||
|
|
5e81f51f6a | ||
|
|
9fae65ed69 | ||
|
|
2443e5dc01 | ||
|
|
a9aa4e45aa | ||
|
|
9b6b27a156 | ||
|
|
b68074bb8f | ||
|
|
1f8e56672c | ||
|
|
f8708f5dbe | ||
|
|
103efea641 | ||
|
|
b60edab0fa | ||
|
|
6bc11bfd3f | ||
|
|
5897e511f1 | ||
|
|
f43b767b87 | ||
|
|
61cc41aa3f | ||
|
|
40c3ab0181 | ||
|
|
8999a5564b | ||
|
|
8423be539b | ||
|
|
6cc56043e2 | ||
|
|
62cda009dd | ||
|
|
45e51bac9a | ||
|
|
a514f9b236 | ||
|
|
90b21db86c | ||
|
|
bc44ab786c | ||
|
|
281a2e3ecb | ||
|
|
84cd96decf | ||
|
|
a3121b8137 | ||
|
|
3f6d0fb7da | ||
|
|
08ef4d62e9 | ||
|
|
81cb7fd1b7 | ||
|
|
7c658c6d76 | ||
|
|
495104e941 | ||
|
|
1e1f871ee1 | ||
|
|
30c5a0b067 | ||
|
|
9f02595ef2 | ||
|
|
b101334b4e | ||
|
|
0608d259dd | ||
|
|
12eff0dd42 | ||
|
|
939164eaa7 | ||
|
|
f2d2a49977 | ||
|
|
37535f5897 | ||
|
|
e5646dee27 | ||
|
|
d5011efaa1 | ||
|
|
74487a95a9 | ||
|
|
a50f4da9d1 | ||
|
|
4ae1df5b5e | ||
|
|
7f3ba16cd2 | ||
|
|
7a0438586c | ||
|
|
9adaf8f8ad | ||
|
|
a341297b0c | ||
|
|
9e0504abe5 | ||
|
|
3131edb255 | ||
|
|
b0697bc4ff | ||
|
|
1e9121c8d6 | ||
|
|
916e795c26 | ||
|
|
3aebe754fa | ||
|
|
3f0cfaac4a | ||
|
|
a3a0a87f55 | ||
|
|
f5e8ffe7b4 | ||
|
|
404d81f6fd | ||
|
|
c7864f8a6d | ||
|
|
9568ac66e0 | ||
|
|
d4280bbaaa | ||
|
|
46a5fd67ed | ||
|
|
b93336dbf9 | ||
|
|
9fe9301762 | ||
|
|
7f1b95fbda | ||
|
|
52c79fa097 | ||
|
|
62ac725ba9 | ||
|
|
db188cd3c3 | ||
|
|
e67ef4aec2 | ||
|
|
473869b8ed | ||
|
|
c8c1b3e217 | ||
|
|
fcd3ef1f98 | ||
|
|
a7f11a8c09 | ||
|
|
318426b67a | ||
|
|
6f3e99efc3 | ||
|
|
7515bcfe78 | ||
|
|
8d0ef022eb | ||
|
|
9f1c1cf2e6 | ||
|
|
d44112c209 | ||
|
|
b31f90c0bd | ||
|
|
344cdf0ade | ||
|
|
500bde5b0e | ||
|
|
df03927ec6 | ||
|
|
419f670f86 | ||
|
|
30dc9220c1 | ||
|
|
941d427302 | ||
|
|
876ae7f70f | ||
|
|
a86049f822 | ||
|
|
ec3d25d778 | ||
|
|
69a4a6fec5 | ||
|
|
7b76b79887 | ||
|
|
3ea732365c | ||
|
|
dc5d696ed2 | ||
|
|
0060551490 | ||
|
|
2fcc7d9b36 | ||
|
|
78217f5ef9 | ||
|
|
c6112e3295 | ||
|
|
8b08af714d | ||
|
|
723dcf4236 | ||
|
|
ddfd82559f | ||
|
|
8488575e5c | ||
|
|
7e4e51b224 | ||
|
|
f3b7316683 | ||
|
|
25b19b9ab8 | ||
|
|
9a6a970771 | ||
|
|
93de78b6e8 | ||
|
|
00da042dab | ||
|
|
6445e802f6 | ||
|
|
7caf20aad3 | ||
|
|
11969c2e2e | ||
|
|
e821b97cfc | ||
|
|
ef1dbdb33d | ||
|
|
0cdb7bb0cd | ||
|
|
306ed44e19 | ||
|
|
b0810e1ed7 | ||
|
|
089c85a017 | ||
|
|
a1d80fd106 | ||
|
|
d9c7a28c90 | ||
|
|
c787a3a801 | ||
|
|
1f772e4bdc | ||
|
|
cb7458db77 | ||
|
|
ef482b4d3e | ||
|
|
3e22160462 | ||
|
|
6a3d725dbb | ||
|
|
8a16c8a196 | ||
|
|
90eaac5134 | ||
|
|
896c2532c7 | ||
|
|
f68702520b | ||
|
|
286e46aaa3 | ||
|
|
088fd97418 | ||
|
|
e1e978b423 | ||
|
|
d27d92325d | ||
|
|
80f6f9a931 | ||
|
|
7dff8ccd31 | ||
|
|
3f6b275bec | ||
|
|
5ed6a31b97 | ||
|
|
b72b61b790 | ||
|
|
b81231823e | ||
|
|
c7c6940e1a | ||
|
|
6c33d1356d | ||
|
|
f08c78a043 | ||
|
|
b6dd5b664c | ||
|
|
76e7e82f5e | ||
|
|
d4376ed240 | ||
|
|
9d34213b4c | ||
|
|
b908f2b4bc | ||
|
|
9418324030 | ||
|
|
0f6856b719 | ||
|
|
83d8e69219 | ||
|
|
7f999e9dfc | ||
|
|
0c3ae232af | ||
|
|
9950790f4c | ||
|
|
b50a1eb63f | ||
|
|
d55b1e169c | ||
|
|
1071a12777 | ||
|
|
d987d0a336 | ||
|
|
50a67a7172 | ||
|
|
a3308c853d | ||
|
|
cde395e02f | ||
|
|
e7f670a5b6 | ||
|
|
917c576ddb | ||
|
|
dfc0c587b1 | ||
|
|
548bcaceb2 | ||
|
|
5fd43fca13 | ||
|
|
37a356d377 | ||
|
|
cccbfb12aa | ||
|
|
d018b2d7a7 | ||
|
|
e358adecdd | ||
|
|
cdc5f66592 | ||
|
|
b8cebf29f2 | ||
|
|
68aebad7ad | ||
|
|
ae4a44de3e | ||
|
|
2ab868314f | ||
|
|
bc46c46835 | ||
|
|
d82a21cfb2 | ||
|
|
87439feeb2 | ||
|
|
e5951ad098 | ||
|
|
4f51680307 | ||
|
|
d0ceabd372 | ||
|
|
2bda3d6d2f | ||
|
|
a96af7a15d | ||
|
|
93192b90f4 | ||
|
|
024acf42af | ||
|
|
04cb2d39cb | ||
|
|
c69573e65d | ||
|
|
84f702b6d0 | ||
|
|
bb70c32ad5 | ||
|
|
425a1713ab | ||
|
|
70e67c45dd | ||
|
|
07ca0876ec | ||
|
|
aa96a457b6 | ||
|
|
e28599cadb | ||
|
|
ae6dd219d9 | ||
|
|
19322fc1ec | ||
|
|
635e7da05d | ||
|
|
c0005eb063 | ||
|
|
74485411a8 | ||
|
|
ed70fc683c | ||
|
|
425d3bc95d | ||
|
|
3994c28b77 | ||
|
|
0100a63b59 | ||
|
|
432dc704a6 | ||
|
|
1d540219fa | ||
|
|
827f516baf | ||
|
|
48ad0c289c | ||
|
|
223e0529ba | ||
|
|
98e3bbb3bd | ||
|
|
e3efcc620c | ||
|
|
15dd1339d2 | ||
|
|
caf8f0ae35 | ||
|
|
cfb87bc116 | ||
|
|
c0ad1b3469 | ||
|
|
4382cd0b91 | ||
|
|
b049bbc64e | ||
|
|
34395ff490 | ||
|
|
1bc1085542 | ||
|
|
d7884432c9 | ||
|
|
82f6402d04 | ||
|
|
0e7b735611 | ||
|
|
5304ef504c | ||
|
|
17b295871f | ||
|
|
70dcfa1684 | ||
|
|
5d484273ed | ||
|
|
179656d541 | ||
|
|
73099af6ec | ||
|
|
c223d93b4d | ||
|
|
4e34194479 | ||
|
|
00e2674076 | ||
|
|
0a2e67df1a | ||
|
|
7831468304 | ||
|
|
88d02585e7 | ||
|
|
f82e82f1bb | ||
|
|
317762861f | ||
|
|
3f1360368d | ||
|
|
d5467e7db5 | ||
|
|
9284983429 | ||
|
|
bb79c78fe8 | ||
|
|
e3735ebb45 | ||
|
|
eb17dfdeaa | ||
|
|
1114ac97e2 | ||
|
|
c7ef41af54 | ||
|
|
7075a17091 | ||
|
|
7f0fb47cf3 | ||
|
|
775f032c56 | ||
|
|
5410d42da0 | ||
|
|
e21e901fa2 | ||
|
|
00385240e7 | ||
|
|
0a96d2a888 | ||
|
|
016551e036 | ||
|
|
b8bb46042c | ||
|
|
b44e9c7752 | ||
|
|
8ed10c732b | ||
|
|
82a53782d0 | ||
|
|
6adebf065f | ||
|
|
83f369053f | ||
|
|
77d3839860 | ||
|
|
c02a0da837 | ||
|
|
4f4c6bbe33 | ||
|
|
72ea5453ce | ||
|
|
458081f9c9 | ||
|
|
d1fbe81a60 | ||
|
|
6c7191712f | ||
|
|
248068fe5d | ||
|
|
9b281856ee | ||
|
|
fdf41cc739 | ||
|
|
d079445943 | ||
|
|
a997ab2cf6 | ||
|
|
e98068a546 | ||
|
|
b945ae4e01 | ||
|
|
b23c471cf0 | ||
|
|
964e584bd3 | ||
|
|
461358bdde | ||
|
|
2433cc344a | ||
|
|
bd2eea1c70 | ||
|
|
16df759499 | ||
|
|
5a1a36ec29 | ||
|
|
c76badfb08 | ||
|
|
71c4f401b0 | ||
|
|
c59b9897d9 | ||
|
|
4cf1c856ed | ||
|
|
a78a1020be | ||
|
|
90cb7a6442 | ||
|
|
8f5cded86e | ||
|
|
02d02a86b1 | ||
|
|
ba9c695463 | ||
|
|
8202f34f38 | ||
|
|
40a7f47d22 | ||
|
|
37bcf9cc47 | ||
|
|
0340d9ad53 | ||
|
|
0d35a67e9c | ||
|
|
1260e28d94 | ||
|
|
229f782e3b | ||
|
|
c15b839dd4 | ||
|
|
a095214e52 | ||
|
|
8e81425e89 | ||
|
|
c5cbe8f87d | ||
|
|
e0581a2c37 | ||
|
|
32f538bf3a | ||
|
|
3c5a14a814 | ||
|
|
0661256b61 | ||
|
|
602e35db65 | ||
|
|
bc7ece771d | ||
|
|
38bdb440d0 | ||
|
|
ce8c2bea2f | ||
|
|
3ac0f11e97 | ||
|
|
98fe49cb55 | ||
|
|
2b7e3abe57 | ||
|
|
150c4a5d2d | ||
|
|
0381a853b5 | ||
|
|
c79ec204ec | ||
|
|
8d3b1582a5 | ||
|
|
5fd7d71a7a | ||
|
|
1f0220697b | ||
|
|
18ae3949ef | ||
|
|
aa95510444 | ||
|
|
f33df25830 | ||
|
|
3a5a8ceba5 | ||
|
|
a1e5f17d1e | ||
|
|
303431be89 | ||
|
|
8e9f80cc97 | ||
|
|
3ad598761c | ||
|
|
b4eaf8b751 | ||
|
|
fa608efa11 | ||
|
|
e9d319bfde | ||
|
|
561721aef7 | ||
|
|
891c0f21d5 | ||
|
|
8973ce7d47 | ||
|
|
51c283ba56 | ||
|
|
7d262fc158 | ||
|
|
fdb16000ab | ||
|
|
f62cc7db9d | ||
|
|
9fa3e28dd4 | ||
|
|
9200b26f21 | ||
|
|
d998b2f806 | ||
|
|
ac8a7ff70b | ||
|
|
2d6e0baa87 | ||
|
|
c212b74990 | ||
|
|
0352979a8b | ||
|
|
70bd61d616 | ||
|
|
f2a6985c78 | ||
|
|
fe5a581313 | ||
|
|
2ec9792f50 | ||
|
|
a4204abfce | ||
|
|
274b276133 | ||
|
|
7707bc7818 | ||
|
|
4c035ad4ae | ||
|
|
e9090bca8f | ||
|
|
398a9bc0c6 | ||
|
|
38b9658c15 | ||
|
|
f04d1bab21 | ||
|
|
c23efb8e2b | ||
|
|
5604d3c447 | ||
|
|
206101f59d | ||
|
|
23348dcd3f | ||
|
|
9bf6013fdd | ||
|
|
1d11e06e6f | ||
|
|
47e6f94111 | ||
|
|
810fad9e06 | ||
|
|
853c6af623 | ||
|
|
1b6bbfb4db | ||
|
|
67e25624b9 | ||
|
|
9c218788e2 | ||
|
|
bb084a844b | ||
|
|
0a88243911 | ||
|
|
8a0a90d0f3 | ||
|
|
9141132a5c | ||
|
|
78f7bef1a3 | ||
|
|
1fb7b50be7 | ||
|
|
b57c81ab38 | ||
|
|
af040e97af | ||
|
|
8dc7f119e5 | ||
|
|
4b4111a802 | ||
|
|
832f183320 | ||
|
|
8aa94d5774 | ||
|
|
48aa6416dc | ||
|
|
47ddda1f64 | ||
|
|
c248ae44d4 | ||
|
|
9e4545b2fc | ||
|
|
8cf3883adc | ||
|
|
e06a6ed4c8 | ||
|
|
12a33f6e2d | ||
|
|
6d9638ba31 | ||
|
|
c54eb00055 | ||
|
|
72338506ed | ||
|
|
78c1d07c4b | ||
|
|
143b18af8a | ||
|
|
9d39d6ecb3 | ||
|
|
9686bf0ea8 | ||
|
|
7aa7be6b24 | ||
|
|
443c9110f1 | ||
|
|
ae0ce82609 | ||
|
|
f1982cb6d8 | ||
|
|
af62958323 | ||
|
|
9342ad8d97 | ||
|
|
5214742d02 | ||
|
|
178f0c78d8 | ||
|
|
2487040ae3 | ||
|
|
5606af5083 | ||
|
|
4b5a96501d | ||
|
|
ededeaed86 | ||
|
|
636620b1d5 | ||
|
|
21961f0c32 | ||
|
|
1fe41146f0 | ||
|
|
2ad6ef355a | ||
|
|
865502ee4f | ||
|
|
c7984f3299 | ||
|
|
7f150ed833 | ||
|
|
badf4e256c | ||
|
|
e64c60bbb3 | ||
|
|
1780618543 | ||
|
|
f91fd27624 | ||
|
|
09e41e8f76 | ||
|
|
6eeb2107b3 | ||
|
|
17053ad8b7 | ||
|
|
fefb4dc1f8 | ||
|
|
d05b1b3544 | ||
|
|
82d4904c07 | ||
|
|
1cdcf33cfa | ||
|
|
6616fa835a | ||
|
|
7b9a4564b1 | ||
|
|
fcdefa0620 | ||
|
|
ef8b3ce639 | ||
|
|
36870a8f53 | ||
|
|
b70420951d | ||
|
|
1f0c5b4cf1 | ||
|
|
8648da8111 | ||
|
|
45b4593563 | ||
|
|
41b04316cf | ||
|
|
e97c6db2a3 | ||
|
|
896820a349 | ||
|
|
06c8f468bf | ||
|
|
61920e2701 | ||
|
|
f34ba7ca70 | ||
|
|
c30ef0895d | ||
|
|
aa3a774f73 | ||
|
|
2c30555b84 | ||
|
|
743f605773 | ||
|
|
519c661abb | ||
|
|
22c956c75f | ||
|
|
13696adc3a | ||
|
|
0196571a12 | ||
|
|
9666f466ab | ||
|
|
240e5486c8 | ||
|
|
8164b6b9cf | ||
|
|
4fc82d554f | ||
|
|
96b34c0f85 | ||
|
|
dd5a88dcee | ||
|
|
95ed56bf82 | ||
|
|
1ae80f5ab9 | ||
|
|
1f0bd3ca6c | ||
|
|
a1971f6830 | ||
|
|
c6118e8898 | ||
|
|
7ba958cf7f | ||
|
|
383905d5d2 | ||
|
|
6173e3e9ca | ||
|
|
3feb7d8922 | ||
|
|
1d9edbd0dd | ||
|
|
d439abdb89 | ||
|
|
ee47ea0c89 | ||
|
|
300bb2e627 | ||
|
|
ccf8593501 | ||
|
|
0fda612f3f | ||
|
|
5afff65b71 | ||
|
|
7e55bdefce | ||
|
|
620cf84d3d | ||
|
|
cfe567c62a | ||
|
|
cefe12f1df | ||
|
|
1e51c39928 | ||
|
|
42a02bbb80 | ||
|
|
f1ae6dae4c | ||
|
|
6195579910 | ||
|
|
16c8b23b34 | ||
|
|
07ae626b22 | ||
|
|
8d171bb044 | ||
|
|
6e33ca7e9e | ||
|
|
db46e12f2b | ||
|
|
868e4b2db8 | ||
|
|
2e562742c1 | ||
|
|
68e6958009 | ||
|
|
ea6e3a7949 | ||
|
|
b2879ca99f | ||
|
|
4e911566c3 | ||
|
|
9bafda6a15 | ||
|
|
871a8a5375 | ||
|
|
0eef74bc00 | ||
|
|
423ae32097 | ||
|
|
8282e5d045 | ||
|
|
19305cdbdf | ||
|
|
eb9028ab30 | ||
|
|
21483f5d07 | ||
|
|
82dcbac28f | ||
|
|
d43bd4625d | ||
|
|
ea891324a2 | ||
|
|
8fd9ea2193 | ||
|
|
fb02666856 | ||
|
|
f6f5c2731b | ||
|
|
b4e3f771e0 | ||
|
|
99bb9491ac | ||
|
|
0453f21127 | ||
|
|
9fc09aa4bd | ||
|
|
5e87062cf8 | ||
|
|
3e7a459990 | ||
|
|
bbf4c03e50 | ||
|
|
611a3a9753 | ||
|
|
1611f0d181 | ||
|
|
08835115e4 | ||
|
|
2d84e28d32 | ||
|
|
ef17aae8ab | ||
|
|
0cc39f01a3 | ||
|
|
688d7258f1 | ||
|
|
4513320bf1 | ||
|
|
533fd04ef0 | ||
|
|
dff5681cf0 | ||
|
|
5a2790a69b | ||
|
|
7c5305ccba | ||
|
|
4013e8ad6f | ||
|
|
d1dfd257f9 | ||
|
|
5322d735ee | ||
|
|
cdb107dcda | ||
|
|
be1393a41c | ||
|
|
e554c2607f | ||
|
|
6215592b12 | ||
|
|
349cc25433 | ||
|
|
214d276379 | ||
|
|
ef24d76adc | ||
|
|
ab2b5a691d | ||
|
|
c7de2b2801 | ||
|
|
e8075658ac | ||
|
|
4202dabee1 | ||
|
|
d67db2bcf1 | ||
|
|
7159ec885f | ||
|
|
b5cf734ba9 | ||
|
|
f7dc8eafee | ||
|
|
762ca60a30 | ||
|
|
e7fb9f342c |
@@ -20,13 +20,13 @@ def calc_images_mean_L1(image1_path, image2_path):
|
|||||||
|
|
||||||
def parse_args():
|
def parse_args():
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("image1_path")
|
parser.add_argument('image1_path')
|
||||||
parser.add_argument("image2_path")
|
parser.add_argument('image2_path')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == '__main__':
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
mean_L1 = calc_images_mean_L1(args.image1_path, args.image2_path)
|
mean_L1 = calc_images_mean_L1(args.image1_path, args.image2_path)
|
||||||
print(mean_L1)
|
print(mean_L1)
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
*
|
*
|
||||||
!invokeai
|
!backend
|
||||||
!pyproject.toml
|
!configs
|
||||||
!uv.lock
|
!environments-and-requirements
|
||||||
!docker/docker-entrypoint.sh
|
!frontend
|
||||||
!LICENSE
|
!installer
|
||||||
|
!ldm
|
||||||
**/dist
|
!main.py
|
||||||
**/node_modules
|
!scripts
|
||||||
**/__pycache__
|
!server
|
||||||
**/*.egg-info
|
!static
|
||||||
|
!setup.py
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
b3dccfaeb636599c02effc377cdd8a87d658256c
|
|
||||||
218b6d0546b990fc449c876fb99f44b50c4daa35
|
|
||||||
182580ff6970caed400be178c5b888514b75d7f2
|
|
||||||
8e9d5c1187b0d36da80571ce4c8ba9b3a37b6c46
|
|
||||||
99aac5870e1092b182e6c5f21abcaab6936a4ad1
|
|
||||||
4
.gitattributes
vendored
@@ -1,6 +1,4 @@
|
|||||||
# Auto normalizes line endings on commit so devs don't need to change local settings.
|
# Auto normalizes line endings on commit so devs don't need to change local settings.
|
||||||
# Only affects text files and ignores other file types.
|
# Only affects text files and ignores other file types.
|
||||||
# For more info see: https://www.aleksandrhovhannisyan.com/blog/crlf-vs-lf-normalizing-line-endings-in-git/
|
# For more info see: https://www.aleksandrhovhannisyan.com/blog/crlf-vs-lf-normalizing-line-endings-in-git/
|
||||||
* text=auto
|
* text=auto
|
||||||
docker/** text eol=lf
|
|
||||||
tests/test_model_probe/stripped_models/** filter=lfs diff=lfs merge=lfs -text
|
|
||||||
|
|||||||
38
.github/CODEOWNERS
vendored
@@ -1,31 +1,7 @@
|
|||||||
# continuous integration
|
ldm/invoke/pngwriter.py @CapableWeb
|
||||||
/.github/workflows/ @lstein @blessedcoolant @hipsterusername @ebr @jazzhaiku @psychedelicious
|
ldm/invoke/server_legacy.py @CapableWeb
|
||||||
|
scripts/legacy_api.py @CapableWeb
|
||||||
# documentation
|
tests/legacy_tests.sh @CapableWeb
|
||||||
/docs/ @lstein @blessedcoolant @hipsterusername @psychedelicious
|
installer/ @tildebyte
|
||||||
/mkdocs.yml @lstein @blessedcoolant @hipsterusername @psychedelicious
|
.github/workflows/ @mauwii
|
||||||
|
docker_build/ @mauwii
|
||||||
# nodes
|
|
||||||
/invokeai/app/ @blessedcoolant @psychedelicious @hipsterusername @jazzhaiku
|
|
||||||
|
|
||||||
# installation and configuration
|
|
||||||
/pyproject.toml @lstein @blessedcoolant @psychedelicious @hipsterusername
|
|
||||||
/docker/ @lstein @blessedcoolant @psychedelicious @hipsterusername @ebr
|
|
||||||
/scripts/ @ebr @lstein @psychedelicious @hipsterusername
|
|
||||||
/installer/ @lstein @ebr @psychedelicious @hipsterusername
|
|
||||||
/invokeai/assets @lstein @ebr @psychedelicious @hipsterusername
|
|
||||||
/invokeai/configs @lstein @psychedelicious @hipsterusername
|
|
||||||
/invokeai/version @lstein @blessedcoolant @psychedelicious @hipsterusername
|
|
||||||
|
|
||||||
# web ui
|
|
||||||
/invokeai/frontend @blessedcoolant @psychedelicious @lstein @maryhipp @hipsterusername
|
|
||||||
|
|
||||||
# generation, model management, postprocessing
|
|
||||||
/invokeai/backend @lstein @blessedcoolant @hipsterusername @jazzhaiku @psychedelicious @maryhipp
|
|
||||||
|
|
||||||
# front ends
|
|
||||||
/invokeai/frontend/CLI @lstein @psychedelicious @hipsterusername
|
|
||||||
/invokeai/frontend/install @lstein @ebr @psychedelicious @hipsterusername
|
|
||||||
/invokeai/frontend/merge @lstein @blessedcoolant @psychedelicious @hipsterusername
|
|
||||||
/invokeai/frontend/training @lstein @blessedcoolant @psychedelicious @hipsterusername
|
|
||||||
/invokeai/frontend/web @psychedelicious @blessedcoolant @maryhipp @hipsterusername
|
|
||||||
|
|||||||
114
.github/ISSUE_TEMPLATE/BUG_REPORT.yml
vendored
@@ -6,6 +6,10 @@ title: '[bug]: '
|
|||||||
|
|
||||||
labels: ['bug']
|
labels: ['bug']
|
||||||
|
|
||||||
|
# assignees:
|
||||||
|
# - moderator_bot
|
||||||
|
# - lstein
|
||||||
|
|
||||||
body:
|
body:
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
@@ -14,27 +18,14 @@ body:
|
|||||||
|
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
attributes:
|
attributes:
|
||||||
label: Is there an existing issue for this problem?
|
label: Is there an existing issue for this?
|
||||||
description: |
|
description: |
|
||||||
Please [search](https://github.com/invoke-ai/InvokeAI/issues) first to see if an issue already exists for the problem.
|
Please use the [search function](https://github.com/invoke-ai/InvokeAI/issues?q=is%3Aissue+is%3Aopen+label%3Abug)
|
||||||
|
irst to see if an issue already exists for the bug you encountered.
|
||||||
options:
|
options:
|
||||||
- label: I have searched the existing issues
|
- label: I have searched the existing issues
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
id: install_method
|
|
||||||
attributes:
|
|
||||||
label: Install method
|
|
||||||
description: How did you install Invoke?
|
|
||||||
multiple: false
|
|
||||||
options:
|
|
||||||
- "Invoke's Launcher"
|
|
||||||
- 'Stability Matrix'
|
|
||||||
- 'Pinokio'
|
|
||||||
- 'Manual'
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: __Describe your environment__
|
value: __Describe your environment__
|
||||||
@@ -42,119 +33,70 @@ body:
|
|||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: os_dropdown
|
id: os_dropdown
|
||||||
attributes:
|
attributes:
|
||||||
label: Operating system
|
label: OS
|
||||||
description: Your computer's operating system.
|
description: Which operating System did you use when the bug occured
|
||||||
multiple: false
|
multiple: false
|
||||||
options:
|
options:
|
||||||
- 'Linux'
|
- 'Linux'
|
||||||
- 'Windows'
|
- 'Windows'
|
||||||
- 'macOS'
|
- 'macOS'
|
||||||
- 'other'
|
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: gpu_dropdown
|
id: gpu_dropdown
|
||||||
attributes:
|
attributes:
|
||||||
label: GPU vendor
|
label: GPU
|
||||||
description: Your GPU's vendor.
|
description: Which kind of Graphic-Adapter is your System using
|
||||||
multiple: false
|
multiple: false
|
||||||
options:
|
options:
|
||||||
- 'Nvidia (CUDA)'
|
- 'cuda'
|
||||||
- 'AMD (ROCm)'
|
- 'amd'
|
||||||
- 'Apple Silicon (MPS)'
|
- 'mps'
|
||||||
- 'None (CPU)'
|
- 'cpu'
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: gpu_model
|
|
||||||
attributes:
|
|
||||||
label: GPU model
|
|
||||||
description: Your GPU's model. If on Apple Silicon, this is your Mac's chip. Leave blank if on CPU.
|
|
||||||
placeholder: ex. RTX 2080 Ti, Mac M1 Pro
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: vram
|
id: vram
|
||||||
attributes:
|
attributes:
|
||||||
label: GPU VRAM
|
label: VRAM
|
||||||
description: Your GPU's VRAM. If on Apple Silicon, this is your Mac's unified memory. Leave blank if on CPU.
|
description: Size of the VRAM if known
|
||||||
placeholder: 8GB
|
placeholder: 8GB
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: version-number
|
|
||||||
attributes:
|
|
||||||
label: Version number
|
|
||||||
description: |
|
|
||||||
The version of Invoke you have installed. If it is not the [latest version](https://github.com/invoke-ai/InvokeAI/releases/latest), please update and try again to confirm the issue still exists. If you are testing main, please include the commit hash instead.
|
|
||||||
placeholder: ex. v6.0.2
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: browser-version
|
|
||||||
attributes:
|
|
||||||
label: Browser
|
|
||||||
description: Your web browser and version, if you do not use the Launcher's provided GUI.
|
|
||||||
placeholder: ex. Firefox 123.0b3
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: python-deps
|
|
||||||
attributes:
|
|
||||||
label: System Information
|
|
||||||
description: |
|
|
||||||
Click the gear icon at the bottom left corner, then click "About". Click the copy button and then paste here.
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: what-happened
|
id: what-happened
|
||||||
attributes:
|
attributes:
|
||||||
label: What happened
|
label: What happened?
|
||||||
description: |
|
description: |
|
||||||
Describe what happened. Include any relevant error messages, stack traces and screenshots here.
|
Briefly describe what happened, what you expected to happen and how to reproduce this bug.
|
||||||
placeholder: I clicked button X and then Y happened.
|
placeholder: When using the webinterface and right-clicking on button X instead of the popup-menu there error Y appears
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: what-you-expected
|
|
||||||
attributes:
|
attributes:
|
||||||
label: What you expected to happen
|
label: Screenshots
|
||||||
description: Describe what you expected to happen.
|
description: If applicable, add screenshots to help explain your problem
|
||||||
placeholder: I expected Z to happen.
|
placeholder: this is what the result looked like <screenshot>
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: how-to-repro
|
|
||||||
attributes:
|
|
||||||
label: How to reproduce the problem
|
|
||||||
description: List steps to reproduce the problem.
|
|
||||||
placeholder: Start the app, generate an image with these settings, then click button X.
|
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: additional-context
|
|
||||||
attributes:
|
attributes:
|
||||||
label: Additional context
|
label: Additional context
|
||||||
description: Any other context that might help us to understand the problem.
|
description: Add any other context about the problem here
|
||||||
placeholder: Only happens when there is full moon and Friday the 13th on Christmas Eve 🎅🏻
|
placeholder: Only happens when there is full moon and Friday the 13th on Christmas Eve 🎅🏻
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: discord-username
|
id: contact
|
||||||
attributes:
|
attributes:
|
||||||
label: Discord username
|
label: Contact Details
|
||||||
description: If you are on the Invoke discord and would prefer to be contacted there, please provide your username.
|
description: __OPTIONAL__ How can we get in touch with you if we need more info (besides this issue)?
|
||||||
placeholder: supercoolusername123
|
placeholder: ex. email@example.com, discordname, twitter, ...
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
17
.github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml
vendored
@@ -1,5 +1,5 @@
|
|||||||
name: Feature Request
|
name: Feature Request
|
||||||
description: Contribute a idea or request a new feature
|
description: Commit a idea or Request a new feature
|
||||||
title: '[enhancement]: '
|
title: '[enhancement]: '
|
||||||
labels: ['enhancement']
|
labels: ['enhancement']
|
||||||
# assignees:
|
# assignees:
|
||||||
@@ -9,14 +9,14 @@ body:
|
|||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
Thanks for taking the time to fill out this feature request!
|
Thanks for taking the time to fill out this Feature request!
|
||||||
|
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
attributes:
|
attributes:
|
||||||
label: Is there an existing issue for this?
|
label: Is there an existing issue for this?
|
||||||
description: |
|
description: |
|
||||||
Please make use of the [search function](https://github.com/invoke-ai/InvokeAI/labels/enhancement)
|
Please make use of the [search function](https://github.com/invoke-ai/InvokeAI/labels/enhancement)
|
||||||
to see if a similar issue already exists for the feature you want to request
|
to see if a simmilar issue already exists for the feature you want to request
|
||||||
options:
|
options:
|
||||||
- label: I have searched the existing issues
|
- label: I have searched the existing issues
|
||||||
required: true
|
required: true
|
||||||
@@ -34,9 +34,12 @@ body:
|
|||||||
id: whatisexpected
|
id: whatisexpected
|
||||||
attributes:
|
attributes:
|
||||||
label: What should this feature add?
|
label: What should this feature add?
|
||||||
description: Explain the functionality this feature should add. Feature requests should be for single features. Please create multiple requests if you want to request multiple features.
|
description: Please try to explain the functionality this feature should add
|
||||||
placeholder: |
|
placeholder: |
|
||||||
I'd like a button that creates an image of banana sushi every time I press it. Each image should be different. There should be a toggle next to the button that enables strawberry mode, in which the images are of strawberry sushi instead.
|
Instead of one huge textfield, it would be nice to have forms for bug-reports, feature-requests, ...
|
||||||
|
Great benefits with automatic labeling, assigning and other functionalitys not available in that form
|
||||||
|
via old-fashioned markdown-templates. I would also love to see the use of a moderator bot 🤖 like
|
||||||
|
https://github.com/marketplace/actions/issue-moderator-with-commands to auto close old issues and other things
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
@@ -48,6 +51,6 @@ body:
|
|||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: Additional Content
|
label: Aditional Content
|
||||||
description: Add any other context or screenshots about the feature request here.
|
description: Add any other context or screenshots about the feature request here.
|
||||||
placeholder: This is a mockup of the design how I imagine it <screenshot>
|
placeholder: This is a Mockup of the design how I imagine it <screenshot>
|
||||||
|
|||||||
33
.github/actions/install-frontend-deps/action.yml
vendored
@@ -1,33 +0,0 @@
|
|||||||
name: install frontend dependencies
|
|
||||||
description: Installs frontend dependencies with pnpm, with caching
|
|
||||||
runs:
|
|
||||||
using: 'composite'
|
|
||||||
steps:
|
|
||||||
- name: setup node 20
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: '20'
|
|
||||||
|
|
||||||
- name: setup pnpm
|
|
||||||
uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: 10
|
|
||||||
run_install: false
|
|
||||||
|
|
||||||
- name: get pnpm store directory
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: setup cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: ${{ env.STORE_PATH }}
|
|
||||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-pnpm-store-
|
|
||||||
|
|
||||||
- name: install frontend dependencies
|
|
||||||
run: pnpm install --prefer-frozen-lockfile
|
|
||||||
shell: bash
|
|
||||||
working-directory: invokeai/frontend/web
|
|
||||||
59
.github/pr_labels.yml
vendored
@@ -1,59 +0,0 @@
|
|||||||
root:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: '*'
|
|
||||||
|
|
||||||
python-deps:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: 'pyproject.toml'
|
|
||||||
|
|
||||||
python:
|
|
||||||
- changed-files:
|
|
||||||
- all-globs-to-any-file:
|
|
||||||
- 'invokeai/**'
|
|
||||||
- '!invokeai/frontend/web/**'
|
|
||||||
|
|
||||||
python-tests:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: 'tests/**'
|
|
||||||
|
|
||||||
ci-cd:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: .github/**
|
|
||||||
|
|
||||||
docker:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: docker/**
|
|
||||||
|
|
||||||
installer:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: installer/**
|
|
||||||
|
|
||||||
docs:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: docs/**
|
|
||||||
|
|
||||||
invocations:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: 'invokeai/app/invocations/**'
|
|
||||||
|
|
||||||
backend:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: 'invokeai/backend/**'
|
|
||||||
|
|
||||||
api:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: 'invokeai/app/api/**'
|
|
||||||
|
|
||||||
services:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: 'invokeai/app/services/**'
|
|
||||||
|
|
||||||
frontend-deps:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file:
|
|
||||||
- '**/*/package.json'
|
|
||||||
- '**/*/pnpm-lock.yaml'
|
|
||||||
|
|
||||||
frontend:
|
|
||||||
- changed-files:
|
|
||||||
- any-glob-to-any-file: 'invokeai/frontend/web/**'
|
|
||||||
23
.github/pull_request_template.md
vendored
@@ -1,23 +0,0 @@
|
|||||||
## Summary
|
|
||||||
|
|
||||||
<!--A description of the changes in this PR. Include the kind of change (fix, feature, docs, etc), the "why" and the "how". Screenshots or videos are useful for frontend changes.-->
|
|
||||||
|
|
||||||
## Related Issues / Discussions
|
|
||||||
|
|
||||||
<!--WHEN APPLICABLE: List any related issues or discussions on github or discord. If this PR closes an issue, please use the "Closes #1234" format, so that the issue will be automatically closed when the PR merges.-->
|
|
||||||
|
|
||||||
## QA Instructions
|
|
||||||
|
|
||||||
<!--WHEN APPLICABLE: Describe how you have tested the changes in this PR. Provide enough detail that a reviewer can reproduce your tests.-->
|
|
||||||
|
|
||||||
## Merge Plan
|
|
||||||
|
|
||||||
<!--WHEN APPLICABLE: Large PRs, or PRs that touch sensitive things like DB schemas, may need some care when merging. For example, a careful rebase by the change author, timing to not interfere with a pending release, or a message to contributors on discord after merging.-->
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [ ] _The PR has a short but descriptive title, suitable for a changelog_
|
|
||||||
- [ ] _Tests added / updated (if applicable)_
|
|
||||||
- [ ] _❗Changes to a redux slice have a corresponding migration_
|
|
||||||
- [ ] _Documentation added / updated (if applicable)_
|
|
||||||
- [ ] _Updated `What's New` copy (if doing a release after this PR)_
|
|
||||||
19
.github/stale.yaml
vendored
@@ -1,19 +0,0 @@
|
|||||||
# Number of days of inactivity before an issue becomes stale
|
|
||||||
daysUntilStale: 28
|
|
||||||
# Number of days of inactivity before a stale issue is closed
|
|
||||||
daysUntilClose: 14
|
|
||||||
# Issues with these labels will never be considered stale
|
|
||||||
exemptLabels:
|
|
||||||
- pinned
|
|
||||||
- security
|
|
||||||
# Label to use when marking an issue as stale
|
|
||||||
staleLabel: stale
|
|
||||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
|
||||||
markComment: >
|
|
||||||
This issue has been automatically marked as stale because it has not had
|
|
||||||
recent activity. It will be closed if no further activity occurs. Please
|
|
||||||
update the ticket if this is still a problem on the latest release.
|
|
||||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
|
||||||
closeComment: >
|
|
||||||
Due to inactivity, this issue has been automatically closed. If this is
|
|
||||||
still a problem on the latest release, please recreate the issue.
|
|
||||||
123
.github/workflows/build-container.yml
vendored
@@ -1,116 +1,43 @@
|
|||||||
|
# Building the Image without pushing to confirm it is still buildable
|
||||||
|
# confirum functionality would unfortunately need way more resources
|
||||||
name: build container image
|
name: build container image
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- 'main'
|
- 'main'
|
||||||
paths:
|
- 'development'
|
||||||
- 'pyproject.toml'
|
- 'update-dockerfile'
|
||||||
- '.dockerignore'
|
|
||||||
- 'invokeai/**'
|
|
||||||
- 'docker/Dockerfile'
|
|
||||||
- 'docker/docker-entrypoint.sh'
|
|
||||||
- 'workflows/build-container.yml'
|
|
||||||
tags:
|
|
||||||
- 'v*.*.*'
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
push-to-registry:
|
|
||||||
description: Push the built image to the container registry
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker:
|
docker:
|
||||||
if: github.event.pull_request.draft == false
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
gpu-driver:
|
arch:
|
||||||
- cuda
|
- x86_64
|
||||||
- cpu
|
- aarch64
|
||||||
- rocm
|
pip-requirements:
|
||||||
|
- requirements-lin-amd.txt
|
||||||
|
- requirements-lin-cuda.txt
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: ${{ matrix.gpu-driver }}
|
name: ${{ matrix.pip-requirements }} ${{ matrix.arch }}
|
||||||
env:
|
|
||||||
# torch/arm64 does not support GPU currently, so arm64 builds
|
|
||||||
# would not be GPU-accelerated.
|
|
||||||
# re-enable arm64 if there is sufficient demand.
|
|
||||||
# PLATFORMS: 'linux/amd64,linux/arm64'
|
|
||||||
PLATFORMS: 'linux/amd64'
|
|
||||||
steps:
|
steps:
|
||||||
- name: Free up more disk space on the runner
|
- name: prepare docker-tag
|
||||||
# https://github.com/actions/runner-images/issues/2840#issuecomment-1284059930
|
env:
|
||||||
# the /mnt dir has 70GBs of free space
|
repository: ${{ github.repository }}
|
||||||
# /dev/sda1 74G 28K 70G 1% /mnt
|
run: echo "dockertag=${repository,,}" >> $GITHUB_ENV
|
||||||
# According to some online posts the /mnt is not always there, so checking before setting docker to use it
|
|
||||||
run: |
|
|
||||||
echo "----- Free space before cleanup"
|
|
||||||
df -h
|
|
||||||
sudo rm -rf /usr/share/dotnet
|
|
||||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
||||||
sudo swapoff /mnt/swapfile
|
|
||||||
sudo rm -rf /mnt/swapfile
|
|
||||||
if [ -d /mnt ]; then
|
|
||||||
sudo chmod -R 777 /mnt
|
|
||||||
echo '{"data-root": "/mnt/docker-root"}' | sudo tee /etc/docker/daemon.json
|
|
||||||
sudo systemctl restart docker
|
|
||||||
fi
|
|
||||||
echo "----- Free space after cleanup"
|
|
||||||
df -h
|
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v3
|
||||||
|
- name: Set up QEMU
|
||||||
- name: Docker meta
|
uses: docker/setup-qemu-action@v2
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@v5
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
images: |
|
|
||||||
ghcr.io/${{ github.repository }}
|
|
||||||
tags: |
|
|
||||||
type=ref,event=branch
|
|
||||||
type=ref,event=tag
|
|
||||||
type=pep440,pattern={{version}}
|
|
||||||
type=pep440,pattern={{major}}.{{minor}}
|
|
||||||
type=pep440,pattern={{major}}
|
|
||||||
type=sha,enable=true,prefix=sha-,format=short
|
|
||||||
flavor: |
|
|
||||||
latest=${{ matrix.gpu-driver == 'cuda' && github.ref == 'refs/heads/main' }}
|
|
||||||
suffix=-${{ matrix.gpu-driver }},onlatest=false
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v2
|
||||||
with:
|
|
||||||
platforms: ${{ env.PLATFORMS }}
|
|
||||||
|
|
||||||
- name: Login to GitHub Container Registry
|
|
||||||
if: github.event_name != 'pull_request'
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.repository_owner }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Build container
|
- name: Build container
|
||||||
timeout-minutes: 40
|
uses: docker/build-push-action@v3
|
||||||
id: docker_build
|
|
||||||
uses: docker/build-push-action@v6
|
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: docker/Dockerfile
|
file: docker-build/Dockerfile
|
||||||
platforms: ${{ env.PLATFORMS }}
|
platforms: Linux/${{ matrix.arch }}
|
||||||
build-args: |
|
push: false
|
||||||
GPU_DRIVER=${{ matrix.gpu-driver }}
|
tags: ${{ env.dockertag }}:${{ matrix.pip-requirements }}-${{ matrix.arch }}
|
||||||
push: ${{ github.ref == 'refs/heads/main' || github.ref_type == 'tag' || github.event.inputs.push-to-registry }}
|
build-args: pip_requirements=${{ matrix.pip-requirements }}
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
|
||||||
# cache-from: |
|
|
||||||
# type=gha,scope=${{ github.ref_name }}-${{ matrix.gpu-driver }}
|
|
||||||
# type=gha,scope=main-${{ matrix.gpu-driver }}
|
|
||||||
# cache-to: type=gha,mode=max,scope=${{ github.ref_name }}-${{ matrix.gpu-driver }}
|
|
||||||
|
|||||||
38
.github/workflows/build-wheel.yml
vendored
@@ -1,38 +0,0 @@
|
|||||||
# Builds and uploads python build artifacts.
|
|
||||||
|
|
||||||
name: build wheel
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
workflow_call:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-installer:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 5 # expected run time: <2 min
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: setup python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: '3.12'
|
|
||||||
cache: pip
|
|
||||||
cache-dependency-path: pyproject.toml
|
|
||||||
|
|
||||||
- name: install pypa/build
|
|
||||||
run: pip install --upgrade build
|
|
||||||
|
|
||||||
- name: setup frontend
|
|
||||||
uses: ./.github/actions/install-frontend-deps
|
|
||||||
|
|
||||||
- name: build wheel
|
|
||||||
id: build_wheel
|
|
||||||
run: ./scripts/build_wheel.sh
|
|
||||||
|
|
||||||
- name: upload python distribution artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: dist
|
|
||||||
path: ${{ steps.build_wheel.outputs.DIST_PATH }}
|
|
||||||
34
.github/workflows/clean-caches.yml
vendored
@@ -1,34 +0,0 @@
|
|||||||
name: cleanup caches by a branch
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- closed
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
cleanup:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check out code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Cleanup
|
|
||||||
run: |
|
|
||||||
gh extension install actions/gh-actions-cache
|
|
||||||
|
|
||||||
REPO=${{ github.repository }}
|
|
||||||
BRANCH=${{ github.ref }}
|
|
||||||
|
|
||||||
echo "Fetching list of cache key"
|
|
||||||
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 )
|
|
||||||
|
|
||||||
## Setting this to not fail the workflow while deleting cache keys.
|
|
||||||
set +e
|
|
||||||
echo "Deleting caches..."
|
|
||||||
for cacheKey in $cacheKeysForPR
|
|
||||||
do
|
|
||||||
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
|
|
||||||
done
|
|
||||||
echo "Done"
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
28
.github/workflows/close-inactive-issues.yml
vendored
@@ -1,28 +0,0 @@
|
|||||||
name: Close inactive issues
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "00 4 * * *"
|
|
||||||
|
|
||||||
env:
|
|
||||||
DAYS_BEFORE_ISSUE_STALE: 30
|
|
||||||
DAYS_BEFORE_ISSUE_CLOSE: 14
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
close-issues:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
issues: write
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- uses: actions/stale@v8
|
|
||||||
with:
|
|
||||||
days-before-issue-stale: ${{ env.DAYS_BEFORE_ISSUE_STALE }}
|
|
||||||
days-before-issue-close: ${{ env.DAYS_BEFORE_ISSUE_CLOSE }}
|
|
||||||
stale-issue-label: "Inactive Issue"
|
|
||||||
stale-issue-message: "There has been no activity in this issue for ${{ env.DAYS_BEFORE_ISSUE_STALE }} days. If this issue is still being experienced, please reply with an updated confirmation that the issue is still being experienced with the latest release."
|
|
||||||
close-issue-message: "Due to inactivity, this issue was automatically closed. If you are still experiencing the issue, please recreate the issue."
|
|
||||||
days-before-pr-stale: -1
|
|
||||||
days-before-pr-close: -1
|
|
||||||
exempt-issue-labels: "Active Issue"
|
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
operations-per-run: 500
|
|
||||||
85
.github/workflows/frontend-checks.yml
vendored
@@ -1,85 +0,0 @@
|
|||||||
# Runs frontend code quality checks.
|
|
||||||
#
|
|
||||||
# Checks for changes to frontend files before running the checks.
|
|
||||||
# If always_run is true, always runs the checks.
|
|
||||||
|
|
||||||
name: 'frontend checks'
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- 'ready_for_review'
|
|
||||||
- 'opened'
|
|
||||||
- 'synchronize'
|
|
||||||
merge_group:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the checks'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the checks'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: invokeai/frontend/web
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
frontend-checks:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 10 # expected run time: <2 min
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: check for changed frontend files
|
|
||||||
if: ${{ inputs.always_run != true }}
|
|
||||||
id: changed-files
|
|
||||||
# Pinned to the _hash_ for v45.0.9 to prevent supply-chain attacks.
|
|
||||||
# See:
|
|
||||||
# - CVE-2025-30066
|
|
||||||
# - https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised
|
|
||||||
# - https://github.com/tj-actions/changed-files/issues/2463
|
|
||||||
uses: tj-actions/changed-files@a284dc1814e3fd07f2e34267fc8f81227ed29fb8
|
|
||||||
with:
|
|
||||||
files_yaml: |
|
|
||||||
frontend:
|
|
||||||
- 'invokeai/frontend/web/**'
|
|
||||||
|
|
||||||
- name: install dependencies
|
|
||||||
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
uses: ./.github/actions/install-frontend-deps
|
|
||||||
|
|
||||||
- name: tsc
|
|
||||||
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: 'pnpm lint:tsc'
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: dpdm
|
|
||||||
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: 'pnpm lint:dpdm'
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: eslint
|
|
||||||
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: 'pnpm lint:eslint'
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: prettier
|
|
||||||
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: 'pnpm lint:prettier'
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: knip
|
|
||||||
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: 'pnpm lint:knip'
|
|
||||||
shell: bash
|
|
||||||
65
.github/workflows/frontend-tests.yml
vendored
@@ -1,65 +0,0 @@
|
|||||||
# Runs frontend tests.
|
|
||||||
#
|
|
||||||
# Checks for changes to frontend files before running the tests.
|
|
||||||
# If always_run is true, always runs the tests.
|
|
||||||
|
|
||||||
name: 'frontend tests'
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- 'ready_for_review'
|
|
||||||
- 'opened'
|
|
||||||
- 'synchronize'
|
|
||||||
merge_group:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the tests'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the tests'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: invokeai/frontend/web
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
frontend-tests:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 10 # expected run time: <2 min
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: check for changed frontend files
|
|
||||||
if: ${{ inputs.always_run != true }}
|
|
||||||
id: changed-files
|
|
||||||
# Pinned to the _hash_ for v45.0.9 to prevent supply-chain attacks.
|
|
||||||
# See:
|
|
||||||
# - CVE-2025-30066
|
|
||||||
# - https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised
|
|
||||||
# - https://github.com/tj-actions/changed-files/issues/2463
|
|
||||||
uses: tj-actions/changed-files@a284dc1814e3fd07f2e34267fc8f81227ed29fb8
|
|
||||||
with:
|
|
||||||
files_yaml: |
|
|
||||||
frontend:
|
|
||||||
- 'invokeai/frontend/web/**'
|
|
||||||
|
|
||||||
- name: install dependencies
|
|
||||||
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
uses: ./.github/actions/install-frontend-deps
|
|
||||||
|
|
||||||
- name: vitest
|
|
||||||
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: 'pnpm test:no-watch'
|
|
||||||
shell: bash
|
|
||||||
18
.github/workflows/label-pr.yml
vendored
@@ -1,18 +0,0 @@
|
|||||||
name: 'label PRs'
|
|
||||||
on:
|
|
||||||
- pull_request_target
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
labeler:
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: write
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: label PRs
|
|
||||||
uses: actions/labeler@v5
|
|
||||||
with:
|
|
||||||
configuration-path: .github/pr_labels.yml
|
|
||||||
30
.github/workflows/lfs-checks.yml
vendored
@@ -1,30 +0,0 @@
|
|||||||
# Checks that large files and LFS-tracked files are properly checked in with pointer format.
|
|
||||||
# Uses https://github.com/ppremk/lfs-warning to detect LFS issues.
|
|
||||||
|
|
||||||
name: 'lfs checks'
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- 'ready_for_review'
|
|
||||||
- 'opened'
|
|
||||||
- 'synchronize'
|
|
||||||
merge_group:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lfs-check:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 5
|
|
||||||
permissions:
|
|
||||||
# Required to label and comment on the PRs
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: check lfs files
|
|
||||||
uses: ppremk/lfs-warning@v3.3
|
|
||||||
61
.github/workflows/mkdocs-material.yml
vendored
@@ -1,49 +1,40 @@
|
|||||||
# This is a mostly a copy-paste from https://github.com/squidfunk/mkdocs-material/blob/master/docs/publishing-your-site.md
|
name: mkdocs-material
|
||||||
|
|
||||||
name: mkdocs
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- 'main'
|
||||||
workflow_dispatch:
|
- 'development'
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
mkdocs-material:
|
||||||
if: github.event.pull_request.draft == false
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
|
||||||
REPO_URL: '${{ github.server_url }}/${{ github.repository }}'
|
|
||||||
REPO_NAME: '${{ github.repository }}'
|
|
||||||
SITE_URL: 'https://${{ github.repository_owner }}.github.io/InvokeAI'
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: checkout
|
- name: checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: setup python
|
- name: setup python
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: '3.10'
|
python-version: '3.10'
|
||||||
cache: pip
|
|
||||||
cache-dependency-path: pyproject.toml
|
|
||||||
|
|
||||||
- name: set cache id
|
- name: install requirements
|
||||||
run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
run: |
|
||||||
|
python -m \
|
||||||
|
pip install -r docs/requirements-mkdocs.txt
|
||||||
|
|
||||||
- name: use cache
|
- name: confirm buildability
|
||||||
uses: actions/cache@v4
|
run: |
|
||||||
with:
|
python -m \
|
||||||
key: mkdocs-material-${{ env.cache_id }}
|
mkdocs build \
|
||||||
path: .cache
|
--clean \
|
||||||
restore-keys: |
|
--verbose
|
||||||
mkdocs-material-
|
|
||||||
|
|
||||||
- name: install dependencies
|
- name: deploy to gh-pages
|
||||||
run: python -m pip install ".[docs]"
|
if: ${{ github.ref == 'refs/heads/main' }}
|
||||||
|
run: |
|
||||||
- name: build & deploy
|
python -m \
|
||||||
run: mkdocs gh-deploy --force
|
mkdocs gh-deploy \
|
||||||
|
--clean \
|
||||||
|
--force
|
||||||
|
|||||||
82
.github/workflows/python-checks.yml
vendored
@@ -1,82 +0,0 @@
|
|||||||
# Runs python code quality checks.
|
|
||||||
#
|
|
||||||
# Checks for changes to python files before running the checks.
|
|
||||||
# If always_run is true, always runs the checks.
|
|
||||||
#
|
|
||||||
# TODO: Add mypy or pyright to the checks.
|
|
||||||
|
|
||||||
name: 'python checks'
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- 'ready_for_review'
|
|
||||||
- 'opened'
|
|
||||||
- 'synchronize'
|
|
||||||
merge_group:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the checks'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the checks'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
python-checks:
|
|
||||||
env:
|
|
||||||
# uv requires a venv by default - but for this, we can simply use the system python
|
|
||||||
UV_SYSTEM_PYTHON: 1
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 5 # expected run time: <1 min
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: check for changed python files
|
|
||||||
if: ${{ inputs.always_run != true }}
|
|
||||||
id: changed-files
|
|
||||||
# Pinned to the _hash_ for v45.0.9 to prevent supply-chain attacks.
|
|
||||||
# See:
|
|
||||||
# - CVE-2025-30066
|
|
||||||
# - https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised
|
|
||||||
# - https://github.com/tj-actions/changed-files/issues/2463
|
|
||||||
uses: tj-actions/changed-files@a284dc1814e3fd07f2e34267fc8f81227ed29fb8
|
|
||||||
with:
|
|
||||||
files_yaml: |
|
|
||||||
python:
|
|
||||||
- 'pyproject.toml'
|
|
||||||
- 'invokeai/**'
|
|
||||||
- '!invokeai/frontend/web/**'
|
|
||||||
- 'tests/**'
|
|
||||||
|
|
||||||
- name: setup uv
|
|
||||||
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
uses: astral-sh/setup-uv@v5
|
|
||||||
with:
|
|
||||||
version: '0.6.10'
|
|
||||||
enable-cache: true
|
|
||||||
|
|
||||||
- name: check pypi classifiers
|
|
||||||
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: uv run --no-project scripts/check_classifiers.py ./pyproject.toml
|
|
||||||
|
|
||||||
- name: ruff check
|
|
||||||
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: uv tool run ruff@0.11.2 check --output-format=github .
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: ruff format
|
|
||||||
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: uv tool run ruff@0.11.2 format --check .
|
|
||||||
shell: bash
|
|
||||||
110
.github/workflows/python-tests.yml
vendored
@@ -1,110 +0,0 @@
|
|||||||
# Runs python tests on a matrix of python versions and platforms.
|
|
||||||
#
|
|
||||||
# Checks for changes to python files before running the tests.
|
|
||||||
# If always_run is true, always runs the tests.
|
|
||||||
|
|
||||||
name: 'python tests'
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- 'ready_for_review'
|
|
||||||
- 'opened'
|
|
||||||
- 'synchronize'
|
|
||||||
merge_group:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the tests'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the tests'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
matrix:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
python-version:
|
|
||||||
- '3.11'
|
|
||||||
- '3.12'
|
|
||||||
platform:
|
|
||||||
- linux-cpu
|
|
||||||
- macos-default
|
|
||||||
- windows-cpu
|
|
||||||
include:
|
|
||||||
- platform: linux-cpu
|
|
||||||
os: ubuntu-24.04
|
|
||||||
extra-index-url: 'https://download.pytorch.org/whl/cpu'
|
|
||||||
github-env: $GITHUB_ENV
|
|
||||||
- platform: macos-default
|
|
||||||
os: macOS-14
|
|
||||||
github-env: $GITHUB_ENV
|
|
||||||
- platform: windows-cpu
|
|
||||||
os: windows-2022
|
|
||||||
github-env: $env:GITHUB_ENV
|
|
||||||
name: 'py${{ matrix.python-version }}: ${{ matrix.platform }}'
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
timeout-minutes: 15 # expected run time: 2-6 min, depending on platform
|
|
||||||
env:
|
|
||||||
PIP_USE_PEP517: '1'
|
|
||||||
UV_SYSTEM_PYTHON: 1
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
# https://github.com/nschloe/action-cached-lfs-checkout
|
|
||||||
uses: nschloe/action-cached-lfs-checkout@f46300cd8952454b9f0a21a3d133d4bd5684cfc2
|
|
||||||
|
|
||||||
- name: check for changed python files
|
|
||||||
if: ${{ inputs.always_run != true }}
|
|
||||||
id: changed-files
|
|
||||||
# Pinned to the _hash_ for v45.0.9 to prevent supply-chain attacks.
|
|
||||||
# See:
|
|
||||||
# - CVE-2025-30066
|
|
||||||
# - https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised
|
|
||||||
# - https://github.com/tj-actions/changed-files/issues/2463
|
|
||||||
uses: tj-actions/changed-files@a284dc1814e3fd07f2e34267fc8f81227ed29fb8
|
|
||||||
with:
|
|
||||||
files_yaml: |
|
|
||||||
python:
|
|
||||||
- 'pyproject.toml'
|
|
||||||
- 'invokeai/**'
|
|
||||||
- '!invokeai/frontend/web/**'
|
|
||||||
- 'tests/**'
|
|
||||||
|
|
||||||
- name: setup uv
|
|
||||||
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
uses: astral-sh/setup-uv@v5
|
|
||||||
with:
|
|
||||||
version: '0.6.10'
|
|
||||||
enable-cache: true
|
|
||||||
python-version: ${{ matrix.python-version }}
|
|
||||||
|
|
||||||
- name: setup python
|
|
||||||
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: ${{ matrix.python-version }}
|
|
||||||
|
|
||||||
- name: install dependencies
|
|
||||||
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
env:
|
|
||||||
UV_INDEX: ${{ matrix.extra-index-url }}
|
|
||||||
run: uv pip install --editable ".[test]"
|
|
||||||
|
|
||||||
- name: run pytest
|
|
||||||
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: pytest
|
|
||||||
108
.github/workflows/release.yml
vendored
@@ -1,108 +0,0 @@
|
|||||||
# Main release workflow. Triggered on tag push or manual trigger.
|
|
||||||
#
|
|
||||||
# - Runs all code checks and tests
|
|
||||||
# - Verifies the app version matches the tag version.
|
|
||||||
# - Builds the installer and build, uploading them as artifacts.
|
|
||||||
# - Publishes to TestPyPI and PyPI. Both are conditional on the previous steps passing and require a manual approval.
|
|
||||||
#
|
|
||||||
# See docs/RELEASE.md for more information on the release process.
|
|
||||||
|
|
||||||
name: release
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-version:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: check python version
|
|
||||||
uses: samuelcolvin/check-python-version@v4
|
|
||||||
id: check-python-version
|
|
||||||
with:
|
|
||||||
version_file_path: invokeai/version/invokeai_version.py
|
|
||||||
|
|
||||||
frontend-checks:
|
|
||||||
uses: ./.github/workflows/frontend-checks.yml
|
|
||||||
with:
|
|
||||||
always_run: true
|
|
||||||
|
|
||||||
frontend-tests:
|
|
||||||
uses: ./.github/workflows/frontend-tests.yml
|
|
||||||
with:
|
|
||||||
always_run: true
|
|
||||||
|
|
||||||
python-checks:
|
|
||||||
uses: ./.github/workflows/python-checks.yml
|
|
||||||
with:
|
|
||||||
always_run: true
|
|
||||||
|
|
||||||
python-tests:
|
|
||||||
uses: ./.github/workflows/python-tests.yml
|
|
||||||
with:
|
|
||||||
always_run: true
|
|
||||||
|
|
||||||
build:
|
|
||||||
uses: ./.github/workflows/build-wheel.yml
|
|
||||||
|
|
||||||
publish-testpypi:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 5 # expected run time: <1 min
|
|
||||||
needs:
|
|
||||||
[
|
|
||||||
check-version,
|
|
||||||
frontend-checks,
|
|
||||||
frontend-tests,
|
|
||||||
python-checks,
|
|
||||||
python-tests,
|
|
||||||
build,
|
|
||||||
]
|
|
||||||
environment:
|
|
||||||
name: testpypi
|
|
||||||
url: https://test.pypi.org/p/invokeai
|
|
||||||
permissions:
|
|
||||||
id-token: write
|
|
||||||
steps:
|
|
||||||
- name: download distribution from build job
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: dist
|
|
||||||
path: dist/
|
|
||||||
|
|
||||||
- name: publish distribution to TestPyPI
|
|
||||||
uses: pypa/gh-action-pypi-publish@release/v1
|
|
||||||
with:
|
|
||||||
repository-url: https://test.pypi.org/legacy/
|
|
||||||
|
|
||||||
publish-pypi:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 5 # expected run time: <1 min
|
|
||||||
needs:
|
|
||||||
[
|
|
||||||
check-version,
|
|
||||||
frontend-checks,
|
|
||||||
frontend-tests,
|
|
||||||
python-checks,
|
|
||||||
python-tests,
|
|
||||||
build,
|
|
||||||
]
|
|
||||||
environment:
|
|
||||||
name: pypi
|
|
||||||
url: https://pypi.org/p/invokeai
|
|
||||||
permissions:
|
|
||||||
id-token: write
|
|
||||||
steps:
|
|
||||||
- name: download distribution from build job
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: dist
|
|
||||||
path: dist/
|
|
||||||
|
|
||||||
- name: publish distribution to PyPI
|
|
||||||
uses: pypa/gh-action-pypi-publish@release/v1
|
|
||||||
135
.github/workflows/test-invoke-conda.yml
vendored
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
name: Test invoke.py
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
- 'development'
|
||||||
|
- 'fix-gh-actions-fork'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
- 'development'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
matrix:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
stable-diffusion-model:
|
||||||
|
- 'stable-diffusion-1.5'
|
||||||
|
environment-yaml:
|
||||||
|
- environment-lin-amd.yml
|
||||||
|
- environment-lin-cuda.yml
|
||||||
|
- environment-mac.yml
|
||||||
|
include:
|
||||||
|
- environment-yaml: environment-lin-amd.yml
|
||||||
|
os: ubuntu-latest
|
||||||
|
default-shell: bash -l {0}
|
||||||
|
- environment-yaml: environment-lin-cuda.yml
|
||||||
|
os: ubuntu-latest
|
||||||
|
default-shell: bash -l {0}
|
||||||
|
- environment-yaml: environment-mac.yml
|
||||||
|
os: macos-12
|
||||||
|
default-shell: bash -l {0}
|
||||||
|
- stable-diffusion-model: stable-diffusion-1.5
|
||||||
|
stable-diffusion-model-url: https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt
|
||||||
|
stable-diffusion-model-dl-path: models/ldm/stable-diffusion-v1
|
||||||
|
stable-diffusion-model-dl-name: v1-5-pruned-emaonly.ckpt
|
||||||
|
name: ${{ matrix.environment-yaml }} on ${{ matrix.os }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
env:
|
||||||
|
CONDA_ENV_NAME: invokeai
|
||||||
|
INVOKEAI_ROOT: '${{ github.workspace }}/invokeai'
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: ${{ matrix.default-shell }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
id: checkout-sources
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: create models.yaml from example
|
||||||
|
run: |
|
||||||
|
mkdir -p ${{ env.INVOKEAI_ROOT }}/configs
|
||||||
|
cp configs/models.yaml.example ${{ env.INVOKEAI_ROOT }}/configs/models.yaml
|
||||||
|
|
||||||
|
- name: create environment.yml
|
||||||
|
run: cp "environments-and-requirements/${{ matrix.environment-yaml }}" environment.yml
|
||||||
|
|
||||||
|
- name: Use cached conda packages
|
||||||
|
id: use-cached-conda-packages
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: ~/conda_pkgs_dir
|
||||||
|
key: conda-pkgs-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles(matrix.environment-yaml) }}
|
||||||
|
|
||||||
|
- name: Activate Conda Env
|
||||||
|
id: activate-conda-env
|
||||||
|
uses: conda-incubator/setup-miniconda@v2
|
||||||
|
with:
|
||||||
|
activate-environment: ${{ env.CONDA_ENV_NAME }}
|
||||||
|
environment-file: environment.yml
|
||||||
|
miniconda-version: latest
|
||||||
|
|
||||||
|
- name: set test prompt to main branch validation
|
||||||
|
if: ${{ github.ref == 'refs/heads/main' }}
|
||||||
|
run: echo "TEST_PROMPTS=tests/preflight_prompts.txt" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: set test prompt to development branch validation
|
||||||
|
if: ${{ github.ref == 'refs/heads/development' }}
|
||||||
|
run: echo "TEST_PROMPTS=tests/dev_prompts.txt" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: set test prompt to Pull Request validation
|
||||||
|
if: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/development' }}
|
||||||
|
run: echo "TEST_PROMPTS=tests/validate_pr_prompt.txt" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Use Cached Stable Diffusion Model
|
||||||
|
id: cache-sd-model
|
||||||
|
uses: actions/cache@v3
|
||||||
|
env:
|
||||||
|
cache-name: cache-${{ matrix.stable-diffusion-model }}
|
||||||
|
with:
|
||||||
|
path: ${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}
|
||||||
|
key: ${{ env.cache-name }}
|
||||||
|
|
||||||
|
- name: Download ${{ matrix.stable-diffusion-model }}
|
||||||
|
id: download-stable-diffusion-model
|
||||||
|
if: ${{ steps.cache-sd-model.outputs.cache-hit != 'true' }}
|
||||||
|
run: |
|
||||||
|
mkdir -p "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}"
|
||||||
|
curl \
|
||||||
|
-H "Authorization: Bearer ${{ secrets.HUGGINGFACE_TOKEN }}" \
|
||||||
|
-o "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}/${{ matrix.stable-diffusion-model-dl-name }}" \
|
||||||
|
-L ${{ matrix.stable-diffusion-model-url }}
|
||||||
|
|
||||||
|
- name: run configure_invokeai.py
|
||||||
|
id: run-preload-models
|
||||||
|
run: |
|
||||||
|
python scripts/configure_invokeai.py --no-interactive --yes
|
||||||
|
|
||||||
|
- name: cat ~/.invokeai
|
||||||
|
id: cat-invokeai
|
||||||
|
run: cat ~/.invokeai
|
||||||
|
|
||||||
|
- name: Run the tests
|
||||||
|
id: run-tests
|
||||||
|
run: |
|
||||||
|
time python scripts/invoke.py \
|
||||||
|
--no-patchmatch \
|
||||||
|
--no-nsfw_checker \
|
||||||
|
--model ${{ matrix.stable-diffusion-model }} \
|
||||||
|
--from_file ${{ env.TEST_PROMPTS }} \
|
||||||
|
--root="${{ env.INVOKEAI_ROOT }}" \
|
||||||
|
--outdir="${{ env.INVOKEAI_ROOT }}/outputs"
|
||||||
|
|
||||||
|
- name: export conda env
|
||||||
|
id: export-conda-env
|
||||||
|
run: |
|
||||||
|
mkdir -p outputs/img-samples
|
||||||
|
conda env export --name ${{ env.CONDA_ENV_NAME }} > outputs/img-samples/environment-${{ runner.os }}-${{ runner.arch }}.yml
|
||||||
|
|
||||||
|
- name: Archive results
|
||||||
|
id: archive-results
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: results_${{ matrix.requirements-file }}_${{ matrix.python-version }}
|
||||||
|
path: ${{ env.INVOKEAI_ROOT }}/outputs
|
||||||
128
.github/workflows/test-invoke-pip.yml
vendored
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
name: Test invoke.py pip
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
- 'development'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
- 'development'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
matrix:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
stable-diffusion-model:
|
||||||
|
- stable-diffusion-1.5
|
||||||
|
requirements-file:
|
||||||
|
- requirements-lin-cuda.txt
|
||||||
|
- requirements-lin-amd.txt
|
||||||
|
- requirements-mac-mps-cpu.txt
|
||||||
|
python-version:
|
||||||
|
# - '3.9'
|
||||||
|
- '3.10'
|
||||||
|
include:
|
||||||
|
- requirements-file: requirements-lin-cuda.txt
|
||||||
|
os: ubuntu-latest
|
||||||
|
default-shell: bash -l {0}
|
||||||
|
- requirements-file: requirements-lin-amd.txt
|
||||||
|
os: ubuntu-latest
|
||||||
|
default-shell: bash -l {0}
|
||||||
|
- requirements-file: requirements-mac-mps-cpu.txt
|
||||||
|
os: macOS-12
|
||||||
|
default-shell: bash -l {0}
|
||||||
|
- stable-diffusion-model: stable-diffusion-1.5
|
||||||
|
stable-diffusion-model-url: https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt
|
||||||
|
stable-diffusion-model-dl-path: models/ldm/stable-diffusion-v1
|
||||||
|
stable-diffusion-model-dl-name: v1-5-pruned-emaonly.ckpt
|
||||||
|
name: ${{ matrix.requirements-file }} on ${{ matrix.python-version }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: ${{ matrix.default-shell }}
|
||||||
|
env:
|
||||||
|
INVOKEAI_ROOT: '${{ github.workspace }}/invokeai'
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
id: checkout-sources
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: create models.yaml from example
|
||||||
|
run: |
|
||||||
|
mkdir -p ${{ env.INVOKEAI_ROOT }}/configs
|
||||||
|
cp configs/models.yaml.example ${{ env.INVOKEAI_ROOT }}/configs/models.yaml
|
||||||
|
|
||||||
|
- name: set test prompt to main branch validation
|
||||||
|
if: ${{ github.ref == 'refs/heads/main' }}
|
||||||
|
run: echo "TEST_PROMPTS=tests/preflight_prompts.txt" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: set test prompt to development branch validation
|
||||||
|
if: ${{ github.ref == 'refs/heads/development' }}
|
||||||
|
run: echo "TEST_PROMPTS=tests/dev_prompts.txt" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: set test prompt to Pull Request validation
|
||||||
|
if: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/development' }}
|
||||||
|
run: echo "TEST_PROMPTS=tests/validate_pr_prompt.txt" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: create requirements.txt
|
||||||
|
run: cp 'environments-and-requirements/${{ matrix.requirements-file }}' '${{ matrix.requirements-file }}'
|
||||||
|
|
||||||
|
- name: setup python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python-version }}
|
||||||
|
cache: 'pip'
|
||||||
|
cache-dependency-path: ${{ matrix.requirements-file }}
|
||||||
|
|
||||||
|
# - name: install dependencies
|
||||||
|
# run: ${{ env.pythonLocation }}/bin/pip install --upgrade pip setuptools wheel
|
||||||
|
|
||||||
|
- name: install requirements
|
||||||
|
run: ${{ env.pythonLocation }}/bin/pip install -r '${{ matrix.requirements-file }}'
|
||||||
|
|
||||||
|
- name: Use Cached Stable Diffusion Model
|
||||||
|
id: cache-sd-model
|
||||||
|
uses: actions/cache@v3
|
||||||
|
env:
|
||||||
|
cache-name: cache-${{ matrix.stable-diffusion-model }}
|
||||||
|
with:
|
||||||
|
path: ${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}
|
||||||
|
key: ${{ env.cache-name }}
|
||||||
|
|
||||||
|
- name: Download ${{ matrix.stable-diffusion-model }}
|
||||||
|
id: download-stable-diffusion-model
|
||||||
|
if: ${{ steps.cache-sd-model.outputs.cache-hit != 'true' }}
|
||||||
|
run: |
|
||||||
|
mkdir -p "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}"
|
||||||
|
curl \
|
||||||
|
-H "Authorization: Bearer ${{ secrets.HUGGINGFACE_TOKEN }}" \
|
||||||
|
-o "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}/${{ matrix.stable-diffusion-model-dl-name }}" \
|
||||||
|
-L ${{ matrix.stable-diffusion-model-url }}
|
||||||
|
|
||||||
|
- name: run configure_invokeai.py
|
||||||
|
id: run-preload-models
|
||||||
|
run: |
|
||||||
|
${{ env.pythonLocation }}/bin/python scripts/configure_invokeai.py --no-interactive --yes
|
||||||
|
|
||||||
|
- name: cat ~/.invokeai
|
||||||
|
id: cat-invokeai
|
||||||
|
run: cat ~/.invokeai
|
||||||
|
|
||||||
|
- name: Run the tests
|
||||||
|
id: run-tests
|
||||||
|
run: |
|
||||||
|
time ${{ env.pythonLocation }}/bin/python scripts/invoke.py \
|
||||||
|
--no-patchmatch \
|
||||||
|
--no-nsfw_checker \
|
||||||
|
--model ${{ matrix.stable-diffusion-model }} \
|
||||||
|
--from_file ${{ env.TEST_PROMPTS }} \
|
||||||
|
--root="${{ env.INVOKEAI_ROOT }}" \
|
||||||
|
--outdir="${{ env.INVOKEAI_ROOT }}/outputs"
|
||||||
|
|
||||||
|
- name: Archive results
|
||||||
|
id: archive-results
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: results_${{ matrix.requirements-file }}_${{ matrix.python-version }}
|
||||||
|
path: ${{ env.INVOKEAI_ROOT }}/outputs
|
||||||
110
.github/workflows/typegen-checks.yml
vendored
@@ -1,110 +0,0 @@
|
|||||||
# Runs typegen schema quality checks.
|
|
||||||
# Frontend types should match the server.
|
|
||||||
#
|
|
||||||
# Checks for changes to files before running the checks.
|
|
||||||
# If always_run is true, always runs the checks.
|
|
||||||
|
|
||||||
name: 'typegen checks'
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- 'ready_for_review'
|
|
||||||
- 'opened'
|
|
||||||
- 'synchronize'
|
|
||||||
merge_group:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the checks'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the checks'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
typegen-checks:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
timeout-minutes: 15 # expected run time: <5 min
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Free up more disk space on the runner
|
|
||||||
# https://github.com/actions/runner-images/issues/2840#issuecomment-1284059930
|
|
||||||
run: |
|
|
||||||
echo "----- Free space before cleanup"
|
|
||||||
df -h
|
|
||||||
sudo rm -rf /usr/share/dotnet
|
|
||||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
||||||
sudo swapoff /mnt/swapfile
|
|
||||||
sudo rm -rf /mnt/swapfile
|
|
||||||
echo "----- Free space after cleanup"
|
|
||||||
df -h
|
|
||||||
|
|
||||||
- name: check for changed files
|
|
||||||
if: ${{ inputs.always_run != true }}
|
|
||||||
id: changed-files
|
|
||||||
# Pinned to the _hash_ for v45.0.9 to prevent supply-chain attacks.
|
|
||||||
# See:
|
|
||||||
# - CVE-2025-30066
|
|
||||||
# - https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised
|
|
||||||
# - https://github.com/tj-actions/changed-files/issues/2463
|
|
||||||
uses: tj-actions/changed-files@a284dc1814e3fd07f2e34267fc8f81227ed29fb8
|
|
||||||
with:
|
|
||||||
files_yaml: |
|
|
||||||
src:
|
|
||||||
- 'pyproject.toml'
|
|
||||||
- 'invokeai/**'
|
|
||||||
|
|
||||||
- name: setup uv
|
|
||||||
if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
uses: astral-sh/setup-uv@v5
|
|
||||||
with:
|
|
||||||
version: '0.6.10'
|
|
||||||
enable-cache: true
|
|
||||||
python-version: '3.11'
|
|
||||||
|
|
||||||
- name: setup python
|
|
||||||
if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: '3.11'
|
|
||||||
|
|
||||||
- name: install dependencies
|
|
||||||
if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
env:
|
|
||||||
UV_INDEX: ${{ matrix.extra-index-url }}
|
|
||||||
run: uv pip install --editable .
|
|
||||||
|
|
||||||
- name: install frontend dependencies
|
|
||||||
if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
uses: ./.github/actions/install-frontend-deps
|
|
||||||
|
|
||||||
- name: copy schema
|
|
||||||
if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: cp invokeai/frontend/web/src/services/api/schema.ts invokeai/frontend/web/src/services/api/schema_orig.ts
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: generate schema
|
|
||||||
if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: cd invokeai/frontend/web && uv run ../../../scripts/generate_openapi_schema.py | pnpm typegen
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: compare files
|
|
||||||
if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: |
|
|
||||||
if ! diff invokeai/frontend/web/src/services/api/schema.ts invokeai/frontend/web/src/services/api/schema_orig.ts; then
|
|
||||||
echo "Files are different!";
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
||||||
shell: bash
|
|
||||||
68
.github/workflows/uv-lock-checks.yml
vendored
@@ -1,68 +0,0 @@
|
|||||||
# Check the `uv` lockfile for consistency with `pyproject.toml`.
|
|
||||||
#
|
|
||||||
# If this check fails, you should run `uv lock` to update the lockfile.
|
|
||||||
|
|
||||||
name: 'uv lock checks'
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- 'ready_for_review'
|
|
||||||
- 'opened'
|
|
||||||
- 'synchronize'
|
|
||||||
merge_group:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the checks'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
always_run:
|
|
||||||
description: 'Always run the checks'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
uv-lock-checks:
|
|
||||||
env:
|
|
||||||
# uv requires a venv by default - but for this, we can simply use the system python
|
|
||||||
UV_SYSTEM_PYTHON: 1
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 5 # expected run time: <1 min
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: check for changed python files
|
|
||||||
if: ${{ inputs.always_run != true }}
|
|
||||||
id: changed-files
|
|
||||||
# Pinned to the _hash_ for v45.0.9 to prevent supply-chain attacks.
|
|
||||||
# See:
|
|
||||||
# - CVE-2025-30066
|
|
||||||
# - https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised
|
|
||||||
# - https://github.com/tj-actions/changed-files/issues/2463
|
|
||||||
uses: tj-actions/changed-files@a284dc1814e3fd07f2e34267fc8f81227ed29fb8
|
|
||||||
with:
|
|
||||||
files_yaml: |
|
|
||||||
uvlock-pyprojecttoml:
|
|
||||||
- 'pyproject.toml'
|
|
||||||
- 'uv.lock'
|
|
||||||
|
|
||||||
- name: setup uv
|
|
||||||
if: ${{ steps.changed-files.outputs.uvlock-pyprojecttoml_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
uses: astral-sh/setup-uv@v5
|
|
||||||
with:
|
|
||||||
version: '0.6.10'
|
|
||||||
enable-cache: true
|
|
||||||
|
|
||||||
- name: check lockfile
|
|
||||||
if: ${{ steps.changed-files.outputs.uvlock-pyprojecttoml_any_changed == 'true' || inputs.always_run == true }}
|
|
||||||
run: uv lock --locked # this will exit with 1 if the lockfile is not consistent with pyproject.toml
|
|
||||||
shell: bash
|
|
||||||
76
.gitignore
vendored
@@ -1,4 +1,17 @@
|
|||||||
.idea/
|
# ignore default image save location and model symbolic link
|
||||||
|
outputs/
|
||||||
|
models/ldm/stable-diffusion-v1/model.ckpt
|
||||||
|
**/restoration/codeformer/weights
|
||||||
|
|
||||||
|
# ignore user models config
|
||||||
|
configs/models.user.yaml
|
||||||
|
config/models.user.yml
|
||||||
|
|
||||||
|
# ignore the Anaconda/Miniconda installer used while building Docker image
|
||||||
|
anaconda.sh
|
||||||
|
|
||||||
|
# ignore a directory which serves as a place for initial images
|
||||||
|
inputs/
|
||||||
|
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
__pycache__/
|
__pycache__/
|
||||||
@@ -20,6 +33,7 @@ dist/
|
|||||||
downloads/
|
downloads/
|
||||||
eggs/
|
eggs/
|
||||||
.eggs/
|
.eggs/
|
||||||
|
lib/
|
||||||
lib64/
|
lib64/
|
||||||
parts/
|
parts/
|
||||||
sdist/
|
sdist/
|
||||||
@@ -46,21 +60,16 @@ pip-delete-this-directory.txt
|
|||||||
htmlcov/
|
htmlcov/
|
||||||
.tox/
|
.tox/
|
||||||
.nox/
|
.nox/
|
||||||
.coveragerc
|
|
||||||
.coverage
|
.coverage
|
||||||
.coverage.*
|
.coverage.*
|
||||||
.cache
|
.cache
|
||||||
nosetests.xml
|
nosetests.xml
|
||||||
coverage.xml
|
coverage.xml
|
||||||
cov.xml
|
|
||||||
*.cover
|
*.cover
|
||||||
*.py,cover
|
*.py,cover
|
||||||
.hypothesis/
|
.hypothesis/
|
||||||
.pytest_cache/
|
.pytest_cache/
|
||||||
.pytest.ini
|
|
||||||
cover/
|
cover/
|
||||||
junit/
|
|
||||||
notes/
|
|
||||||
|
|
||||||
# Translations
|
# Translations
|
||||||
*.mo
|
*.mo
|
||||||
@@ -133,10 +142,12 @@ celerybeat.pid
|
|||||||
|
|
||||||
# Environments
|
# Environments
|
||||||
.env
|
.env
|
||||||
.venv*
|
.venv
|
||||||
env/
|
env/
|
||||||
venv/
|
venv/
|
||||||
ENV/
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
# Spyder project settings
|
# Spyder project settings
|
||||||
.spyderproject
|
.spyderproject
|
||||||
@@ -169,26 +180,57 @@ cython_debug/
|
|||||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
#.idea/
|
#.idea/
|
||||||
|
|
||||||
|
src
|
||||||
**/__pycache__/
|
**/__pycache__/
|
||||||
|
outputs
|
||||||
|
|
||||||
|
# Logs and associated folders
|
||||||
|
# created from generated embeddings.
|
||||||
|
logs
|
||||||
|
testtube
|
||||||
|
checkpoints
|
||||||
# If it's a Mac
|
# If it's a Mac
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
# Let the frontend manage its own gitignore
|
# Let the frontend manage its own gitignore
|
||||||
!invokeai/frontend/web/*
|
!frontend/*
|
||||||
|
|
||||||
# Scratch folder
|
# Scratch folder
|
||||||
.scratch/
|
.scratch/
|
||||||
.vscode/
|
.vscode/
|
||||||
.zed/
|
gfpgan/
|
||||||
|
models/ldm/stable-diffusion-v1/*.sha256
|
||||||
|
|
||||||
|
|
||||||
|
# GFPGAN model files
|
||||||
|
gfpgan/
|
||||||
|
|
||||||
|
# config file (will be created by installer)
|
||||||
|
configs/models.yaml
|
||||||
|
|
||||||
|
# weights (will be created by installer)
|
||||||
|
models/ldm/stable-diffusion-v1/*.ckpt
|
||||||
|
models/clipseg
|
||||||
|
models/gfpgan
|
||||||
|
|
||||||
|
# ignore initfile
|
||||||
|
.invokeai
|
||||||
|
|
||||||
|
# ignore environment.yml and requirements.txt
|
||||||
|
# these are links to the real files in environments-and-requirements
|
||||||
|
environment.yml
|
||||||
|
requirements.txt
|
||||||
|
|
||||||
# source installer files
|
# source installer files
|
||||||
installer/*zip
|
source_installer/*zip
|
||||||
installer/install.bat
|
source_installer/invokeAI
|
||||||
installer/install.sh
|
install.bat
|
||||||
installer/update.bat
|
install.sh
|
||||||
installer/update.sh
|
update.bat
|
||||||
installer/InvokeAI-Installer/
|
update.sh
|
||||||
.aider*
|
|
||||||
|
|
||||||
.claude/
|
# this may be present if the user created a venv
|
||||||
|
invokeai
|
||||||
|
|
||||||
|
# no longer stored in source directory
|
||||||
|
models
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# See https://pre-commit.com/ for usage and config
|
|
||||||
repos:
|
|
||||||
- repo: local
|
|
||||||
hooks:
|
|
||||||
- id: black
|
|
||||||
name: black
|
|
||||||
stages: [pre-commit]
|
|
||||||
language: system
|
|
||||||
entry: black
|
|
||||||
types: [python]
|
|
||||||
|
|
||||||
- id: flake8
|
|
||||||
name: flake8
|
|
||||||
stages: [pre-commit]
|
|
||||||
language: system
|
|
||||||
entry: flake8
|
|
||||||
types: [python]
|
|
||||||
|
|
||||||
- id: isort
|
|
||||||
name: isort
|
|
||||||
stages: [pre-commit]
|
|
||||||
language: system
|
|
||||||
entry: isort
|
|
||||||
types: [python]
|
|
||||||
|
|
||||||
- id: uvlock
|
|
||||||
name: uv lock
|
|
||||||
stages: [pre-commit]
|
|
||||||
language: system
|
|
||||||
entry: uv lock
|
|
||||||
files: ^pyproject\.toml$
|
|
||||||
pass_filenames: false
|
|
||||||
@@ -7,7 +7,7 @@ embeddedLanguageFormatting: auto
|
|||||||
overrides:
|
overrides:
|
||||||
- files: '*.md'
|
- files: '*.md'
|
||||||
options:
|
options:
|
||||||
proseWrap: preserve
|
proseWrap: always
|
||||||
printWidth: 80
|
printWidth: 80
|
||||||
parser: markdown
|
parser: markdown
|
||||||
cursorOffset: -1
|
cursorOffset: -1
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<img src="docs/assets/invoke_ai_banner.png" align="center">
|
<img src="docs/assets/invoke_ai_banner.png" align="center">
|
||||||
|
|
||||||
Invoke-AI is a community of software developers, researchers, and user
|
Invoke-AI is a community of software developers, researchers, and user
|
||||||
interface experts who have come together on a voluntary basis to build
|
interface experts who have come together on a voluntary basis to build
|
||||||
@@ -81,4 +81,5 @@ area. Disputes are resolved by open and honest communication.
|
|||||||
|
|
||||||
## Signature
|
## Signature
|
||||||
|
|
||||||
This document has been collectively crafted and approved by the current InvokeAI team members, as of 28 Nov 2022: **lstein** (Lincoln Stein), **blessedcoolant**, **hipsterusername** (Kent Keirsey), **Kyle0654** (Kyle Schouviller), **damian0815**, **mauwii** (Matthias Wild), **Netsvetaev** (Artur Netsvetaev), **psychedelicious**, **tildebyte**, **keturn**, and **ebr** (Eugene Brodsky). Although individuals within the group may hold differing views on particular details and/or their implications, we are all in agreement about its fundamental statements, as well as their significance and importance to this project moving forward.
|
This document has been collectively crafted and approved by the current InvokeAI team members, as of 28 Nov 2022: **lstein** (Lincoln Stein), **blessedcoolant**, **hipsterusername** (Kent Keirsey), **Kyle0654** (Kyle Schouviller), **damian0815**, **mauwii** (Matthias Wild), **Netsvetaev** (Artur Netsvetaev), **psychedelicious**, **tildebyte**, and **keturn**. Although individuals within the group may hold differing views on particular details and/or their implications, we are all in agreement about its fundamental statements, as well as their significance and importance to this project moving forward.
|
||||||
|
|
||||||
|
|||||||
189
LICENSE
@@ -1,176 +1,21 @@
|
|||||||
Apache License
|
MIT License
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
Copyright (c) 2022 InvokeAI Team
|
||||||
|
|
||||||
1. Definitions.
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
The above copyright notice and this permission notice shall be included in all
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
the copyright owner that is granting the License.
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
other entities that control, are controlled by, or are under common
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
control with that entity. For the purposes of this definition,
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
SOFTWARE.
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
290
LICENSE-SDXL.txt
@@ -1,290 +0,0 @@
|
|||||||
Copyright (c) 2023 Stability AI
|
|
||||||
CreativeML Open RAIL++-M License dated July 26, 2023
|
|
||||||
|
|
||||||
Section I: PREAMBLE
|
|
||||||
|
|
||||||
Multimodal generative models are being widely adopted and used, and
|
|
||||||
have the potential to transform the way artists, among other
|
|
||||||
individuals, conceive and benefit from AI or ML technologies as a tool
|
|
||||||
for content creation.
|
|
||||||
|
|
||||||
Notwithstanding the current and potential benefits that these
|
|
||||||
artifacts can bring to society at large, there are also concerns about
|
|
||||||
potential misuses of them, either due to their technical limitations
|
|
||||||
or ethical considerations.
|
|
||||||
|
|
||||||
In short, this license strives for both the open and responsible
|
|
||||||
downstream use of the accompanying model. When it comes to the open
|
|
||||||
character, we took inspiration from open source permissive licenses
|
|
||||||
regarding the grant of IP rights. Referring to the downstream
|
|
||||||
responsible use, we added use-based restrictions not permitting the
|
|
||||||
use of the model in very specific scenarios, in order for the licensor
|
|
||||||
to be able to enforce the license in case potential misuses of the
|
|
||||||
Model may occur. At the same time, we strive to promote open and
|
|
||||||
responsible research on generative models for art and content
|
|
||||||
generation.
|
|
||||||
|
|
||||||
Even though downstream derivative versions of the model could be
|
|
||||||
released under different licensing terms, the latter will always have
|
|
||||||
to include - at minimum - the same use-based restrictions as the ones
|
|
||||||
in the original license (this license). We believe in the intersection
|
|
||||||
between open and responsible AI development; thus, this agreement aims
|
|
||||||
to strike a balance between both in order to enable responsible
|
|
||||||
open-science in the field of AI.
|
|
||||||
|
|
||||||
This CreativeML Open RAIL++-M License governs the use of the model
|
|
||||||
(and its derivatives) and is informed by the model card associated
|
|
||||||
with the model.
|
|
||||||
|
|
||||||
NOW THEREFORE, You and Licensor agree as follows:
|
|
||||||
|
|
||||||
Definitions
|
|
||||||
|
|
||||||
"License" means the terms and conditions for use, reproduction, and
|
|
||||||
Distribution as defined in this document.
|
|
||||||
|
|
||||||
"Data" means a collection of information and/or content extracted from
|
|
||||||
the dataset used with the Model, including to train, pretrain, or
|
|
||||||
otherwise evaluate the Model. The Data is not licensed under this
|
|
||||||
License.
|
|
||||||
|
|
||||||
"Output" means the results of operating a Model as embodied in
|
|
||||||
informational content resulting therefrom.
|
|
||||||
|
|
||||||
"Model" means any accompanying machine-learning based assemblies
|
|
||||||
(including checkpoints), consisting of learnt weights, parameters
|
|
||||||
(including optimizer states), corresponding to the model architecture
|
|
||||||
as embodied in the Complementary Material, that have been trained or
|
|
||||||
tuned, in whole or in part on the Data, using the Complementary
|
|
||||||
Material.
|
|
||||||
|
|
||||||
"Derivatives of the Model" means all modifications to the Model, works
|
|
||||||
based on the Model, or any other model which is created or initialized
|
|
||||||
by transfer of patterns of the weights, parameters, activations or
|
|
||||||
output of the Model, to the other model, in order to cause the other
|
|
||||||
model to perform similarly to the Model, including - but not limited
|
|
||||||
to - distillation methods entailing the use of intermediate data
|
|
||||||
representations or methods based on the generation of synthetic data
|
|
||||||
by the Model for training the other model.
|
|
||||||
|
|
||||||
"Complementary Material" means the accompanying source code and
|
|
||||||
scripts used to define, run, load, benchmark or evaluate the Model,
|
|
||||||
and used to prepare data for training or evaluation, if any. This
|
|
||||||
includes any accompanying documentation, tutorials, examples, etc, if
|
|
||||||
any.
|
|
||||||
|
|
||||||
"Distribution" means any transmission, reproduction, publication or
|
|
||||||
other sharing of the Model or Derivatives of the Model to a third
|
|
||||||
party, including providing the Model as a hosted service made
|
|
||||||
available by electronic or other remote means - e.g. API-based or web
|
|
||||||
access.
|
|
||||||
|
|
||||||
"Licensor" means the copyright owner or entity authorized by the
|
|
||||||
copyright owner that is granting the License, including the persons or
|
|
||||||
entities that may have rights in the Model and/or distributing the
|
|
||||||
Model.
|
|
||||||
|
|
||||||
"You" (or "Your") means an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License and/or making use of the Model for
|
|
||||||
whichever purpose and in any field of use, including usage of the
|
|
||||||
Model in an end-use application - e.g. chatbot, translator, image
|
|
||||||
generator.
|
|
||||||
|
|
||||||
"Third Parties" means individuals or legal entities that are not under
|
|
||||||
common control with Licensor or You.
|
|
||||||
|
|
||||||
"Contribution" means any work of authorship, including the original
|
|
||||||
version of the Model and any modifications or additions to that Model
|
|
||||||
or Derivatives of the Model thereof, that is intentionally submitted
|
|
||||||
to Licensor for inclusion in the Model by the copyright owner or by an
|
|
||||||
individual or Legal Entity authorized to submit on behalf of the
|
|
||||||
copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent to
|
|
||||||
the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control
|
|
||||||
systems, and issue tracking systems that are managed by, or on behalf
|
|
||||||
of, the Licensor for the purpose of discussing and improving the
|
|
||||||
Model, but excluding communication that is conspicuously marked or
|
|
||||||
otherwise designated in writing by the copyright owner as "Not a
|
|
||||||
Contribution."
|
|
||||||
|
|
||||||
"Contributor" means Licensor and any individual or Legal Entity on
|
|
||||||
behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Model.
|
|
||||||
|
|
||||||
Section II: INTELLECTUAL PROPERTY RIGHTS
|
|
||||||
|
|
||||||
Both copyright and patent grants apply to the Model, Derivatives of
|
|
||||||
the Model and Complementary Material. The Model and Derivatives of the
|
|
||||||
Model are subject to additional terms as described in
|
|
||||||
|
|
||||||
Section III.
|
|
||||||
|
|
||||||
Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare, publicly display, publicly
|
|
||||||
perform, sublicense, and distribute the Complementary Material, the
|
|
||||||
Model, and Derivatives of the Model.
|
|
||||||
|
|
||||||
Grant of Patent License. Subject to the terms and conditions of this
|
|
||||||
License and where and as applicable, each Contributor hereby grants to
|
|
||||||
You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this paragraph) patent license to
|
|
||||||
make, have made, use, offer to sell, sell, import, and otherwise
|
|
||||||
transfer the Model and the Complementary Material, where such license
|
|
||||||
applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by
|
|
||||||
combination of their Contribution(s) with the Model to which such
|
|
||||||
Contribution(s) was submitted. If You institute patent litigation
|
|
||||||
against any entity (including a cross-claim or counterclaim in a
|
|
||||||
lawsuit) alleging that the Model and/or Complementary Material or a
|
|
||||||
Contribution incorporated within the Model and/or Complementary
|
|
||||||
Material constitutes direct or contributory patent infringement, then
|
|
||||||
any patent licenses granted to You under this License for the Model
|
|
||||||
and/or Work shall terminate as of the date such litigation is asserted
|
|
||||||
or filed.
|
|
||||||
|
|
||||||
Section III: CONDITIONS OF USAGE, DISTRIBUTION AND REDISTRIBUTION
|
|
||||||
|
|
||||||
Distribution and Redistribution. You may host for Third Party remote
|
|
||||||
access purposes (e.g. software-as-a-service), reproduce and distribute
|
|
||||||
copies of the Model or Derivatives of the Model thereof in any medium,
|
|
||||||
with or without modifications, provided that You meet the following
|
|
||||||
conditions: Use-based restrictions as referenced in paragraph 5 MUST
|
|
||||||
be included as an enforceable provision by You in any type of legal
|
|
||||||
agreement (e.g. a license) governing the use and/or distribution of
|
|
||||||
the Model or Derivatives of the Model, and You shall give notice to
|
|
||||||
subsequent users You Distribute to, that the Model or Derivatives of
|
|
||||||
the Model are subject to paragraph 5. This provision does not apply to
|
|
||||||
the use of Complementary Material. You must give any Third Party
|
|
||||||
recipients of the Model or Derivatives of the Model a copy of this
|
|
||||||
License; You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; You must retain all copyright,
|
|
||||||
patent, trademark, and attribution notices excluding those notices
|
|
||||||
that do not pertain to any part of the Model, Derivatives of the
|
|
||||||
Model. You may add Your own copyright statement to Your modifications
|
|
||||||
and may provide additional or different license terms and conditions -
|
|
||||||
respecting paragraph 4.a. - for use, reproduction, or Distribution of
|
|
||||||
Your modifications, or for any such Derivatives of the Model as a
|
|
||||||
whole, provided Your use, reproduction, and Distribution of the Model
|
|
||||||
otherwise complies with the conditions stated in this License.
|
|
||||||
|
|
||||||
Use-based restrictions. The restrictions set forth in Attachment A are
|
|
||||||
considered Use-based restrictions. Therefore You cannot use the Model
|
|
||||||
and the Derivatives of the Model for the specified restricted
|
|
||||||
uses. You may use the Model subject to this License, including only
|
|
||||||
for lawful purposes and in accordance with the License. Use may
|
|
||||||
include creating any content with, finetuning, updating, running,
|
|
||||||
training, evaluating and/or reparametrizing the Model. You shall
|
|
||||||
require all of Your users who use the Model or a Derivative of the
|
|
||||||
Model to comply with the terms of this paragraph (paragraph 5).
|
|
||||||
|
|
||||||
The Output You Generate. Except as set forth herein, Licensor claims
|
|
||||||
no rights in the Output You generate using the Model. You are
|
|
||||||
accountable for the Output you generate and its subsequent uses. No
|
|
||||||
use of the output can contravene any provision as stated in the
|
|
||||||
License.
|
|
||||||
|
|
||||||
Section IV: OTHER PROVISIONS
|
|
||||||
|
|
||||||
Updates and Runtime Restrictions. To the maximum extent permitted by
|
|
||||||
law, Licensor reserves the right to restrict (remotely or otherwise)
|
|
||||||
usage of the Model in violation of this License.
|
|
||||||
|
|
||||||
Trademarks and related. Nothing in this License permits You to make
|
|
||||||
use of Licensors’ trademarks, trade names, logos or to otherwise
|
|
||||||
suggest endorsement or misrepresent the relationship between the
|
|
||||||
parties; and any rights not expressly granted herein are reserved by
|
|
||||||
the Licensors.
|
|
||||||
|
|
||||||
Disclaimer of Warranty. Unless required by applicable law or agreed to
|
|
||||||
in writing, Licensor provides the Model and the Complementary Material
|
|
||||||
(and each Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Model, Derivatives of
|
|
||||||
the Model, and the Complementary Material and assume any risks
|
|
||||||
associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise, unless
|
|
||||||
required by applicable law (such as deliberate and grossly negligent
|
|
||||||
acts) or agreed to in writing, shall any Contributor be liable to You
|
|
||||||
for damages, including any direct, indirect, special, incidental, or
|
|
||||||
consequential damages of any character arising as a result of this
|
|
||||||
License or out of the use or inability to use the Model and the
|
|
||||||
Complementary Material (including but not limited to damages for loss
|
|
||||||
of goodwill, work stoppage, computer failure or malfunction, or any
|
|
||||||
and all other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
Accepting Warranty or Additional Liability. While redistributing the
|
|
||||||
Model, Derivatives of the Model and the Complementary Material
|
|
||||||
thereof, You may choose to offer, and charge a fee for, acceptance of
|
|
||||||
support, warranty, indemnity, or other liability obligations and/or
|
|
||||||
rights consistent with this License. However, in accepting such
|
|
||||||
obligations, You may act only on Your own behalf and on Your sole
|
|
||||||
responsibility, not on behalf of any other Contributor, and only if
|
|
||||||
You agree to indemnify, defend, and hold each Contributor harmless for
|
|
||||||
any liability incurred by, or claims asserted against, such
|
|
||||||
Contributor by reason of your accepting any such warranty or
|
|
||||||
additional liability.
|
|
||||||
|
|
||||||
If any provision of this License is held to be invalid, illegal or
|
|
||||||
unenforceable, the remaining provisions shall be unaffected thereby
|
|
||||||
and remain valid as if such provision had not been set forth herein.
|
|
||||||
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
Attachment A
|
|
||||||
|
|
||||||
Use Restrictions
|
|
||||||
|
|
||||||
You agree not to use the Model or Derivatives of the Model:
|
|
||||||
|
|
||||||
* In any way that violates any applicable national, federal, state,
|
|
||||||
local or international law or regulation;
|
|
||||||
|
|
||||||
* For the purpose of exploiting, harming or attempting to exploit or
|
|
||||||
harm minors in any way;
|
|
||||||
|
|
||||||
* To generate or disseminate verifiably false information and/or
|
|
||||||
content with the purpose of harming others;
|
|
||||||
|
|
||||||
* To generate or disseminate personal identifiable information that
|
|
||||||
can be used to harm an individual;
|
|
||||||
|
|
||||||
* To defame, disparage or otherwise harass others;
|
|
||||||
|
|
||||||
* For fully automated decision making that adversely impacts an
|
|
||||||
individual’s legal rights or otherwise creates or modifies a
|
|
||||||
binding, enforceable obligation;
|
|
||||||
|
|
||||||
* For any use intended to or which has the effect of discriminating
|
|
||||||
against or harming individuals or groups based on online or offline
|
|
||||||
social behavior or known or predicted personal or personality
|
|
||||||
characteristics;
|
|
||||||
|
|
||||||
* To exploit any of the vulnerabilities of a specific group of persons
|
|
||||||
based on their age, social, physical or mental characteristics, in
|
|
||||||
order to materially distort the behavior of a person pertaining to
|
|
||||||
that group in a manner that causes or is likely to cause that person
|
|
||||||
or another person physical or psychological harm;
|
|
||||||
|
|
||||||
* For any use intended to or which has the effect of discriminating
|
|
||||||
against individuals or groups based on legally protected
|
|
||||||
characteristics or categories;
|
|
||||||
|
|
||||||
* To provide medical advice and medical results interpretation;
|
|
||||||
|
|
||||||
* To generate or disseminate information for the purpose to be used
|
|
||||||
for administration of justice, law enforcement, immigration or
|
|
||||||
asylum processes, such as predicting an individual will commit
|
|
||||||
fraud/crime commitment (e.g. by text profiling, drawing causal
|
|
||||||
relationships between assertions made in documents, indiscriminate
|
|
||||||
and arbitrarily-targeted use).
|
|
||||||
|
|
||||||
82
Makefile
@@ -1,82 +0,0 @@
|
|||||||
# simple Makefile with scripts that are otherwise hard to remember
|
|
||||||
# to use, run from the repo root `make <command>`
|
|
||||||
|
|
||||||
default: help
|
|
||||||
|
|
||||||
help:
|
|
||||||
@echo Developer commands:
|
|
||||||
@echo
|
|
||||||
@echo "ruff Run ruff, fixing any safely-fixable errors and formatting"
|
|
||||||
@echo "ruff-unsafe Run ruff, fixing all fixable errors and formatting"
|
|
||||||
@echo "mypy Run mypy using the config in pyproject.toml to identify type mismatches and other coding errors"
|
|
||||||
@echo "mypy-all Run mypy ignoring the config in pyproject.tom but still ignoring missing imports"
|
|
||||||
@echo "test Run the unit tests."
|
|
||||||
@echo "update-config-docstring Update the app's config docstring so mkdocs can autogenerate it correctly."
|
|
||||||
@echo "frontend-install Install the pnpm modules needed for the front end"
|
|
||||||
@echo "frontend-build Build the frontend in order to run on localhost:9090"
|
|
||||||
@echo "frontend-dev Run the frontend in developer mode on localhost:5173"
|
|
||||||
@echo "frontend-typegen Generate types for the frontend from the OpenAPI schema"
|
|
||||||
@echo "wheel Build the wheel for the current version"
|
|
||||||
@echo "tag-release Tag the GitHub repository with the current version (use at release time only!)"
|
|
||||||
@echo "openapi Generate the OpenAPI schema for the app, outputting to stdout"
|
|
||||||
@echo "docs Serve the mkdocs site with live reload"
|
|
||||||
|
|
||||||
# Runs ruff, fixing any safely-fixable errors and formatting
|
|
||||||
ruff:
|
|
||||||
ruff check . --fix
|
|
||||||
ruff format .
|
|
||||||
|
|
||||||
# Runs ruff, fixing all errors it can fix and formatting
|
|
||||||
ruff-unsafe:
|
|
||||||
ruff check . --fix --unsafe-fixes
|
|
||||||
ruff format .
|
|
||||||
|
|
||||||
# Runs mypy, using the config in pyproject.toml
|
|
||||||
mypy:
|
|
||||||
mypy scripts/invokeai-web.py
|
|
||||||
|
|
||||||
# Runs mypy, ignoring the config in pyproject.toml but still ignoring missing (untyped) imports
|
|
||||||
# (many files are ignored by the config, so this is useful for checking all files)
|
|
||||||
mypy-all:
|
|
||||||
mypy scripts/invokeai-web.py --config-file= --ignore-missing-imports
|
|
||||||
|
|
||||||
# Run the unit tests
|
|
||||||
test:
|
|
||||||
pytest ./tests
|
|
||||||
|
|
||||||
# Update config docstring
|
|
||||||
update-config-docstring:
|
|
||||||
python scripts/update_config_docstring.py
|
|
||||||
|
|
||||||
# Install the pnpm modules needed for the front end
|
|
||||||
frontend-install:
|
|
||||||
rm -rf invokeai/frontend/web/node_modules
|
|
||||||
cd invokeai/frontend/web && pnpm install
|
|
||||||
|
|
||||||
# Build the frontend
|
|
||||||
frontend-build:
|
|
||||||
cd invokeai/frontend/web && pnpm build
|
|
||||||
|
|
||||||
# Run the frontend in dev mode
|
|
||||||
frontend-dev:
|
|
||||||
cd invokeai/frontend/web && pnpm dev
|
|
||||||
|
|
||||||
frontend-typegen:
|
|
||||||
cd invokeai/frontend/web && python ../../../scripts/generate_openapi_schema.py | pnpm typegen
|
|
||||||
|
|
||||||
# Tag the release
|
|
||||||
wheel:
|
|
||||||
cd scripts && ./build_wheel.sh
|
|
||||||
|
|
||||||
# Tag the release
|
|
||||||
tag-release:
|
|
||||||
cd scripts && ./tag_release.sh
|
|
||||||
|
|
||||||
# Generate the OpenAPI Schema for the app
|
|
||||||
openapi:
|
|
||||||
python scripts/generate_openapi_schema.py
|
|
||||||
|
|
||||||
# Serve the mkdocs site w/ live reload
|
|
||||||
.PHONY: docs
|
|
||||||
docs:
|
|
||||||
mkdocs serve
|
|
||||||
284
README.md
@@ -1,103 +1,23 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||

|
# InvokeAI: A Stable Diffusion Toolkit
|
||||||
|
|
||||||
# Invoke - Professional Creative AI Tools for Visual Media
|
_Formerly known as lstein/stable-diffusion_
|
||||||
|
|
||||||
#### To learn more about Invoke, or implement our Business solutions, visit [invoke.com]
|

|
||||||
|
|
||||||
[![discord badge]][discord link] [![latest release badge]][latest release link] [![github stars badge]][github stars link] [![github forks badge]][github forks link] [![CI checks on main badge]][CI checks on main link] [![latest commit to main badge]][latest commit to main link] [![github open issues badge]][github open issues link] [![github open prs badge]][github open prs link] [![translation status badge]][translation status link]
|
[![discord badge]][discord link]
|
||||||
|
|
||||||
</div>
|
[![latest release badge]][latest release link] [![github stars badge]][github stars link] [![github forks badge]][github forks link]
|
||||||
|
|
||||||
Invoke is a leading creative engine built to empower professionals and enthusiasts alike. Generate and create stunning visual media using the latest AI-driven technologies. Invoke offers an industry leading web-based UI, and serves as the foundation for multiple commercial products.
|
[![CI checks on main badge]][CI checks on main link] [![CI checks on dev badge]][CI checks on dev link] [![latest commit to dev badge]][latest commit to dev link]
|
||||||
|
|
||||||
Invoke is available in two editions:
|
[![github open issues badge]][github open issues link] [![github open prs badge]][github open prs link]
|
||||||
|
|
||||||
| **Community Edition** | **Professional Edition** |
|
[CI checks on dev badge]: https://flat.badgen.net/github/checks/invoke-ai/InvokeAI/development?label=CI%20status%20on%20dev&cache=900&icon=github
|
||||||
|----------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|
|
[CI checks on dev link]: https://github.com/invoke-ai/InvokeAI/actions?query=branch%3Adevelopment
|
||||||
| **For users looking for a locally installed, self-hosted and self-managed service** | **For users or teams looking for a cloud-hosted, fully managed service** |
|
|
||||||
| - Free to use under a commercially-friendly license | - Monthly subscription fee with three different plan levels |
|
|
||||||
| - Download and install on compatible hardware | - Offers additional benefits, including multi-user support, improved model training, and more |
|
|
||||||
| - Includes all core studio features: generate, refine, iterate on images, and build workflows | - Hosted in the cloud for easy, secure model access and scalability |
|
|
||||||
| Quick Start -> [Installation and Updates][installation docs] | More Information -> [www.invoke.com/pricing](https://www.invoke.com/pricing) |
|
|
||||||
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
# Documentation
|
|
||||||
| **Quick Links** |
|
|
||||||
|----------------------------------------------------------------------------------------------------------------------------|
|
|
||||||
| [Installation and Updates][installation docs] - [Documentation and Tutorials][docs home] - [Bug Reports][github issues] - [Contributing][contributing docs] |
|
|
||||||
|
|
||||||
# Installation
|
|
||||||
|
|
||||||
To get started with Invoke, [Download the Installer](https://www.invoke.com/downloads).
|
|
||||||
|
|
||||||
For detailed step by step instructions, or for instructions on manual/docker installations, visit our documentation on [Installation and Updates][installation docs]
|
|
||||||
|
|
||||||
|
|
||||||
## Troubleshooting, FAQ and Support
|
|
||||||
|
|
||||||
Please review our [FAQ][faq] for solutions to common installation problems and other issues.
|
|
||||||
|
|
||||||
For more help, please join our [Discord][discord link].
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
Full details on features can be found in [our documentation][features docs].
|
|
||||||
|
|
||||||
### Web Server & UI
|
|
||||||
|
|
||||||
Invoke runs a locally hosted web server & React UI with an industry-leading user experience.
|
|
||||||
|
|
||||||
### Unified Canvas
|
|
||||||
|
|
||||||
The Unified Canvas is a fully integrated canvas implementation with support for all core generation capabilities, in/out-painting, brush tools, and more. This creative tool unlocks the capability for artists to create with AI as a creative collaborator, and can be used to augment AI-generated imagery, sketches, photography, renders, and more.
|
|
||||||
|
|
||||||
### Workflows & Nodes
|
|
||||||
|
|
||||||
Invoke offers a fully featured workflow management solution, enabling users to combine the power of node-based workflows with the easy of a UI. This allows for customizable generation pipelines to be developed and shared by users looking to create specific workflows to support their production use-cases.
|
|
||||||
|
|
||||||
### Board & Gallery Management
|
|
||||||
|
|
||||||
Invoke features an organized gallery system for easily storing, accessing, and remixing your content in the Invoke workspace. Images can be dragged/dropped onto any Image-base UI element in the application, and rich metadata within the Image allows for easy recall of key prompts or settings used in your workflow.
|
|
||||||
|
|
||||||
### Other features
|
|
||||||
|
|
||||||
- Support for both ckpt and diffusers models
|
|
||||||
- SD1.5, SD2.0, SDXL, and FLUX support
|
|
||||||
- Upscaling Tools
|
|
||||||
- Embedding Manager & Support
|
|
||||||
- Model Manager & Support
|
|
||||||
- Workflow creation & management
|
|
||||||
- Node-Based Architecture
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Anyone who wishes to contribute to this project - whether documentation, features, bug fixes, code cleanup, testing, or code reviews - is very much encouraged to do so.
|
|
||||||
|
|
||||||
Get started with contributing by reading our [contribution documentation][contributing docs], joining the [#dev-chat] or the GitHub discussion board.
|
|
||||||
|
|
||||||
We hope you enjoy using Invoke as much as we enjoy creating it, and we hope you will elect to become part of our community.
|
|
||||||
|
|
||||||
## Thanks
|
|
||||||
|
|
||||||
Invoke is a combined effort of [passionate and talented people from across the world][contributors]. We thank them for their time, hard work and effort.
|
|
||||||
|
|
||||||
Original portions of the software are Copyright © 2024 by respective contributors.
|
|
||||||
|
|
||||||
[features docs]: https://invoke-ai.github.io/InvokeAI/features/database/
|
|
||||||
[faq]: https://invoke-ai.github.io/InvokeAI/faq/
|
|
||||||
[contributors]: https://invoke-ai.github.io/InvokeAI/contributing/contributors/
|
|
||||||
[invoke.com]: https://www.invoke.com/about
|
|
||||||
[github issues]: https://github.com/invoke-ai/InvokeAI/issues
|
|
||||||
[docs home]: https://invoke-ai.github.io/InvokeAI
|
|
||||||
[installation docs]: https://invoke-ai.github.io/InvokeAI/installation/
|
|
||||||
[#dev-chat]: https://discord.com/channels/1020123559063990373/1049495067846524939
|
|
||||||
[contributing docs]: https://invoke-ai.github.io/InvokeAI/contributing/
|
|
||||||
[CI checks on main badge]: https://flat.badgen.net/github/checks/invoke-ai/InvokeAI/main?label=CI%20status%20on%20main&cache=900&icon=github
|
[CI checks on main badge]: https://flat.badgen.net/github/checks/invoke-ai/InvokeAI/main?label=CI%20status%20on%20main&cache=900&icon=github
|
||||||
[CI checks on main link]: https://github.com/invoke-ai/InvokeAI/actions?query=branch%3Amain
|
[CI checks on main link]: https://github.com/invoke-ai/InvokeAI/actions/workflows/test-invoke-conda.yml
|
||||||
[discord badge]: https://flat.badgen.net/discord/members/ZmtBAhwWhy?icon=discord
|
[discord badge]: https://flat.badgen.net/discord/members/ZmtBAhwWhy?icon=discord
|
||||||
[discord link]: https://discord.gg/ZmtBAhwWhy
|
[discord link]: https://discord.gg/ZmtBAhwWhy
|
||||||
[github forks badge]: https://flat.badgen.net/github/forks/invoke-ai/InvokeAI?icon=github
|
[github forks badge]: https://flat.badgen.net/github/forks/invoke-ai/InvokeAI?icon=github
|
||||||
@@ -108,11 +28,181 @@ Original portions of the software are Copyright © 2024 by respective contributo
|
|||||||
[github open prs link]: https://github.com/invoke-ai/InvokeAI/pulls?q=is%3Apr+is%3Aopen
|
[github open prs link]: https://github.com/invoke-ai/InvokeAI/pulls?q=is%3Apr+is%3Aopen
|
||||||
[github stars badge]: https://flat.badgen.net/github/stars/invoke-ai/InvokeAI?icon=github
|
[github stars badge]: https://flat.badgen.net/github/stars/invoke-ai/InvokeAI?icon=github
|
||||||
[github stars link]: https://github.com/invoke-ai/InvokeAI/stargazers
|
[github stars link]: https://github.com/invoke-ai/InvokeAI/stargazers
|
||||||
[latest commit to main badge]: https://flat.badgen.net/github/last-commit/invoke-ai/InvokeAI/main?icon=github&color=yellow&label=last%20dev%20commit&cache=900
|
[latest commit to dev badge]: https://flat.badgen.net/github/last-commit/invoke-ai/InvokeAI/development?icon=github&color=yellow&label=last%20dev%20commit&cache=900
|
||||||
[latest commit to main link]: https://github.com/invoke-ai/InvokeAI/commits/main
|
[latest commit to dev link]: https://github.com/invoke-ai/InvokeAI/commits/development
|
||||||
[latest release badge]: https://flat.badgen.net/github/release/invoke-ai/InvokeAI/development?icon=github
|
[latest release badge]: https://flat.badgen.net/github/release/invoke-ai/InvokeAI/development?icon=github
|
||||||
[latest release link]: https://github.com/invoke-ai/InvokeAI/releases/latest
|
[latest release link]: https://github.com/invoke-ai/InvokeAI/releases
|
||||||
[translation status badge]: https://hosted.weblate.org/widgets/invokeai/-/svg-badge.svg
|
</div>
|
||||||
[translation status link]: https://hosted.weblate.org/engage/invokeai/
|
|
||||||
[nvidia docker docs]: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
|
This is a fork of
|
||||||
[amd docker docs]: https://rocm.docs.amd.com/projects/install-on-linux/en/latest/how-to/docker.html
|
[CompVis/stable-diffusion](https://github.com/CompVis/stable-diffusion),
|
||||||
|
the open source text-to-image generator. It provides a streamlined
|
||||||
|
process with various new features and options to aid the image
|
||||||
|
generation process. It runs on Windows, Mac and Linux machines, with
|
||||||
|
GPU cards with as little as 4 GB of RAM. It provides both a polished
|
||||||
|
Web interface (see below), and an easy-to-use command-line interface.
|
||||||
|
|
||||||
|
**Quick links**: [<a href="https://discord.gg/ZmtBAhwWhy">Discord Server</a>] [<a href="https://invoke-ai.github.io/InvokeAI/">Documentation and Tutorials</a>] [<a href="https://github.com/invoke-ai/InvokeAI/">Code and Downloads</a>] [<a href="https://github.com/invoke-ai/InvokeAI/issues">Bug Reports</a>] [<a href="https://github.com/invoke-ai/InvokeAI/discussions">Discussion, Ideas & Q&A</a>]
|
||||||
|
|
||||||
|
<div align="center"><img src="docs/assets/invoke-web-server-1.png" width=640></div>
|
||||||
|
|
||||||
|
|
||||||
|
_Note: This fork is rapidly evolving. Please use the
|
||||||
|
[Issues](https://github.com/invoke-ai/InvokeAI/issues) tab to report bugs and make feature
|
||||||
|
requests. Be sure to use the provided templates. They will help aid diagnose issues faster._
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
1. [Installation](#installation)
|
||||||
|
2. [Hardware Requirements](#hardware-requirements)
|
||||||
|
3. [Features](#features)
|
||||||
|
4. [Latest Changes](#latest-changes)
|
||||||
|
5. [Troubleshooting](#troubleshooting)
|
||||||
|
6. [Contributing](#contributing)
|
||||||
|
7. [Contributors](#contributors)
|
||||||
|
8. [Support](#support)
|
||||||
|
9. [Further Reading](#further-reading)
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
This fork is supported across Linux, Windows and Macintosh. Linux
|
||||||
|
users can use either an Nvidia-based card (with CUDA support) or an
|
||||||
|
AMD card (using the ROCm driver). For full installation and upgrade
|
||||||
|
instructions, please see:
|
||||||
|
[InvokeAI Installation Overview](https://invoke-ai.github.io/InvokeAI/installation/)
|
||||||
|
|
||||||
|
### Hardware Requirements
|
||||||
|
|
||||||
|
#### System
|
||||||
|
|
||||||
|
You wil need one of the following:
|
||||||
|
|
||||||
|
- An NVIDIA-based graphics card with 4 GB or more VRAM memory.
|
||||||
|
- An Apple computer with an M1 chip.
|
||||||
|
|
||||||
|
#### Memory
|
||||||
|
|
||||||
|
- At least 12 GB Main Memory RAM.
|
||||||
|
|
||||||
|
#### Disk
|
||||||
|
|
||||||
|
- At least 12 GB of free disk space for the machine learning model, Python, and all its dependencies.
|
||||||
|
|
||||||
|
**Note**
|
||||||
|
|
||||||
|
If you have a Nvidia 10xx series card (e.g. the 1080ti), please
|
||||||
|
run the dream script in full-precision mode as shown below.
|
||||||
|
|
||||||
|
Similarly, specify full-precision mode on Apple M1 hardware.
|
||||||
|
|
||||||
|
Precision is auto configured based on the device. If however you encounter
|
||||||
|
errors like 'expected type Float but found Half' or 'not implemented for Half'
|
||||||
|
you can try starting `invoke.py` with the `--precision=float32` flag:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
(invokeai) ~/InvokeAI$ python scripts/invoke.py --precision=float32
|
||||||
|
```
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
#### Major Features
|
||||||
|
|
||||||
|
- [Web Server](https://invoke-ai.github.io/InvokeAI/features/WEB/)
|
||||||
|
- [Interactive Command Line Interface](https://invoke-ai.github.io/InvokeAI/features/CLI/)
|
||||||
|
- [Image To Image](https://invoke-ai.github.io/InvokeAI/features/IMG2IMG/)
|
||||||
|
- [Inpainting Support](https://invoke-ai.github.io/InvokeAI/features/INPAINTING/)
|
||||||
|
- [Outpainting Support](https://invoke-ai.github.io/InvokeAI/features/OUTPAINTING/)
|
||||||
|
- [Upscaling, face-restoration and outpainting](https://invoke-ai.github.io/InvokeAI/features/POSTPROCESS/)
|
||||||
|
- [Reading Prompts From File](https://invoke-ai.github.io/InvokeAI/features/PROMPTS/#reading-prompts-from-a-file)
|
||||||
|
- [Prompt Blending](https://invoke-ai.github.io/InvokeAI/features/PROMPTS/#prompt-blending)
|
||||||
|
- [Thresholding and Perlin Noise Initialization Options](https://invoke-ai.github.io/InvokeAI/features/OTHER/#thresholding-and-perlin-noise-initialization-options)
|
||||||
|
- [Negative/Unconditioned Prompts](https://invoke-ai.github.io/InvokeAI/features/PROMPTS/#negative-and-unconditioned-prompts)
|
||||||
|
- [Variations](https://invoke-ai.github.io/InvokeAI/features/VARIATIONS/)
|
||||||
|
- [Personalizing Text-to-Image Generation](https://invoke-ai.github.io/InvokeAI/features/TEXTUAL_INVERSION/)
|
||||||
|
- [Simplified API for text to image generation](https://invoke-ai.github.io/InvokeAI/features/OTHER/#simplified-api)
|
||||||
|
|
||||||
|
#### Other Features
|
||||||
|
|
||||||
|
- [Google Colab](https://invoke-ai.github.io/InvokeAI/features/OTHER/#google-colab)
|
||||||
|
- [Seamless Tiling](https://invoke-ai.github.io/InvokeAI/features/OTHER/#seamless-tiling)
|
||||||
|
- [Shortcut: Reusing Seeds](https://invoke-ai.github.io/InvokeAI/features/OTHER/#shortcuts-reusing-seeds)
|
||||||
|
- [Preload Models](https://invoke-ai.github.io/InvokeAI/features/OTHER/#preload-models)
|
||||||
|
|
||||||
|
### Latest Changes
|
||||||
|
|
||||||
|
- v2.0.1 (13 October 2022)
|
||||||
|
- fix noisy images at high step count when using k* samplers
|
||||||
|
- dream.py script now calls invoke.py module directly rather than
|
||||||
|
via a new python process (which could break the environment)
|
||||||
|
|
||||||
|
- v2.0.0 (9 October 2022)
|
||||||
|
|
||||||
|
- `dream.py` script renamed `invoke.py`. A `dream.py` script wrapper remains
|
||||||
|
for backward compatibility.
|
||||||
|
- Completely new WebGUI - launch with `python3 scripts/invoke.py --web`
|
||||||
|
- Support for <a href="https://invoke-ai.github.io/InvokeAI/features/INPAINTING/">inpainting</a> and <a href="https://invoke-ai.github.io/InvokeAI/features/OUTPAINTING/">outpainting</a>
|
||||||
|
- img2img runs on all k* samplers
|
||||||
|
- Support for <a href="https://invoke-ai.github.io/InvokeAI/features/PROMPTS/#negative-and-unconditioned-prompts">negative prompts</a>
|
||||||
|
- Support for CodeFormer face reconstruction
|
||||||
|
- Support for Textual Inversion on Macintoshes
|
||||||
|
- Support in both WebGUI and CLI for <a href="https://invoke-ai.github.io/InvokeAI/features/POSTPROCESS/">post-processing of previously-generated images</a>
|
||||||
|
using facial reconstruction, ESRGAN upscaling, outcropping (similar to DALL-E infinite canvas),
|
||||||
|
and "embiggen" upscaling. See the `!fix` command.
|
||||||
|
- New `--hires` option on `invoke>` line allows <a href="https://invoke-ai.github.io/InvokeAI/features/CLI/#txt2img">larger images to be created without duplicating elements</a>, at the cost of some performance.
|
||||||
|
- New `--perlin` and `--threshold` options allow you to add and control variation
|
||||||
|
during image generation (see <a href="https://github.com/invoke-ai/InvokeAI/blob/main/docs/features/OTHER.md#thresholding-and-perlin-noise-initialization-options">Thresholding and Perlin Noise Initialization</a>
|
||||||
|
- Extensive metadata now written into PNG files, allowing reliable regeneration of images
|
||||||
|
and tweaking of previous settings.
|
||||||
|
- Command-line completion in `invoke.py` now works on Windows, Linux and Mac platforms.
|
||||||
|
- Improved <a href="https://invoke-ai.github.io/InvokeAI/features/CLI/">command-line completion behavior</a>.
|
||||||
|
New commands added:
|
||||||
|
- List command-line history with `!history`
|
||||||
|
- Search command-line history with `!search`
|
||||||
|
- Clear history with `!clear`
|
||||||
|
- Deprecated `--full_precision` / `-F`. Simply omit it and `invoke.py` will auto
|
||||||
|
configure. To switch away from auto use the new flag like `--precision=float32`.
|
||||||
|
|
||||||
|
For older changelogs, please visit the **[CHANGELOG](https://invoke-ai.github.io/InvokeAI/CHANGELOG#v114-11-september-2022)**.
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
Please check out our **[Q&A](https://invoke-ai.github.io/InvokeAI/help/TROUBLESHOOT/#faq)** to get solutions for common installation
|
||||||
|
problems and other issues.
|
||||||
|
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
Anyone who wishes to contribute to this project, whether documentation, features, bug fixes, code
|
||||||
|
cleanup, testing, or code reviews, is very much encouraged to do so. To join, just raise your hand on the InvokeAI
|
||||||
|
Discord server or discussion board.
|
||||||
|
|
||||||
|
If you are unfamiliar with how
|
||||||
|
to contribute to GitHub projects, here is a
|
||||||
|
[Getting Started Guide](https://opensource.com/article/19/7/create-pull-request-github). A full set of contribution guidelines, along with templates, are in progress, but for now the most
|
||||||
|
important thing is to **make your pull request against the "development" branch**, and not against
|
||||||
|
"main". This will help keep public breakage to a minimum and will allow you to propose more radical
|
||||||
|
changes.
|
||||||
|
|
||||||
|
We hope you enjoy using our software as much as we enjoy creating it,
|
||||||
|
and we hope that some of those of you who are reading this will elect
|
||||||
|
to become part of our community.
|
||||||
|
|
||||||
|
Welcome to InvokeAI!
|
||||||
|
|
||||||
|
### Contributors
|
||||||
|
|
||||||
|
This fork is a combined effort of various people from across the world.
|
||||||
|
[Check out the list of all these amazing people](https://invoke-ai.github.io/InvokeAI/other/CONTRIBUTORS/). We thank them for
|
||||||
|
their time, hard work and effort.
|
||||||
|
|
||||||
|
### Support
|
||||||
|
|
||||||
|
For support, please use this repository's GitHub Issues tracking service. Feel free to send me an
|
||||||
|
email if you use and like the script.
|
||||||
|
|
||||||
|
Original portions of the software are Copyright (c) 2020
|
||||||
|
[Lincoln D. Stein](https://github.com/lstein)
|
||||||
|
|
||||||
|
### Further Reading
|
||||||
|
|
||||||
|
Please see the original README for more information on this software and underlying algorithm,
|
||||||
|
located in the file [README-CompViz.md](https://invoke-ai.github.io/InvokeAI/other/README-CompViz/).
|
||||||
|
|||||||
14
SECURITY.md
@@ -1,14 +0,0 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
## Supported Versions
|
|
||||||
|
|
||||||
Only the latest version of Invoke will receive security updates.
|
|
||||||
We do not currently maintain multiple versions of the application with updates.
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
|
||||||
|
|
||||||
To report a vulnerability, contact the Invoke team directly at security@invoke.ai
|
|
||||||
|
|
||||||
At this time, we do not maintain a formal bug bounty program.
|
|
||||||
|
|
||||||
You can also share identified security issues with our team on huntr.com
|
|
||||||
@@ -21,7 +21,7 @@ This model card focuses on the model associated with the Stable Diffusion model,
|
|||||||
|
|
||||||
# Uses
|
# Uses
|
||||||
|
|
||||||
## Direct Use
|
## Direct Use
|
||||||
The model is intended for research purposes only. Possible research areas and
|
The model is intended for research purposes only. Possible research areas and
|
||||||
tasks include
|
tasks include
|
||||||
|
|
||||||
@@ -68,11 +68,11 @@ Using the model to generate content that is cruel to individuals is a misuse of
|
|||||||
considerations.
|
considerations.
|
||||||
|
|
||||||
### Bias
|
### Bias
|
||||||
While the capabilities of image generation models are impressive, they can also reinforce or exacerbate social biases.
|
While the capabilities of image generation models are impressive, they can also reinforce or exacerbate social biases.
|
||||||
Stable Diffusion v1 was trained on subsets of [LAION-2B(en)](https://laion.ai/blog/laion-5b/),
|
Stable Diffusion v1 was trained on subsets of [LAION-2B(en)](https://laion.ai/blog/laion-5b/),
|
||||||
which consists of images that are primarily limited to English descriptions.
|
which consists of images that are primarily limited to English descriptions.
|
||||||
Texts and images from communities and cultures that use other languages are likely to be insufficiently accounted for.
|
Texts and images from communities and cultures that use other languages are likely to be insufficiently accounted for.
|
||||||
This affects the overall output of the model, as white and western cultures are often set as the default. Further, the
|
This affects the overall output of the model, as white and western cultures are often set as the default. Further, the
|
||||||
ability of the model to generate content with non-English prompts is significantly worse than with English-language prompts.
|
ability of the model to generate content with non-English prompts is significantly worse than with English-language prompts.
|
||||||
|
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ The model developers used the following dataset for training the model:
|
|||||||
- LAION-2B (en) and subsets thereof (see next section)
|
- LAION-2B (en) and subsets thereof (see next section)
|
||||||
|
|
||||||
**Training Procedure**
|
**Training Procedure**
|
||||||
Stable Diffusion v1 is a latent diffusion model which combines an autoencoder with a diffusion model that is trained in the latent space of the autoencoder. During training,
|
Stable Diffusion v1 is a latent diffusion model which combines an autoencoder with a diffusion model that is trained in the latent space of the autoencoder. During training,
|
||||||
|
|
||||||
- Images are encoded through an encoder, which turns images into latent representations. The autoencoder uses a relative downsampling factor of 8 and maps images of shape H x W x 3 to latents of shape H/f x W/f x 4
|
- Images are encoded through an encoder, which turns images into latent representations. The autoencoder uses a relative downsampling factor of 8 and maps images of shape H x W x 3 to latents of shape H/f x W/f x 4
|
||||||
- Text prompts are encoded through a ViT-L/14 text-encoder.
|
- Text prompts are encoded through a ViT-L/14 text-encoder.
|
||||||
@@ -108,12 +108,12 @@ filtered to images with an original size `>= 512x512`, estimated aesthetics scor
|
|||||||
- **Batch:** 32 x 8 x 2 x 4 = 2048
|
- **Batch:** 32 x 8 x 2 x 4 = 2048
|
||||||
- **Learning rate:** warmup to 0.0001 for 10,000 steps and then kept constant
|
- **Learning rate:** warmup to 0.0001 for 10,000 steps and then kept constant
|
||||||
|
|
||||||
## Evaluation Results
|
## Evaluation Results
|
||||||
Evaluations with different classifier-free guidance scales (1.5, 2.0, 3.0, 4.0,
|
Evaluations with different classifier-free guidance scales (1.5, 2.0, 3.0, 4.0,
|
||||||
5.0, 6.0, 7.0, 8.0) and 50 PLMS sampling
|
5.0, 6.0, 7.0, 8.0) and 50 PLMS sampling
|
||||||
steps show the relative improvements of the checkpoints:
|
steps show the relative improvements of the checkpoints:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Evaluated using 50 PLMS steps and 10000 random prompts from the COCO2017 validation set, evaluated at 512x512 resolution. Not optimized for FID scores.
|
Evaluated using 50 PLMS steps and 10000 random prompts from the COCO2017 validation set, evaluated at 512x512 resolution. Not optimized for FID scores.
|
||||||
## Environmental Impact
|
## Environmental Impact
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 651 KiB After Width: | Height: | Size: 651 KiB |
|
Before Width: | Height: | Size: 596 KiB After Width: | Height: | Size: 596 KiB |
|
Before Width: | Height: | Size: 609 KiB After Width: | Height: | Size: 609 KiB |
|
Before Width: | Height: | Size: 548 KiB After Width: | Height: | Size: 548 KiB |
|
Before Width: | Height: | Size: 705 KiB After Width: | Height: | Size: 705 KiB |
|
Before Width: | Height: | Size: 757 KiB After Width: | Height: | Size: 757 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 466 KiB After Width: | Height: | Size: 466 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 539 KiB After Width: | Height: | Size: 539 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 450 KiB After Width: | Height: | Size: 450 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 553 KiB After Width: | Height: | Size: 553 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 418 KiB After Width: | Height: | Size: 418 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 542 KiB After Width: | Height: | Size: 542 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 395 KiB After Width: | Height: | Size: 395 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 465 KiB After Width: | Height: | Size: 465 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 612 KiB After Width: | Height: | Size: 612 KiB |
|
Before Width: | Height: | Size: 312 KiB After Width: | Height: | Size: 312 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 319 KiB After Width: | Height: | Size: 319 KiB |
|
Before Width: | Height: | Size: 788 KiB After Width: | Height: | Size: 788 KiB |
|
Before Width: | Height: | Size: 958 KiB After Width: | Height: | Size: 958 KiB |
|
Before Width: | Height: | Size: 9.4 MiB After Width: | Height: | Size: 9.4 MiB |
|
Before Width: | Height: | Size: 610 KiB After Width: | Height: | Size: 610 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 945 KiB After Width: | Height: | Size: 945 KiB |
|
Before Width: | Height: | Size: 972 KiB After Width: | Height: | Size: 972 KiB |
|
Before Width: | Height: | Size: 662 KiB After Width: | Height: | Size: 662 KiB |
|
Before Width: | Height: | Size: 302 KiB After Width: | Height: | Size: 302 KiB |
|
Before Width: | Height: | Size: 2.2 MiB After Width: | Height: | Size: 2.2 MiB |
1626
backend/invoke_ai_web_server.py
Normal file
55
backend/modules/create_cmd_parser.py
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
from ldm.invoke.args import PRECISION_CHOICES
|
||||||
|
|
||||||
|
|
||||||
|
def create_cmd_parser():
|
||||||
|
parser = argparse.ArgumentParser(description="InvokeAI web UI")
|
||||||
|
parser.add_argument(
|
||||||
|
"--host",
|
||||||
|
type=str,
|
||||||
|
help="The host to serve on",
|
||||||
|
default="localhost",
|
||||||
|
)
|
||||||
|
parser.add_argument("--port", type=int, help="The port to serve on", default=9090)
|
||||||
|
parser.add_argument(
|
||||||
|
"--cors",
|
||||||
|
nargs="*",
|
||||||
|
type=str,
|
||||||
|
help="Additional allowed origins, comma-separated",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--embedding_path",
|
||||||
|
type=str,
|
||||||
|
help="Path to a pre-trained embedding manager checkpoint - can only be set on command line",
|
||||||
|
)
|
||||||
|
# TODO: Can't get flask to serve images from any dir (saving to the dir does work when specified)
|
||||||
|
# parser.add_argument(
|
||||||
|
# "--output_dir",
|
||||||
|
# default="outputs/",
|
||||||
|
# type=str,
|
||||||
|
# help="Directory for output images",
|
||||||
|
# )
|
||||||
|
parser.add_argument(
|
||||||
|
"-v",
|
||||||
|
"--verbose",
|
||||||
|
action="store_true",
|
||||||
|
help="Enables verbose logging",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--precision",
|
||||||
|
dest="precision",
|
||||||
|
type=str,
|
||||||
|
choices=PRECISION_CHOICES,
|
||||||
|
metavar="PRECISION",
|
||||||
|
help=f'Set model precision. Defaults to auto selected based on device. Options: {", ".join(PRECISION_CHOICES)}',
|
||||||
|
default="auto",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--free_gpu_mem',
|
||||||
|
dest='free_gpu_mem',
|
||||||
|
action='store_true',
|
||||||
|
help='Force free gpu memory before final decoding',
|
||||||
|
)
|
||||||
|
|
||||||
|
return parser
|
||||||
117
backend/modules/get_canvas_generation_mode.py
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
from PIL import Image, ImageChops
|
||||||
|
from PIL.Image import Image as ImageType
|
||||||
|
from typing import Union, Literal
|
||||||
|
|
||||||
|
# https://stackoverflow.com/questions/43864101/python-pil-check-if-image-is-transparent
|
||||||
|
def check_for_any_transparency(img: Union[ImageType, str]) -> bool:
|
||||||
|
if type(img) is str:
|
||||||
|
img = Image.open(str)
|
||||||
|
|
||||||
|
if img.info.get("transparency", None) is not None:
|
||||||
|
return True
|
||||||
|
if img.mode == "P":
|
||||||
|
transparent = img.info.get("transparency", -1)
|
||||||
|
for _, index in img.getcolors():
|
||||||
|
if index == transparent:
|
||||||
|
return True
|
||||||
|
elif img.mode == "RGBA":
|
||||||
|
extrema = img.getextrema()
|
||||||
|
if extrema[3][0] < 255:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def get_canvas_generation_mode(
|
||||||
|
init_img: Union[ImageType, str], init_mask: Union[ImageType, str]
|
||||||
|
) -> Literal["txt2img", "outpainting", "inpainting", "img2img",]:
|
||||||
|
if type(init_img) is str:
|
||||||
|
init_img = Image.open(init_img)
|
||||||
|
|
||||||
|
if type(init_mask) is str:
|
||||||
|
init_mask = Image.open(init_mask)
|
||||||
|
|
||||||
|
init_img = init_img.convert("RGBA")
|
||||||
|
|
||||||
|
# Get alpha from init_img
|
||||||
|
init_img_alpha = init_img.split()[-1]
|
||||||
|
init_img_alpha_mask = init_img_alpha.convert("L")
|
||||||
|
init_img_has_transparency = check_for_any_transparency(init_img)
|
||||||
|
|
||||||
|
if init_img_has_transparency:
|
||||||
|
init_img_is_fully_transparent = (
|
||||||
|
True if init_img_alpha_mask.getbbox() is None else False
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Mask images are white in areas where no change should be made, black where changes
|
||||||
|
should be made.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Fit the mask to init_img's size and convert it to greyscale
|
||||||
|
init_mask = init_mask.resize(init_img.size).convert("L")
|
||||||
|
|
||||||
|
"""
|
||||||
|
PIL.Image.getbbox() returns the bounding box of non-zero areas of the image, so we first
|
||||||
|
invert the mask image so that masked areas are white and other areas black == zero.
|
||||||
|
getbbox() now tells us if the are any masked areas.
|
||||||
|
"""
|
||||||
|
init_mask_bbox = ImageChops.invert(init_mask).getbbox()
|
||||||
|
init_mask_exists = False if init_mask_bbox is None else True
|
||||||
|
|
||||||
|
if init_img_has_transparency:
|
||||||
|
if init_img_is_fully_transparent:
|
||||||
|
return "txt2img"
|
||||||
|
else:
|
||||||
|
return "outpainting"
|
||||||
|
else:
|
||||||
|
if init_mask_exists:
|
||||||
|
return "inpainting"
|
||||||
|
else:
|
||||||
|
return "img2img"
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Testing
|
||||||
|
init_img_opaque = "test_images/init-img_opaque.png"
|
||||||
|
init_img_partial_transparency = "test_images/init-img_partial_transparency.png"
|
||||||
|
init_img_full_transparency = "test_images/init-img_full_transparency.png"
|
||||||
|
init_mask_no_mask = "test_images/init-mask_no_mask.png"
|
||||||
|
init_mask_has_mask = "test_images/init-mask_has_mask.png"
|
||||||
|
|
||||||
|
print(
|
||||||
|
"OPAQUE IMAGE, NO MASK, expect img2img, got ",
|
||||||
|
get_canvas_generation_mode(init_img_opaque, init_mask_no_mask),
|
||||||
|
)
|
||||||
|
|
||||||
|
print(
|
||||||
|
"IMAGE WITH TRANSPARENCY, NO MASK, expect outpainting, got ",
|
||||||
|
get_canvas_generation_mode(
|
||||||
|
init_img_partial_transparency, init_mask_no_mask
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
print(
|
||||||
|
"FULLY TRANSPARENT IMAGE NO MASK, expect txt2img, got ",
|
||||||
|
get_canvas_generation_mode(init_img_full_transparency, init_mask_no_mask),
|
||||||
|
)
|
||||||
|
|
||||||
|
print(
|
||||||
|
"OPAQUE IMAGE, WITH MASK, expect inpainting, got ",
|
||||||
|
get_canvas_generation_mode(init_img_opaque, init_mask_has_mask),
|
||||||
|
)
|
||||||
|
|
||||||
|
print(
|
||||||
|
"IMAGE WITH TRANSPARENCY, WITH MASK, expect outpainting, got ",
|
||||||
|
get_canvas_generation_mode(
|
||||||
|
init_img_partial_transparency, init_mask_has_mask
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
print(
|
||||||
|
"FULLY TRANSPARENT IMAGE WITH MASK, expect txt2img, got ",
|
||||||
|
get_canvas_generation_mode(init_img_full_transparency, init_mask_has_mask),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
71
backend/modules/parameters.py
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
from backend.modules.parse_seed_weights import parse_seed_weights
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
SAMPLER_CHOICES = [
|
||||||
|
"ddim",
|
||||||
|
"k_dpm_2_a",
|
||||||
|
"k_dpm_2",
|
||||||
|
"k_dpmpp_2_a",
|
||||||
|
"k_dpmpp_2",
|
||||||
|
"k_euler_a",
|
||||||
|
"k_euler",
|
||||||
|
"k_heun",
|
||||||
|
"k_lms",
|
||||||
|
"plms",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def parameters_to_command(params):
|
||||||
|
"""
|
||||||
|
Converts dict of parameters into a `invoke.py` REPL command.
|
||||||
|
"""
|
||||||
|
|
||||||
|
switches = list()
|
||||||
|
|
||||||
|
if "prompt" in params:
|
||||||
|
switches.append(f'"{params["prompt"]}"')
|
||||||
|
if "steps" in params:
|
||||||
|
switches.append(f'-s {params["steps"]}')
|
||||||
|
if "seed" in params:
|
||||||
|
switches.append(f'-S {params["seed"]}')
|
||||||
|
if "width" in params:
|
||||||
|
switches.append(f'-W {params["width"]}')
|
||||||
|
if "height" in params:
|
||||||
|
switches.append(f'-H {params["height"]}')
|
||||||
|
if "cfg_scale" in params:
|
||||||
|
switches.append(f'-C {params["cfg_scale"]}')
|
||||||
|
if "sampler_name" in params:
|
||||||
|
switches.append(f'-A {params["sampler_name"]}')
|
||||||
|
if "seamless" in params and params["seamless"] == True:
|
||||||
|
switches.append(f"--seamless")
|
||||||
|
if "hires_fix" in params and params["hires_fix"] == True:
|
||||||
|
switches.append(f"--hires")
|
||||||
|
if "init_img" in params and len(params["init_img"]) > 0:
|
||||||
|
switches.append(f'-I {params["init_img"]}')
|
||||||
|
if "init_mask" in params and len(params["init_mask"]) > 0:
|
||||||
|
switches.append(f'-M {params["init_mask"]}')
|
||||||
|
if "init_color" in params and len(params["init_color"]) > 0:
|
||||||
|
switches.append(f'--init_color {params["init_color"]}')
|
||||||
|
if "strength" in params and "init_img" in params:
|
||||||
|
switches.append(f'-f {params["strength"]}')
|
||||||
|
if "fit" in params and params["fit"] == True:
|
||||||
|
switches.append(f"--fit")
|
||||||
|
if "facetool" in params:
|
||||||
|
switches.append(f'-ft {params["facetool"]}')
|
||||||
|
if "facetool_strength" in params and params["facetool_strength"]:
|
||||||
|
switches.append(f'-G {params["facetool_strength"]}')
|
||||||
|
elif "gfpgan_strength" in params and params["gfpgan_strength"]:
|
||||||
|
switches.append(f'-G {params["gfpgan_strength"]}')
|
||||||
|
if "codeformer_fidelity" in params:
|
||||||
|
switches.append(f'-cf {params["codeformer_fidelity"]}')
|
||||||
|
if "upscale" in params and params["upscale"]:
|
||||||
|
switches.append(f'-U {params["upscale"][0]} {params["upscale"][1]}')
|
||||||
|
if "variation_amount" in params and params["variation_amount"] > 0:
|
||||||
|
switches.append(f'-v {params["variation_amount"]}')
|
||||||
|
if "with_variations" in params:
|
||||||
|
seed_weight_pairs = ",".join(
|
||||||
|
f"{seed}:{weight}" for seed, weight in params["with_variations"]
|
||||||
|
)
|
||||||
|
switches.append(f"-V {seed_weight_pairs}")
|
||||||
|
|
||||||
|
return " ".join(switches)
|
||||||
47
backend/modules/parse_seed_weights.py
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
def parse_seed_weights(seed_weights):
|
||||||
|
"""
|
||||||
|
Accepts seed weights as string in "12345:0.1,23456:0.2,3456:0.3" format
|
||||||
|
Validates them
|
||||||
|
If valid: returns as [[12345, 0.1], [23456, 0.2], [3456, 0.3]]
|
||||||
|
If invalid: returns False
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Must be a string
|
||||||
|
if not isinstance(seed_weights, str):
|
||||||
|
return False
|
||||||
|
# String must not be empty
|
||||||
|
if len(seed_weights) == 0:
|
||||||
|
return False
|
||||||
|
|
||||||
|
pairs = []
|
||||||
|
|
||||||
|
for pair in seed_weights.split(","):
|
||||||
|
split_values = pair.split(":")
|
||||||
|
|
||||||
|
# Seed and weight are required
|
||||||
|
if len(split_values) != 2:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if len(split_values[0]) == 0 or len(split_values[1]) == 1:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Try casting the seed to int and weight to float
|
||||||
|
try:
|
||||||
|
seed = int(split_values[0])
|
||||||
|
weight = float(split_values[1])
|
||||||
|
except ValueError:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Seed must be 0 or above
|
||||||
|
if not seed >= 0:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Weight must be between 0 and 1
|
||||||
|
if not (weight >= 0 and weight <= 1):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# This pair is valid
|
||||||
|
pairs.append([seed, weight])
|
||||||
|
|
||||||
|
# All pairs are valid
|
||||||
|
return pairs
|
||||||
BIN
backend/modules/test_images/init-img_full_transparency.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
backend/modules/test_images/init-img_opaque.png
Normal file
|
After Width: | Height: | Size: 292 KiB |
BIN
backend/modules/test_images/init-img_partial_transparency.png
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
backend/modules/test_images/init-mask_has_mask.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
backend/modules/test_images/init-mask_no_mask.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
80
configs/INITIAL_MODELS.yaml
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
stable-diffusion-1.5:
|
||||||
|
description: The newest Stable Diffusion version 1.5 weight file (4.27 GB)
|
||||||
|
repo_id: runwayml/stable-diffusion-v1-5
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: v1-5-pruned-emaonly.ckpt
|
||||||
|
recommended: true
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
inpainting-1.5:
|
||||||
|
description: RunwayML SD 1.5 model optimized for inpainting (4.27 GB)
|
||||||
|
repo_id: runwayml/stable-diffusion-inpainting
|
||||||
|
config: v1-inpainting-inference.yaml
|
||||||
|
file: sd-v1-5-inpainting.ckpt
|
||||||
|
recommended: True
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
ft-mse-improved-autoencoder-840000:
|
||||||
|
description: StabilityAI improved autoencoder fine-tuned for human faces (recommended; 335 MB)
|
||||||
|
repo_id: stabilityai/sd-vae-ft-mse-original
|
||||||
|
config: VAE/default
|
||||||
|
file: vae-ft-mse-840000-ema-pruned.ckpt
|
||||||
|
recommended: True
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
stable-diffusion-1.4:
|
||||||
|
description: The original Stable Diffusion version 1.4 weight file (4.27 GB)
|
||||||
|
repo_id: CompVis/stable-diffusion-v-1-4-original
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: sd-v1-4.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
waifu-diffusion-1.3:
|
||||||
|
description: Stable Diffusion 1.4 fine tuned on anime-styled images (4.27)
|
||||||
|
repo_id: hakurei/waifu-diffusion-v1-3
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: model-epoch09-float32.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
trinart-2.0:
|
||||||
|
description: An SD model finetuned with ~40,000 assorted high resolution manga/anime-style pictures (2.13 GB)
|
||||||
|
repo_id: naclbit/trinart_stable_diffusion_v2
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: trinart2_step95000.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
trinart_characters-1.0:
|
||||||
|
description: An SD model finetuned with 19.2M anime/manga style images (2.13 GB)
|
||||||
|
repo_id: naclbit/trinart_characters_19.2m_stable_diffusion_v1
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: trinart_characters_it4_v1.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
trinart_vae:
|
||||||
|
description: Custom autoencoder for trinart_characters
|
||||||
|
repo_id: naclbit/trinart_characters_19.2m_stable_diffusion_v1
|
||||||
|
config: VAE/trinart
|
||||||
|
file: autoencoder_fix_kl-f8-trinart_characters.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
papercut-1.0:
|
||||||
|
description: SD 1.5 fine-tuned for papercut art (use "PaperCut" in your prompts) (2.13 GB)
|
||||||
|
repo_id: Fictiverse/Stable_Diffusion_PaperCut_Model
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: PaperCut_v1.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
voxel_art-1.0:
|
||||||
|
description: Stable Diffusion trained on voxel art (use "VoxelArt" in your prompts) (4.27 GB)
|
||||||
|
repo_id: Fictiverse/Stable_Diffusion_VoxelArt_Model
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: VoxelArt_v1.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
27
configs/models.yaml.example
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# This file describes the alternative machine learning models
|
||||||
|
# available to InvokeAI script.
|
||||||
|
#
|
||||||
|
# To add a new model, follow the examples below. Each
|
||||||
|
# model requires a model config file, a weights file,
|
||||||
|
# and the width and height of the images it
|
||||||
|
# was trained on.
|
||||||
|
stable-diffusion-1.5:
|
||||||
|
description: The newest Stable Diffusion version 1.5 weight file (4.27 GB)
|
||||||
|
weights: models/ldm/stable-diffusion-v1/v1-5-pruned-emaonly.ckpt
|
||||||
|
config: configs/stable-diffusion/v1-inference.yaml
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
vae: ./models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt
|
||||||
|
default: true
|
||||||
|
stable-diffusion-1.4:
|
||||||
|
description: Stable Diffusion inference model version 1.4
|
||||||
|
config: configs/stable-diffusion/v1-inference.yaml
|
||||||
|
weights: models/ldm/stable-diffusion-v1/sd-v1-4.ckpt
|
||||||
|
vae: models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
inpainting-1.5:
|
||||||
|
weights: models/ldm/stable-diffusion-v1/sd-v1-5-inpainting.ckpt
|
||||||
|
config: configs/stable-diffusion/v1-inpainting-inference.yaml
|
||||||
|
vae: models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt
|
||||||
|
description: RunwayML SD 1.5 model optimized for inpainting
|
||||||
803
configs/sd-concepts.txt
Normal file
@@ -0,0 +1,803 @@
|
|||||||
|
sd-concepts-library/001glitch-core
|
||||||
|
sd-concepts-library/2814-roth
|
||||||
|
sd-concepts-library/3d-female-cyborgs
|
||||||
|
sd-concepts-library/4tnght
|
||||||
|
sd-concepts-library/80s-anime-ai
|
||||||
|
sd-concepts-library/80s-anime-ai-being
|
||||||
|
sd-concepts-library/852style-girl
|
||||||
|
sd-concepts-library/8bit
|
||||||
|
sd-concepts-library/8sconception
|
||||||
|
sd-concepts-library/Aflac-duck
|
||||||
|
sd-concepts-library/Akitsuki
|
||||||
|
sd-concepts-library/Atako
|
||||||
|
sd-concepts-library/Exodus-Styling
|
||||||
|
sd-concepts-library/RINGAO
|
||||||
|
sd-concepts-library/a-female-hero-from-the-legend-of-mir
|
||||||
|
sd-concepts-library/a-hat-kid
|
||||||
|
sd-concepts-library/a-tale-of-two-empires
|
||||||
|
sd-concepts-library/aadhav-face
|
||||||
|
sd-concepts-library/aavegotchi
|
||||||
|
sd-concepts-library/abby-face
|
||||||
|
sd-concepts-library/abstract-concepts
|
||||||
|
sd-concepts-library/accurate-angel
|
||||||
|
sd-concepts-library/agm-style-nao
|
||||||
|
sd-concepts-library/aj-fosik
|
||||||
|
sd-concepts-library/alberto-mielgo
|
||||||
|
sd-concepts-library/alex-portugal
|
||||||
|
sd-concepts-library/alex-thumbnail-object-2000-steps
|
||||||
|
sd-concepts-library/aleyna-tilki
|
||||||
|
sd-concepts-library/alf
|
||||||
|
sd-concepts-library/alicebeta
|
||||||
|
sd-concepts-library/alien-avatar
|
||||||
|
sd-concepts-library/alisa
|
||||||
|
sd-concepts-library/all-rings-albuns
|
||||||
|
sd-concepts-library/altvent
|
||||||
|
sd-concepts-library/altyn-helmet
|
||||||
|
sd-concepts-library/amine
|
||||||
|
sd-concepts-library/amogus
|
||||||
|
sd-concepts-library/anders-zorn
|
||||||
|
sd-concepts-library/angus-mcbride-style
|
||||||
|
sd-concepts-library/animalve3-1500seq
|
||||||
|
sd-concepts-library/anime-background-style
|
||||||
|
sd-concepts-library/anime-background-style-v2
|
||||||
|
sd-concepts-library/anime-boy
|
||||||
|
sd-concepts-library/anime-girl
|
||||||
|
sd-concepts-library/anyXtronXredshift
|
||||||
|
sd-concepts-library/anya-forger
|
||||||
|
sd-concepts-library/apex-wingman
|
||||||
|
sd-concepts-library/apulian-rooster-v0-1
|
||||||
|
sd-concepts-library/arcane-face
|
||||||
|
sd-concepts-library/arcane-style-jv
|
||||||
|
sd-concepts-library/arcimboldo-style
|
||||||
|
sd-concepts-library/armando-reveron-style
|
||||||
|
sd-concepts-library/armor-concept
|
||||||
|
sd-concepts-library/arq-render
|
||||||
|
sd-concepts-library/art-brut
|
||||||
|
sd-concepts-library/arthur1
|
||||||
|
sd-concepts-library/artist-yukiko-kanagai
|
||||||
|
sd-concepts-library/arwijn
|
||||||
|
sd-concepts-library/ashiok
|
||||||
|
sd-concepts-library/at-wolf-boy-object
|
||||||
|
sd-concepts-library/atm-ant
|
||||||
|
sd-concepts-library/atm-ant-2
|
||||||
|
sd-concepts-library/axe-tattoo
|
||||||
|
sd-concepts-library/ayush-spider-spr
|
||||||
|
sd-concepts-library/azura-from-vibrant-venture
|
||||||
|
sd-concepts-library/ba-shiroko
|
||||||
|
sd-concepts-library/babau
|
||||||
|
sd-concepts-library/babs-bunny
|
||||||
|
sd-concepts-library/babushork
|
||||||
|
sd-concepts-library/backrooms
|
||||||
|
sd-concepts-library/bad_Hub_Hugh
|
||||||
|
sd-concepts-library/bada-club
|
||||||
|
sd-concepts-library/baldi
|
||||||
|
sd-concepts-library/baluchitherian
|
||||||
|
sd-concepts-library/bamse
|
||||||
|
sd-concepts-library/bamse-og-kylling
|
||||||
|
sd-concepts-library/bee
|
||||||
|
sd-concepts-library/beholder
|
||||||
|
sd-concepts-library/beldam
|
||||||
|
sd-concepts-library/belen
|
||||||
|
sd-concepts-library/bella-goth
|
||||||
|
sd-concepts-library/belle-delphine
|
||||||
|
sd-concepts-library/bert-muppet
|
||||||
|
sd-concepts-library/better-collage3
|
||||||
|
sd-concepts-library/between2-mt-fade
|
||||||
|
sd-concepts-library/birb-style
|
||||||
|
sd-concepts-library/black-and-white-design
|
||||||
|
sd-concepts-library/black-waifu
|
||||||
|
sd-concepts-library/bloo
|
||||||
|
sd-concepts-library/blue-haired-boy
|
||||||
|
sd-concepts-library/blue-zombie
|
||||||
|
sd-concepts-library/blue-zombiee
|
||||||
|
sd-concepts-library/bluebey
|
||||||
|
sd-concepts-library/bluebey-2
|
||||||
|
sd-concepts-library/bobs-burgers
|
||||||
|
sd-concepts-library/boissonnard
|
||||||
|
sd-concepts-library/bonzi-monkey
|
||||||
|
sd-concepts-library/borderlands
|
||||||
|
sd-concepts-library/bored-ape-textual-inversion
|
||||||
|
sd-concepts-library/boris-anderson
|
||||||
|
sd-concepts-library/bozo-22
|
||||||
|
sd-concepts-library/breakcore
|
||||||
|
sd-concepts-library/brittney-williams-art
|
||||||
|
sd-concepts-library/bruma
|
||||||
|
sd-concepts-library/brunnya
|
||||||
|
sd-concepts-library/buddha-statue
|
||||||
|
sd-concepts-library/bullvbear
|
||||||
|
sd-concepts-library/button-eyes
|
||||||
|
sd-concepts-library/canadian-goose
|
||||||
|
sd-concepts-library/canary-cap
|
||||||
|
sd-concepts-library/cancer_style
|
||||||
|
sd-concepts-library/captain-haddock
|
||||||
|
sd-concepts-library/captainkirb
|
||||||
|
sd-concepts-library/car-toy-rk
|
||||||
|
sd-concepts-library/carasibana
|
||||||
|
sd-concepts-library/carlitos-el-mago
|
||||||
|
sd-concepts-library/carrascharacter
|
||||||
|
sd-concepts-library/cartoona-animals
|
||||||
|
sd-concepts-library/cat-toy
|
||||||
|
sd-concepts-library/centaur
|
||||||
|
sd-concepts-library/cgdonny1
|
||||||
|
sd-concepts-library/cham
|
||||||
|
sd-concepts-library/chandra-nalaar
|
||||||
|
sd-concepts-library/char-con
|
||||||
|
sd-concepts-library/character-pingu
|
||||||
|
sd-concepts-library/cheburashka
|
||||||
|
sd-concepts-library/chen-1
|
||||||
|
sd-concepts-library/child-zombie
|
||||||
|
sd-concepts-library/chillpill
|
||||||
|
sd-concepts-library/chonkfrog
|
||||||
|
sd-concepts-library/chop
|
||||||
|
sd-concepts-library/christo-person
|
||||||
|
sd-concepts-library/chuck-walton
|
||||||
|
sd-concepts-library/chucky
|
||||||
|
sd-concepts-library/chungus-poodl-pet
|
||||||
|
sd-concepts-library/cindlop
|
||||||
|
sd-concepts-library/collage-cutouts
|
||||||
|
sd-concepts-library/collage14
|
||||||
|
sd-concepts-library/collage3
|
||||||
|
sd-concepts-library/collage3-hubcity
|
||||||
|
sd-concepts-library/cologne
|
||||||
|
sd-concepts-library/color-page
|
||||||
|
sd-concepts-library/colossus
|
||||||
|
sd-concepts-library/command-and-conquer-remastered-cameos
|
||||||
|
sd-concepts-library/concept-art
|
||||||
|
sd-concepts-library/conner-fawcett-style
|
||||||
|
sd-concepts-library/conway-pirate
|
||||||
|
sd-concepts-library/coop-himmelblau
|
||||||
|
sd-concepts-library/coraline
|
||||||
|
sd-concepts-library/cornell-box
|
||||||
|
sd-concepts-library/cortana
|
||||||
|
sd-concepts-library/covid-19-rapid-test
|
||||||
|
sd-concepts-library/cow-uwu
|
||||||
|
sd-concepts-library/cowboy
|
||||||
|
sd-concepts-library/crazy-1
|
||||||
|
sd-concepts-library/crazy-2
|
||||||
|
sd-concepts-library/crb-portraits
|
||||||
|
sd-concepts-library/crb-surrealz
|
||||||
|
sd-concepts-library/crbart
|
||||||
|
sd-concepts-library/crested-gecko
|
||||||
|
sd-concepts-library/crinos-form-garou
|
||||||
|
sd-concepts-library/cry-baby-style
|
||||||
|
sd-concepts-library/crybaby-style-2-0
|
||||||
|
sd-concepts-library/csgo-awp-object
|
||||||
|
sd-concepts-library/csgo-awp-texture-map
|
||||||
|
sd-concepts-library/cubex
|
||||||
|
sd-concepts-library/cumbia-peruana
|
||||||
|
sd-concepts-library/cute-bear
|
||||||
|
sd-concepts-library/cute-cat
|
||||||
|
sd-concepts-library/cute-game-style
|
||||||
|
sd-concepts-library/cyberpunk-lucy
|
||||||
|
sd-concepts-library/dabotap
|
||||||
|
sd-concepts-library/dan-mumford
|
||||||
|
sd-concepts-library/dan-seagrave-art-style
|
||||||
|
sd-concepts-library/dark-penguin-pinguinanimations
|
||||||
|
sd-concepts-library/darkpenguinanimatronic
|
||||||
|
sd-concepts-library/darkplane
|
||||||
|
sd-concepts-library/david-firth-artstyle
|
||||||
|
sd-concepts-library/david-martinez-cyberpunk
|
||||||
|
sd-concepts-library/david-martinez-edgerunners
|
||||||
|
sd-concepts-library/david-moreno-architecture
|
||||||
|
sd-concepts-library/daycare-attendant-sun-fnaf
|
||||||
|
sd-concepts-library/ddattender
|
||||||
|
sd-concepts-library/degods
|
||||||
|
sd-concepts-library/degodsheavy
|
||||||
|
sd-concepts-library/depthmap
|
||||||
|
sd-concepts-library/depthmap-style
|
||||||
|
sd-concepts-library/design
|
||||||
|
sd-concepts-library/detectivedinosaur1
|
||||||
|
sd-concepts-library/diaosu-toy
|
||||||
|
sd-concepts-library/dicoo
|
||||||
|
sd-concepts-library/dicoo2
|
||||||
|
sd-concepts-library/dishonored-portrait-styles
|
||||||
|
sd-concepts-library/disquieting-muses
|
||||||
|
sd-concepts-library/ditko
|
||||||
|
sd-concepts-library/dlooak
|
||||||
|
sd-concepts-library/doc
|
||||||
|
sd-concepts-library/doener-red-line-art
|
||||||
|
sd-concepts-library/dog
|
||||||
|
sd-concepts-library/dog-django
|
||||||
|
sd-concepts-library/doge-pound
|
||||||
|
sd-concepts-library/dong-ho
|
||||||
|
sd-concepts-library/dong-ho2
|
||||||
|
sd-concepts-library/doose-s-realistic-art-style
|
||||||
|
sd-concepts-library/dq10-anrushia
|
||||||
|
sd-concepts-library/dr-livesey
|
||||||
|
sd-concepts-library/dr-strange
|
||||||
|
sd-concepts-library/dragonborn
|
||||||
|
sd-concepts-library/dreamcore
|
||||||
|
sd-concepts-library/dreamy-painting
|
||||||
|
sd-concepts-library/drive-scorpion-jacket
|
||||||
|
sd-concepts-library/dsmuses
|
||||||
|
sd-concepts-library/dtv-pkmn
|
||||||
|
sd-concepts-library/dullboy-caricature
|
||||||
|
sd-concepts-library/duranduran
|
||||||
|
sd-concepts-library/durer-style
|
||||||
|
sd-concepts-library/dyoudim-style
|
||||||
|
sd-concepts-library/early-mishima-kurone
|
||||||
|
sd-concepts-library/eastward
|
||||||
|
sd-concepts-library/eddie
|
||||||
|
sd-concepts-library/edgerunners-style
|
||||||
|
sd-concepts-library/edgerunners-style-v2
|
||||||
|
sd-concepts-library/el-salvador-style-style
|
||||||
|
sd-concepts-library/elegant-flower
|
||||||
|
sd-concepts-library/elspeth-tirel
|
||||||
|
sd-concepts-library/eru-chitanda-casual
|
||||||
|
sd-concepts-library/erwin-olaf-style
|
||||||
|
sd-concepts-library/ettblackteapot
|
||||||
|
sd-concepts-library/explosions-cat
|
||||||
|
sd-concepts-library/eye-of-agamotto
|
||||||
|
sd-concepts-library/f-22
|
||||||
|
sd-concepts-library/facadeplace
|
||||||
|
sd-concepts-library/fairy-tale-painting-style
|
||||||
|
sd-concepts-library/fairytale
|
||||||
|
sd-concepts-library/fang-yuan-001
|
||||||
|
sd-concepts-library/faraon-love-shady
|
||||||
|
sd-concepts-library/fasina
|
||||||
|
sd-concepts-library/felps
|
||||||
|
sd-concepts-library/female-kpop-singer
|
||||||
|
sd-concepts-library/fergal-cat
|
||||||
|
sd-concepts-library/filename-2
|
||||||
|
sd-concepts-library/fileteado-porteno
|
||||||
|
sd-concepts-library/final-fantasy-logo
|
||||||
|
sd-concepts-library/fireworks-over-water
|
||||||
|
sd-concepts-library/fish
|
||||||
|
sd-concepts-library/flag-ussr
|
||||||
|
sd-concepts-library/flatic
|
||||||
|
sd-concepts-library/floral
|
||||||
|
sd-concepts-library/fluid-acrylic-jellyfish-creatures-style-of-carl-ingram-art
|
||||||
|
sd-concepts-library/fnf-boyfriend
|
||||||
|
sd-concepts-library/fold-structure
|
||||||
|
sd-concepts-library/fox-purple
|
||||||
|
sd-concepts-library/fractal
|
||||||
|
sd-concepts-library/fractal-flame
|
||||||
|
sd-concepts-library/fractal-temple-style
|
||||||
|
sd-concepts-library/frank-frazetta
|
||||||
|
sd-concepts-library/franz-unterberger
|
||||||
|
sd-concepts-library/freddy-fazbear
|
||||||
|
sd-concepts-library/freefonix-style
|
||||||
|
sd-concepts-library/furrpopasthetic
|
||||||
|
sd-concepts-library/fursona
|
||||||
|
sd-concepts-library/fzk
|
||||||
|
sd-concepts-library/galaxy-explorer
|
||||||
|
sd-concepts-library/ganyu-genshin-impact
|
||||||
|
sd-concepts-library/garcon-the-cat
|
||||||
|
sd-concepts-library/garfield-pizza-plush
|
||||||
|
sd-concepts-library/garfield-pizza-plush-v2
|
||||||
|
sd-concepts-library/gba-fe-class-cards
|
||||||
|
sd-concepts-library/gba-pokemon-sprites
|
||||||
|
sd-concepts-library/geggin
|
||||||
|
sd-concepts-library/ggplot2
|
||||||
|
sd-concepts-library/ghost-style
|
||||||
|
sd-concepts-library/ghostproject-men
|
||||||
|
sd-concepts-library/gibasachan-v0
|
||||||
|
sd-concepts-library/gim
|
||||||
|
sd-concepts-library/gio
|
||||||
|
sd-concepts-library/giygas
|
||||||
|
sd-concepts-library/glass-pipe
|
||||||
|
sd-concepts-library/glass-prism-cube
|
||||||
|
sd-concepts-library/glow-forest
|
||||||
|
sd-concepts-library/goku
|
||||||
|
sd-concepts-library/gram-tops
|
||||||
|
sd-concepts-library/green-blue-shanshui
|
||||||
|
sd-concepts-library/green-tent
|
||||||
|
sd-concepts-library/grifter
|
||||||
|
sd-concepts-library/grisstyle
|
||||||
|
sd-concepts-library/grit-toy
|
||||||
|
sd-concepts-library/gt-color-paint-2
|
||||||
|
sd-concepts-library/gta5-artwork
|
||||||
|
sd-concepts-library/guttestreker
|
||||||
|
sd-concepts-library/gymnastics-leotard-v2
|
||||||
|
sd-concepts-library/half-life-2-dog
|
||||||
|
sd-concepts-library/handstand
|
||||||
|
sd-concepts-library/hanfu-anime-style
|
||||||
|
sd-concepts-library/happy-chaos
|
||||||
|
sd-concepts-library/happy-person12345
|
||||||
|
sd-concepts-library/happy-person12345-assets
|
||||||
|
sd-concepts-library/harley-quinn
|
||||||
|
sd-concepts-library/harmless-ai-1
|
||||||
|
sd-concepts-library/harmless-ai-house-style-1
|
||||||
|
sd-concepts-library/hd-emoji
|
||||||
|
sd-concepts-library/heather
|
||||||
|
sd-concepts-library/henjo-techno-show
|
||||||
|
sd-concepts-library/herge-style
|
||||||
|
sd-concepts-library/hiten-style-nao
|
||||||
|
sd-concepts-library/hitokomoru-style-nao
|
||||||
|
sd-concepts-library/hiyuki-chan
|
||||||
|
sd-concepts-library/hk-bamboo
|
||||||
|
sd-concepts-library/hk-betweenislands
|
||||||
|
sd-concepts-library/hk-bicycle
|
||||||
|
sd-concepts-library/hk-blackandwhite
|
||||||
|
sd-concepts-library/hk-breakfast
|
||||||
|
sd-concepts-library/hk-buses
|
||||||
|
sd-concepts-library/hk-clouds
|
||||||
|
sd-concepts-library/hk-goldbuddha
|
||||||
|
sd-concepts-library/hk-goldenlantern
|
||||||
|
sd-concepts-library/hk-hkisland
|
||||||
|
sd-concepts-library/hk-leaves
|
||||||
|
sd-concepts-library/hk-market
|
||||||
|
sd-concepts-library/hk-oldcamera
|
||||||
|
sd-concepts-library/hk-opencamera
|
||||||
|
sd-concepts-library/hk-peach
|
||||||
|
sd-concepts-library/hk-phonevax
|
||||||
|
sd-concepts-library/hk-streetpeople
|
||||||
|
sd-concepts-library/hk-vintage
|
||||||
|
sd-concepts-library/hoi4
|
||||||
|
sd-concepts-library/hoi4-leaders
|
||||||
|
sd-concepts-library/homestuck-sprite
|
||||||
|
sd-concepts-library/homestuck-troll
|
||||||
|
sd-concepts-library/hours-sentry-fade
|
||||||
|
sd-concepts-library/hours-style
|
||||||
|
sd-concepts-library/hrgiger-drmacabre
|
||||||
|
sd-concepts-library/huang-guang-jian
|
||||||
|
sd-concepts-library/huatli
|
||||||
|
sd-concepts-library/huayecai820-greyscale
|
||||||
|
sd-concepts-library/hub-city
|
||||||
|
sd-concepts-library/hubris-oshri
|
||||||
|
sd-concepts-library/huckleberry
|
||||||
|
sd-concepts-library/hydrasuit
|
||||||
|
sd-concepts-library/i-love-chaos
|
||||||
|
sd-concepts-library/ibere-thenorio
|
||||||
|
sd-concepts-library/ic0n
|
||||||
|
sd-concepts-library/ie-gravestone
|
||||||
|
sd-concepts-library/ikea-fabler
|
||||||
|
sd-concepts-library/illustration-style
|
||||||
|
sd-concepts-library/ilo-kunst
|
||||||
|
sd-concepts-library/ilya-shkipin
|
||||||
|
sd-concepts-library/im-poppy
|
||||||
|
sd-concepts-library/ina-art
|
||||||
|
sd-concepts-library/indian-watercolor-portraits
|
||||||
|
sd-concepts-library/indiana
|
||||||
|
sd-concepts-library/ingmar-bergman
|
||||||
|
sd-concepts-library/insidewhale
|
||||||
|
sd-concepts-library/interchanges
|
||||||
|
sd-concepts-library/inuyama-muneto-style-nao
|
||||||
|
sd-concepts-library/irasutoya
|
||||||
|
sd-concepts-library/iridescent-illustration-style
|
||||||
|
sd-concepts-library/iridescent-photo-style
|
||||||
|
sd-concepts-library/isabell-schulte-pv-pvii-3000steps
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-1-image-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-1024px-1500-steps-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-12tiles-3000steps-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-4-tiles-1-lr-3000-steps-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-4-tiles-3-lr-5000-steps-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-4tiles-500steps
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-4tiles-6000steps
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-style
|
||||||
|
sd-concepts-library/isometric-tile-test
|
||||||
|
sd-concepts-library/jacqueline-the-unicorn
|
||||||
|
sd-concepts-library/james-web-space-telescope
|
||||||
|
sd-concepts-library/jamie-hewlett-style
|
||||||
|
sd-concepts-library/jamiels
|
||||||
|
sd-concepts-library/jang-sung-rak-style
|
||||||
|
sd-concepts-library/jetsetdreamcastcovers
|
||||||
|
sd-concepts-library/jin-kisaragi
|
||||||
|
sd-concepts-library/jinjoon-lee-they
|
||||||
|
sd-concepts-library/jm-bergling-monogram
|
||||||
|
sd-concepts-library/joe-mad
|
||||||
|
sd-concepts-library/joe-whiteford-art-style
|
||||||
|
sd-concepts-library/joemad
|
||||||
|
sd-concepts-library/john-blanche
|
||||||
|
sd-concepts-library/johnny-silverhand
|
||||||
|
sd-concepts-library/jojo-bizzare-adventure-manga-lineart
|
||||||
|
sd-concepts-library/jos-de-kat
|
||||||
|
sd-concepts-library/junji-ito-artstyle
|
||||||
|
sd-concepts-library/kaleido
|
||||||
|
sd-concepts-library/kaneoya-sachiko
|
||||||
|
sd-concepts-library/kanovt
|
||||||
|
sd-concepts-library/kanv1
|
||||||
|
sd-concepts-library/karan-gloomy
|
||||||
|
sd-concepts-library/karl-s-lzx-1
|
||||||
|
sd-concepts-library/kasumin
|
||||||
|
sd-concepts-library/kawaii-colors
|
||||||
|
sd-concepts-library/kawaii-girl-plus-object
|
||||||
|
sd-concepts-library/kawaii-girl-plus-style
|
||||||
|
sd-concepts-library/kawaii-girl-plus-style-v1-1
|
||||||
|
sd-concepts-library/kay
|
||||||
|
sd-concepts-library/kaya-ghost-assasin
|
||||||
|
sd-concepts-library/ki
|
||||||
|
sd-concepts-library/kinda-sus
|
||||||
|
sd-concepts-library/kings-quest-agd
|
||||||
|
sd-concepts-library/kiora
|
||||||
|
sd-concepts-library/kira-sensei
|
||||||
|
sd-concepts-library/kirby
|
||||||
|
sd-concepts-library/klance
|
||||||
|
sd-concepts-library/kodakvision500t
|
||||||
|
sd-concepts-library/kogatan-shiny
|
||||||
|
sd-concepts-library/kogecha
|
||||||
|
sd-concepts-library/kojima-ayami
|
||||||
|
sd-concepts-library/koko-dog
|
||||||
|
sd-concepts-library/kuvshinov
|
||||||
|
sd-concepts-library/kysa-v-style
|
||||||
|
sd-concepts-library/laala-character
|
||||||
|
sd-concepts-library/larrette
|
||||||
|
sd-concepts-library/lavko
|
||||||
|
sd-concepts-library/lazytown-stephanie
|
||||||
|
sd-concepts-library/ldr
|
||||||
|
sd-concepts-library/ldrs
|
||||||
|
sd-concepts-library/led-toy
|
||||||
|
sd-concepts-library/lego-astronaut
|
||||||
|
sd-concepts-library/leica
|
||||||
|
sd-concepts-library/leif-jones
|
||||||
|
sd-concepts-library/lex
|
||||||
|
sd-concepts-library/liliana
|
||||||
|
sd-concepts-library/liliana-vess
|
||||||
|
sd-concepts-library/liminal-spaces-2-0
|
||||||
|
sd-concepts-library/liminalspaces
|
||||||
|
sd-concepts-library/line-art
|
||||||
|
sd-concepts-library/line-style
|
||||||
|
sd-concepts-library/linnopoke
|
||||||
|
sd-concepts-library/liquid-light
|
||||||
|
sd-concepts-library/liqwid-aquafarmer
|
||||||
|
sd-concepts-library/lizardman
|
||||||
|
sd-concepts-library/loab-character
|
||||||
|
sd-concepts-library/loab-style
|
||||||
|
sd-concepts-library/lofa
|
||||||
|
sd-concepts-library/logo-with-face-on-shield
|
||||||
|
sd-concepts-library/lolo
|
||||||
|
sd-concepts-library/looney-anime
|
||||||
|
sd-concepts-library/lost-rapper
|
||||||
|
sd-concepts-library/lphr-style
|
||||||
|
sd-concepts-library/lucario
|
||||||
|
sd-concepts-library/lucky-luke
|
||||||
|
sd-concepts-library/lugal-ki-en
|
||||||
|
sd-concepts-library/luinv2
|
||||||
|
sd-concepts-library/lula-13
|
||||||
|
sd-concepts-library/lumio
|
||||||
|
sd-concepts-library/lxj-o4
|
||||||
|
sd-concepts-library/m-geo
|
||||||
|
sd-concepts-library/m-geoo
|
||||||
|
sd-concepts-library/madhubani-art
|
||||||
|
sd-concepts-library/mafalda-character
|
||||||
|
sd-concepts-library/magic-pengel
|
||||||
|
sd-concepts-library/malika-favre-art-style
|
||||||
|
sd-concepts-library/manga-style
|
||||||
|
sd-concepts-library/marbling-art
|
||||||
|
sd-concepts-library/margo
|
||||||
|
sd-concepts-library/marty
|
||||||
|
sd-concepts-library/marty6
|
||||||
|
sd-concepts-library/mass
|
||||||
|
sd-concepts-library/masyanya
|
||||||
|
sd-concepts-library/masyunya
|
||||||
|
sd-concepts-library/mate
|
||||||
|
sd-concepts-library/matthew-stone
|
||||||
|
sd-concepts-library/mattvidpro
|
||||||
|
sd-concepts-library/maurice-quentin-de-la-tour-style
|
||||||
|
sd-concepts-library/maus
|
||||||
|
sd-concepts-library/max-foley
|
||||||
|
sd-concepts-library/mayor-richard-irvin
|
||||||
|
sd-concepts-library/mechasoulall
|
||||||
|
sd-concepts-library/medazzaland
|
||||||
|
sd-concepts-library/memnarch-mtg
|
||||||
|
sd-concepts-library/metagabe
|
||||||
|
sd-concepts-library/meyoco
|
||||||
|
sd-concepts-library/meze-audio-elite-headphones
|
||||||
|
sd-concepts-library/midjourney-style
|
||||||
|
sd-concepts-library/mikako-method
|
||||||
|
sd-concepts-library/mikako-methodi2i
|
||||||
|
sd-concepts-library/miko-3-robot
|
||||||
|
sd-concepts-library/milady
|
||||||
|
sd-concepts-library/mildemelwe-style
|
||||||
|
sd-concepts-library/million-live-akane-15k
|
||||||
|
sd-concepts-library/million-live-akane-3k
|
||||||
|
sd-concepts-library/million-live-akane-shifuku-3k
|
||||||
|
sd-concepts-library/million-live-spade-q-object-3k
|
||||||
|
sd-concepts-library/million-live-spade-q-style-3k
|
||||||
|
sd-concepts-library/minecraft-concept-art
|
||||||
|
sd-concepts-library/mishima-kurone
|
||||||
|
sd-concepts-library/mizkif
|
||||||
|
sd-concepts-library/moeb-style
|
||||||
|
sd-concepts-library/moebius
|
||||||
|
sd-concepts-library/mokoko
|
||||||
|
sd-concepts-library/mokoko-seed
|
||||||
|
sd-concepts-library/monster-girl
|
||||||
|
sd-concepts-library/monster-toy
|
||||||
|
sd-concepts-library/monte-novo
|
||||||
|
sd-concepts-library/moo-moo
|
||||||
|
sd-concepts-library/morino-hon-style
|
||||||
|
sd-concepts-library/moxxi
|
||||||
|
sd-concepts-library/msg
|
||||||
|
sd-concepts-library/mtg-card
|
||||||
|
sd-concepts-library/mtl-longsky
|
||||||
|
sd-concepts-library/mu-sadr
|
||||||
|
sd-concepts-library/munch-leaks-style
|
||||||
|
sd-concepts-library/museum-by-coop-himmelblau
|
||||||
|
sd-concepts-library/muxoyara
|
||||||
|
sd-concepts-library/my-hero-academia-style
|
||||||
|
sd-concepts-library/my-mug
|
||||||
|
sd-concepts-library/mycat
|
||||||
|
sd-concepts-library/mystical-nature
|
||||||
|
sd-concepts-library/naf
|
||||||
|
sd-concepts-library/nahiri
|
||||||
|
sd-concepts-library/namine-ritsu
|
||||||
|
sd-concepts-library/naoki-saito
|
||||||
|
sd-concepts-library/nard-style
|
||||||
|
sd-concepts-library/naruto
|
||||||
|
sd-concepts-library/natasha-johnston
|
||||||
|
sd-concepts-library/nathan-wyatt
|
||||||
|
sd-concepts-library/naval-portrait
|
||||||
|
sd-concepts-library/nazuna
|
||||||
|
sd-concepts-library/nebula
|
||||||
|
sd-concepts-library/ned-flanders
|
||||||
|
sd-concepts-library/neon-pastel
|
||||||
|
sd-concepts-library/new-priests
|
||||||
|
sd-concepts-library/nic-papercuts
|
||||||
|
sd-concepts-library/nikodim
|
||||||
|
sd-concepts-library/nissa-revane
|
||||||
|
sd-concepts-library/nixeu
|
||||||
|
sd-concepts-library/noggles
|
||||||
|
sd-concepts-library/nomad
|
||||||
|
sd-concepts-library/nouns-glasses
|
||||||
|
sd-concepts-library/obama-based-on-xi
|
||||||
|
sd-concepts-library/obama-self-2
|
||||||
|
sd-concepts-library/og-mox-style
|
||||||
|
sd-concepts-library/ohisashiburi-style
|
||||||
|
sd-concepts-library/oleg-kuvaev
|
||||||
|
sd-concepts-library/olli-olli
|
||||||
|
sd-concepts-library/on-kawara
|
||||||
|
sd-concepts-library/one-line-drawing
|
||||||
|
sd-concepts-library/onepunchman
|
||||||
|
sd-concepts-library/onzpo
|
||||||
|
sd-concepts-library/orangejacket
|
||||||
|
sd-concepts-library/ori
|
||||||
|
sd-concepts-library/ori-toor
|
||||||
|
sd-concepts-library/orientalist-art
|
||||||
|
sd-concepts-library/osaka-jyo
|
||||||
|
sd-concepts-library/osaka-jyo2
|
||||||
|
sd-concepts-library/osrsmini2
|
||||||
|
sd-concepts-library/osrstiny
|
||||||
|
sd-concepts-library/other-mother
|
||||||
|
sd-concepts-library/ouroboros
|
||||||
|
sd-concepts-library/outfit-items
|
||||||
|
sd-concepts-library/overprettified
|
||||||
|
sd-concepts-library/owl-house
|
||||||
|
sd-concepts-library/painted-by-silver-of-999
|
||||||
|
sd-concepts-library/painted-by-silver-of-999-2
|
||||||
|
sd-concepts-library/painted-student
|
||||||
|
sd-concepts-library/painting
|
||||||
|
sd-concepts-library/pantone-milk
|
||||||
|
sd-concepts-library/paolo-bonolis
|
||||||
|
sd-concepts-library/party-girl
|
||||||
|
sd-concepts-library/pascalsibertin
|
||||||
|
sd-concepts-library/pastelartstyle
|
||||||
|
sd-concepts-library/paul-noir
|
||||||
|
sd-concepts-library/pen-ink-portraits-bennorthen
|
||||||
|
sd-concepts-library/phan
|
||||||
|
sd-concepts-library/phan-s-collage
|
||||||
|
sd-concepts-library/phc
|
||||||
|
sd-concepts-library/phoenix-01
|
||||||
|
sd-concepts-library/pineda-david
|
||||||
|
sd-concepts-library/pink-beast-pastelae-style
|
||||||
|
sd-concepts-library/pintu
|
||||||
|
sd-concepts-library/pion-by-august-semionov
|
||||||
|
sd-concepts-library/piotr-jablonski
|
||||||
|
sd-concepts-library/pixel-mania
|
||||||
|
sd-concepts-library/pixel-toy
|
||||||
|
sd-concepts-library/pjablonski-style
|
||||||
|
sd-concepts-library/plant-style
|
||||||
|
sd-concepts-library/plen-ki-mun
|
||||||
|
sd-concepts-library/pokemon-conquest-sprites
|
||||||
|
sd-concepts-library/pool-test
|
||||||
|
sd-concepts-library/poolrooms
|
||||||
|
sd-concepts-library/poring-ragnarok-online
|
||||||
|
sd-concepts-library/poutine-dish
|
||||||
|
sd-concepts-library/princess-knight-art
|
||||||
|
sd-concepts-library/progress-chip
|
||||||
|
sd-concepts-library/puerquis-toy
|
||||||
|
sd-concepts-library/purplefishli
|
||||||
|
sd-concepts-library/pyramidheadcosplay
|
||||||
|
sd-concepts-library/qpt-atrium
|
||||||
|
sd-concepts-library/quiesel
|
||||||
|
sd-concepts-library/r-crumb-style
|
||||||
|
sd-concepts-library/rahkshi-bionicle
|
||||||
|
sd-concepts-library/raichu
|
||||||
|
sd-concepts-library/rail-scene
|
||||||
|
sd-concepts-library/rail-scene-style
|
||||||
|
sd-concepts-library/ralph-mcquarrie
|
||||||
|
sd-concepts-library/ransom
|
||||||
|
sd-concepts-library/rayne-weynolds
|
||||||
|
sd-concepts-library/rcrumb-portraits-style
|
||||||
|
sd-concepts-library/rd-chaos
|
||||||
|
sd-concepts-library/rd-paintings
|
||||||
|
sd-concepts-library/red-glasses
|
||||||
|
sd-concepts-library/reeducation-camp
|
||||||
|
sd-concepts-library/reksio-dog
|
||||||
|
sd-concepts-library/rektguy
|
||||||
|
sd-concepts-library/remert
|
||||||
|
sd-concepts-library/renalla
|
||||||
|
sd-concepts-library/repeat
|
||||||
|
sd-concepts-library/retro-girl
|
||||||
|
sd-concepts-library/retro-mecha-rangers
|
||||||
|
sd-concepts-library/retropixelart-pinguin
|
||||||
|
sd-concepts-library/rex-deno
|
||||||
|
sd-concepts-library/rhizomuse-machine-bionic-sculpture
|
||||||
|
sd-concepts-library/ricar
|
||||||
|
sd-concepts-library/rickyart
|
||||||
|
sd-concepts-library/rico-face
|
||||||
|
sd-concepts-library/riker-doll
|
||||||
|
sd-concepts-library/rikiart
|
||||||
|
sd-concepts-library/rikiboy-art
|
||||||
|
sd-concepts-library/rilakkuma
|
||||||
|
sd-concepts-library/rishusei-style
|
||||||
|
sd-concepts-library/rj-palmer
|
||||||
|
sd-concepts-library/rl-pkmn-test
|
||||||
|
sd-concepts-library/road-to-ruin
|
||||||
|
sd-concepts-library/robertnava
|
||||||
|
sd-concepts-library/roblox-avatar
|
||||||
|
sd-concepts-library/roy-lichtenstein
|
||||||
|
sd-concepts-library/ruan-jia
|
||||||
|
sd-concepts-library/russian
|
||||||
|
sd-concepts-library/s1m-naoto-ohshima
|
||||||
|
sd-concepts-library/saheeli-rai
|
||||||
|
sd-concepts-library/sakimi-style
|
||||||
|
sd-concepts-library/salmonid
|
||||||
|
sd-concepts-library/sam-yang
|
||||||
|
sd-concepts-library/sanguo-guanyu
|
||||||
|
sd-concepts-library/sas-style
|
||||||
|
sd-concepts-library/scarlet-witch
|
||||||
|
sd-concepts-library/schloss-mosigkau
|
||||||
|
sd-concepts-library/scrap-style
|
||||||
|
sd-concepts-library/scratch-project
|
||||||
|
sd-concepts-library/sculptural-style
|
||||||
|
sd-concepts-library/sd-concepts-library-uma-meme
|
||||||
|
sd-concepts-library/seamless-ground
|
||||||
|
sd-concepts-library/selezneva-alisa
|
||||||
|
sd-concepts-library/sem-mac2n
|
||||||
|
sd-concepts-library/senneca
|
||||||
|
sd-concepts-library/seraphimmoonshadow-art
|
||||||
|
sd-concepts-library/sewerslvt
|
||||||
|
sd-concepts-library/she-hulk-law-art
|
||||||
|
sd-concepts-library/she-mask
|
||||||
|
sd-concepts-library/sherhook-painting
|
||||||
|
sd-concepts-library/sherhook-painting-v2
|
||||||
|
sd-concepts-library/shev-linocut
|
||||||
|
sd-concepts-library/shigure-ui-style
|
||||||
|
sd-concepts-library/shiny-polyman
|
||||||
|
sd-concepts-library/shrunken-head
|
||||||
|
sd-concepts-library/shu-doll
|
||||||
|
sd-concepts-library/shvoren-style
|
||||||
|
sd-concepts-library/sims-2-portrait
|
||||||
|
sd-concepts-library/singsing
|
||||||
|
sd-concepts-library/singsing-doll
|
||||||
|
sd-concepts-library/sintez-ico
|
||||||
|
sd-concepts-library/skyfalls
|
||||||
|
sd-concepts-library/slm
|
||||||
|
sd-concepts-library/smarties
|
||||||
|
sd-concepts-library/smiling-friend-style
|
||||||
|
sd-concepts-library/smooth-pencils
|
||||||
|
sd-concepts-library/smurf-style
|
||||||
|
sd-concepts-library/smw-map
|
||||||
|
sd-concepts-library/society-finch
|
||||||
|
sd-concepts-library/sorami-style
|
||||||
|
sd-concepts-library/spider-gwen
|
||||||
|
sd-concepts-library/spritual-monsters
|
||||||
|
sd-concepts-library/stable-diffusion-conceptualizer
|
||||||
|
sd-concepts-library/star-tours-posters
|
||||||
|
sd-concepts-library/stardew-valley-pixel-art
|
||||||
|
sd-concepts-library/starhavenmachinegods
|
||||||
|
sd-concepts-library/sterling-archer
|
||||||
|
sd-concepts-library/stretch-re1-robot
|
||||||
|
sd-concepts-library/stuffed-penguin-toy
|
||||||
|
sd-concepts-library/style-of-marc-allante
|
||||||
|
sd-concepts-library/summie-style
|
||||||
|
sd-concepts-library/sunfish
|
||||||
|
sd-concepts-library/super-nintendo-cartridge
|
||||||
|
sd-concepts-library/supitcha-mask
|
||||||
|
sd-concepts-library/sushi-pixel
|
||||||
|
sd-concepts-library/swamp-choe-2
|
||||||
|
sd-concepts-library/t-skrang
|
||||||
|
sd-concepts-library/takuji-kawano
|
||||||
|
sd-concepts-library/tamiyo
|
||||||
|
sd-concepts-library/tangles
|
||||||
|
sd-concepts-library/tb303
|
||||||
|
sd-concepts-library/tcirle
|
||||||
|
sd-concepts-library/teelip-ir-landscape
|
||||||
|
sd-concepts-library/teferi
|
||||||
|
sd-concepts-library/tela-lenca
|
||||||
|
sd-concepts-library/tela-lenca2
|
||||||
|
sd-concepts-library/terraria-style
|
||||||
|
sd-concepts-library/tesla-bot
|
||||||
|
sd-concepts-library/test
|
||||||
|
sd-concepts-library/test-epson
|
||||||
|
sd-concepts-library/test2
|
||||||
|
sd-concepts-library/testing
|
||||||
|
sd-concepts-library/thalasin
|
||||||
|
sd-concepts-library/thegeneral
|
||||||
|
sd-concepts-library/thorneworks
|
||||||
|
sd-concepts-library/threestooges
|
||||||
|
sd-concepts-library/thunderdome-cover
|
||||||
|
sd-concepts-library/thunderdome-covers
|
||||||
|
sd-concepts-library/ti-junglepunk-v0
|
||||||
|
sd-concepts-library/tili-concept
|
||||||
|
sd-concepts-library/titan-robot
|
||||||
|
sd-concepts-library/tnj
|
||||||
|
sd-concepts-library/toho-pixel
|
||||||
|
sd-concepts-library/tomcat
|
||||||
|
sd-concepts-library/tonal1
|
||||||
|
sd-concepts-library/tony-diterlizzi-s-planescape-art
|
||||||
|
sd-concepts-library/towerplace
|
||||||
|
sd-concepts-library/toy
|
||||||
|
sd-concepts-library/toy-bonnie-plush
|
||||||
|
sd-concepts-library/toyota-sera
|
||||||
|
sd-concepts-library/transmutation-circles
|
||||||
|
sd-concepts-library/trash-polka-artstyle
|
||||||
|
sd-concepts-library/travis-bedel
|
||||||
|
sd-concepts-library/trigger-studio
|
||||||
|
sd-concepts-library/trust-support
|
||||||
|
sd-concepts-library/trypophobia
|
||||||
|
sd-concepts-library/ttte
|
||||||
|
sd-concepts-library/tubby
|
||||||
|
sd-concepts-library/tubby-cats
|
||||||
|
sd-concepts-library/tudisco
|
||||||
|
sd-concepts-library/turtlepics
|
||||||
|
sd-concepts-library/type
|
||||||
|
sd-concepts-library/ugly-sonic
|
||||||
|
sd-concepts-library/uliana-kudinova
|
||||||
|
sd-concepts-library/uma
|
||||||
|
sd-concepts-library/uma-clean-object
|
||||||
|
sd-concepts-library/uma-meme
|
||||||
|
sd-concepts-library/uma-meme-style
|
||||||
|
sd-concepts-library/uma-style-classic
|
||||||
|
sd-concepts-library/unfinished-building
|
||||||
|
sd-concepts-library/urivoldemort
|
||||||
|
sd-concepts-library/uzumaki
|
||||||
|
sd-concepts-library/valorantstyle
|
||||||
|
sd-concepts-library/vb-mox
|
||||||
|
sd-concepts-library/vcr-classique
|
||||||
|
sd-concepts-library/venice
|
||||||
|
sd-concepts-library/vespertine
|
||||||
|
sd-concepts-library/victor-narm
|
||||||
|
sd-concepts-library/vietstoneking
|
||||||
|
sd-concepts-library/vivien-reid
|
||||||
|
sd-concepts-library/vkuoo1
|
||||||
|
sd-concepts-library/vraska
|
||||||
|
sd-concepts-library/w3u
|
||||||
|
sd-concepts-library/walter-wick-photography
|
||||||
|
sd-concepts-library/warhammer-40k-drawing-style
|
||||||
|
sd-concepts-library/waterfallshadow
|
||||||
|
sd-concepts-library/wayne-reynolds-character
|
||||||
|
sd-concepts-library/wedding
|
||||||
|
sd-concepts-library/wedding-HandPainted
|
||||||
|
sd-concepts-library/werebloops
|
||||||
|
sd-concepts-library/wheatland
|
||||||
|
sd-concepts-library/wheatland-arknight
|
||||||
|
sd-concepts-library/wheelchair
|
||||||
|
sd-concepts-library/wildkat
|
||||||
|
sd-concepts-library/willy-hd
|
||||||
|
sd-concepts-library/wire-angels
|
||||||
|
sd-concepts-library/wish-artist-stile
|
||||||
|
sd-concepts-library/wlop-style
|
||||||
|
sd-concepts-library/wojak
|
||||||
|
sd-concepts-library/wojaks-now
|
||||||
|
sd-concepts-library/wojaks-now-now-now
|
||||||
|
sd-concepts-library/xatu
|
||||||
|
sd-concepts-library/xatu2
|
||||||
|
sd-concepts-library/xbh
|
||||||
|
sd-concepts-library/xi
|
||||||
|
sd-concepts-library/xidiversity
|
||||||
|
sd-concepts-library/xioboma
|
||||||
|
sd-concepts-library/xuna
|
||||||
|
sd-concepts-library/xyz
|
||||||
|
sd-concepts-library/yb-anime
|
||||||
|
sd-concepts-library/yerba-mate
|
||||||
|
sd-concepts-library/yesdelete
|
||||||
|
sd-concepts-library/yf21
|
||||||
|
sd-concepts-library/yilanov2
|
||||||
|
sd-concepts-library/yinit
|
||||||
|
sd-concepts-library/yoji-shinkawa-style
|
||||||
|
sd-concepts-library/yolandi-visser
|
||||||
|
sd-concepts-library/yoshi
|
||||||
|
sd-concepts-library/youpi2
|
||||||
|
sd-concepts-library/youtooz-candy
|
||||||
|
sd-concepts-library/yuji-himukai-style
|
||||||
|
sd-concepts-library/zaney
|
||||||
|
sd-concepts-library/zaneypixelz
|
||||||
|
sd-concepts-library/zdenek-art
|
||||||
|
sd-concepts-library/zero
|
||||||
|
sd-concepts-library/zero-bottle
|
||||||
|
sd-concepts-library/zero-suit-samus
|
||||||
|
sd-concepts-library/zillertal-can
|
||||||
|
sd-concepts-library/zizigooloo
|
||||||
|
sd-concepts-library/zk
|
||||||
|
sd-concepts-library/zoroark
|
||||||