Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
renzhc
diffusers_dcu
Commits
bb99623d
Unverified
Commit
bb99623d
authored
Feb 05, 2024
by
Dhruv Nair
Committed by
GitHub
Feb 05, 2024
Browse files
Update IP Adapter tests to use cosine similarity distance (#6806)
* update * update
parent
fdf55b1f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
27 additions
and
19 deletions
+27
-19
tests/pipelines/ip_adapters/test_ip_adapter_stable_diffusion.py
...pipelines/ip_adapters/test_ip_adapter_stable_diffusion.py
+27
-19
No files found.
tests/pipelines/ip_adapters/test_ip_adapter_stable_diffusion.py
View file @
bb99623d
...
@@ -35,6 +35,7 @@ from diffusers.models.attention_processor import AttnProcessor, AttnProcessor2_0
...
@@ -35,6 +35,7 @@ from diffusers.models.attention_processor import AttnProcessor, AttnProcessor2_0
from
diffusers.utils
import
load_image
from
diffusers.utils
import
load_image
from
diffusers.utils.testing_utils
import
(
from
diffusers.utils.testing_utils
import
(
enable_full_determinism
,
enable_full_determinism
,
numpy_cosine_similarity_distance
,
require_torch_gpu
,
require_torch_gpu
,
slow
,
slow
,
torch_device
,
torch_device
,
...
@@ -119,7 +120,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -119,7 +120,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
expected_slice
=
np
.
array
([
0.80810547
,
0.88183594
,
0.9296875
,
0.9189453
,
0.9848633
,
1.0
,
0.97021484
,
1.0
,
1.0
])
expected_slice
=
np
.
array
([
0.80810547
,
0.88183594
,
0.9296875
,
0.9189453
,
0.9848633
,
1.0
,
0.97021484
,
1.0
,
1.0
])
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
pipeline
.
load_ip_adapter
(
"h94/IP-Adapter"
,
subfolder
=
"models"
,
weight_name
=
"ip-adapter-plus_sd15.bin"
)
pipeline
.
load_ip_adapter
(
"h94/IP-Adapter"
,
subfolder
=
"models"
,
weight_name
=
"ip-adapter-plus_sd15.bin"
)
...
@@ -131,7 +133,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -131,7 +133,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
[
0.30444336
,
0.26513672
,
0.22436523
,
0.2758789
,
0.25585938
,
0.20751953
,
0.25390625
,
0.24633789
,
0.21923828
]
[
0.30444336
,
0.26513672
,
0.22436523
,
0.2758789
,
0.25585938
,
0.20751953
,
0.25390625
,
0.24633789
,
0.21923828
]
)
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
def
test_image_to_image
(
self
):
def
test_image_to_image
(
self
):
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
...
@@ -149,7 +152,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -149,7 +152,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
[
0.22167969
,
0.21875
,
0.21728516
,
0.22607422
,
0.21948242
,
0.23925781
,
0.22387695
,
0.25268555
,
0.2722168
]
[
0.22167969
,
0.21875
,
0.21728516
,
0.22607422
,
0.21948242
,
0.23925781
,
0.22387695
,
0.25268555
,
0.2722168
]
)
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
pipeline
.
load_ip_adapter
(
"h94/IP-Adapter"
,
subfolder
=
"models"
,
weight_name
=
"ip-adapter-plus_sd15.bin"
)
pipeline
.
load_ip_adapter
(
"h94/IP-Adapter"
,
subfolder
=
"models"
,
weight_name
=
"ip-adapter-plus_sd15.bin"
)
...
@@ -161,7 +165,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -161,7 +165,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
[
0.35913086
,
0.265625
,
0.26367188
,
0.24658203
,
0.19750977
,
0.39990234
,
0.15258789
,
0.20336914
,
0.5517578
]
[
0.35913086
,
0.265625
,
0.26367188
,
0.24658203
,
0.19750977
,
0.39990234
,
0.15258789
,
0.20336914
,
0.5517578
]
)
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
def
test_inpainting
(
self
):
def
test_inpainting
(
self
):
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
...
@@ -179,7 +184,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -179,7 +184,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
[
0.27148438
,
0.24047852
,
0.22167969
,
0.23217773
,
0.21118164
,
0.21142578
,
0.21875
,
0.20751953
,
0.20019531
]
[
0.27148438
,
0.24047852
,
0.22167969
,
0.23217773
,
0.21118164
,
0.21142578
,
0.21875
,
0.20751953
,
0.20019531
]
)
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
pipeline
.
load_ip_adapter
(
"h94/IP-Adapter"
,
subfolder
=
"models"
,
weight_name
=
"ip-adapter-plus_sd15.bin"
)
pipeline
.
load_ip_adapter
(
"h94/IP-Adapter"
,
subfolder
=
"models"
,
weight_name
=
"ip-adapter-plus_sd15.bin"
)
...
@@ -187,11 +193,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -187,11 +193,8 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
images
=
pipeline
(
**
inputs
).
images
images
=
pipeline
(
**
inputs
).
images
image_slice
=
images
[
0
,
:
3
,
:
3
,
-
1
].
flatten
()
image_slice
=
images
[
0
,
:
3
,
:
3
,
-
1
].
flatten
()
expected_slice
=
np
.
array
(
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
[
0.27294922
,
0.24023438
,
0.21948242
,
0.23242188
,
0.20825195
,
0.2055664
,
0.21679688
,
0.20336914
,
0.19360352
]
assert
max_diff
<
5e-4
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
def
test_text_to_image_model_cpu_offload
(
self
):
def
test_text_to_image_model_cpu_offload
(
self
):
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
...
@@ -233,11 +236,10 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -233,11 +236,10 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
images
=
pipeline
(
**
inputs
).
images
images
=
pipeline
(
**
inputs
).
images
image_slice
=
images
[
0
,
:
3
,
:
3
,
-
1
].
flatten
()
image_slice
=
images
[
0
,
:
3
,
:
3
,
-
1
].
flatten
()
expected_slice
=
np
.
array
(
expected_slice
=
np
.
array
([
0.1958
,
0.1475
,
0.1396
,
0.2412
,
0.1658
,
0.1533
,
0.3997
,
0.4055
,
0.4128
])
[
0.18115234
,
0.13500977
,
0.13427734
,
0.24194336
,
0.17138672
,
0.16625977
,
0.4260254
,
0.43359375
,
0.4416504
]
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
def
test_unload
(
self
):
def
test_unload
(
self
):
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
...
@@ -277,7 +279,9 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -277,7 +279,9 @@ class IPAdapterSDIntegrationTests(IPAdapterNightlyTestsMixin):
expected_slice
=
np
.
array
(
expected_slice
=
np
.
array
(
[
0.5234375
,
0.53515625
,
0.5629883
,
0.57128906
,
0.59521484
,
0.62109375
,
0.57910156
,
0.6201172
,
0.6508789
]
[
0.5234375
,
0.53515625
,
0.5629883
,
0.57128906
,
0.59521484
,
0.62109375
,
0.57910156
,
0.6201172
,
0.6508789
]
)
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
@
slow
@
slow
...
@@ -314,7 +318,8 @@ class IPAdapterSDXLIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -314,7 +318,8 @@ class IPAdapterSDXLIntegrationTests(IPAdapterNightlyTestsMixin):
]
]
)
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
...
@@ -339,7 +344,8 @@ class IPAdapterSDXLIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -339,7 +344,8 @@ class IPAdapterSDXLIntegrationTests(IPAdapterNightlyTestsMixin):
[
0.0576596
,
0.05600825
,
0.04479006
,
0.05288461
,
0.05461192
,
0.05137569
,
0.04867965
,
0.05301541
,
0.04939842
]
[
0.0576596
,
0.05600825
,
0.04479006
,
0.05288461
,
0.05461192
,
0.05137569
,
0.04867965
,
0.05301541
,
0.04939842
]
)
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
def
test_image_to_image_sdxl
(
self
):
def
test_image_to_image_sdxl
(
self
):
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"sdxl_models/image_encoder"
)
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"sdxl_models/image_encoder"
)
...
@@ -432,7 +438,8 @@ class IPAdapterSDXLIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -432,7 +438,8 @@ class IPAdapterSDXLIntegrationTests(IPAdapterNightlyTestsMixin):
[
0.14181179
,
0.1493012
,
0.14283323
,
0.14602411
,
0.14915377
,
0.15015268
,
0.14725655
,
0.15009224
,
0.15164584
]
[
0.14181179
,
0.1493012
,
0.14283323
,
0.14602411
,
0.14915377
,
0.15015268
,
0.14725655
,
0.15009224
,
0.15164584
]
)
)
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-3
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
image_encoder
=
self
.
get_image_encoder
(
repo_id
=
"h94/IP-Adapter"
,
subfolder
=
"models/image_encoder"
)
feature_extractor
=
self
.
get_image_processor
(
"laion/CLIP-ViT-bigG-14-laion2B-39B-b160k"
)
feature_extractor
=
self
.
get_image_processor
(
"laion/CLIP-ViT-bigG-14-laion2B-39B-b160k"
)
...
@@ -457,4 +464,5 @@ class IPAdapterSDXLIntegrationTests(IPAdapterNightlyTestsMixin):
...
@@ -457,4 +464,5 @@ class IPAdapterSDXLIntegrationTests(IPAdapterNightlyTestsMixin):
expected_slice
=
np
.
array
([
0.1398
,
0.1476
,
0.1407
,
0.1442
,
0.1470
,
0.1480
,
0.1449
,
0.1481
,
0.1494
])
expected_slice
=
np
.
array
([
0.1398
,
0.1476
,
0.1407
,
0.1442
,
0.1470
,
0.1480
,
0.1449
,
0.1481
,
0.1494
])
assert
np
.
allclose
(
image_slice
,
expected_slice
,
atol
=
1e-4
,
rtol
=
1e-4
)
max_diff
=
numpy_cosine_similarity_distance
(
image_slice
,
expected_slice
)
assert
max_diff
<
5e-4
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment