Spaces:
Sleeping
Sleeping
Dominik Hintersdorf
commited on
Commit
·
2de5878
1
Parent(s):
745c665
initial commit
Browse files- README.md +5 -5
- app.py +605 -0
- calculate_text_embeddings.ipynb +284 -0
- download_example_images.py +42 -0
- full_names.csv +0 -0
- laion_membership_occurence_count.csv +547 -0
- prompt_text_embeddings/ViT-B-16_prompt_text_embeddings.pt +3 -0
- prompt_text_embeddings/ViT-B-32_prompt_text_embeddings.pt +3 -0
- prompt_text_embeddings/ViT-L-14_prompt_text_embeddings.pt +3 -0
- requirements.txt +7 -0
README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
---
|
2 |
-
title: Does Clip Know My Face
|
3 |
-
emoji:
|
4 |
colorFrom: blue
|
5 |
colorTo: red
|
6 |
sdk: gradio
|
7 |
-
sdk_version: 3.
|
8 |
app_file: app.py
|
9 |
pinned: false
|
|
|
|
|
10 |
---
|
11 |
-
|
12 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
1 |
---
|
2 |
+
title: Does Clip Know My Face?
|
3 |
+
emoji: 🧑
|
4 |
colorFrom: blue
|
5 |
colorTo: red
|
6 |
sdk: gradio
|
7 |
+
sdk_version: 3.18.0
|
8 |
app_file: app.py
|
9 |
pinned: false
|
10 |
+
license: cc-by-sa-4.0
|
11 |
+
python_version: 3.10.0
|
12 |
---
|
|
|
|
app.py
ADDED
@@ -0,0 +1,605 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import glob
|
2 |
+
import tempfile
|
3 |
+
from decimal import Decimal
|
4 |
+
from pathlib import Path
|
5 |
+
from typing import List, Dict, Any
|
6 |
+
|
7 |
+
import gradio as gr
|
8 |
+
from PIL import Image
|
9 |
+
import open_clip
|
10 |
+
import torch
|
11 |
+
import os
|
12 |
+
import pandas as pd
|
13 |
+
import numpy as np
|
14 |
+
from gradio import processing_utils, utils
|
15 |
+
|
16 |
+
from download_example_images import read_actor_files, save_images_to_folder
|
17 |
+
|
18 |
+
DEFAULT_INITIAL_NAME = "John Doe"
|
19 |
+
PROMPTS = [
|
20 |
+
'{0}',
|
21 |
+
'an image of {0}',
|
22 |
+
'a photo of {0}',
|
23 |
+
'{0} on a photo',
|
24 |
+
'a photo of a person named {0}',
|
25 |
+
'a person named {0}',
|
26 |
+
'a man named {0}',
|
27 |
+
'a woman named {0}',
|
28 |
+
'the name of the person is {0}',
|
29 |
+
'a photo of a person with the name {0}',
|
30 |
+
'{0} at a gala',
|
31 |
+
'a photo of the celebrity {0}',
|
32 |
+
'actor {0}',
|
33 |
+
'actress {0}',
|
34 |
+
'a colored photo of {0}',
|
35 |
+
'a black and white photo of {0}',
|
36 |
+
'a cool photo of {0}',
|
37 |
+
'a cropped photo of {0}',
|
38 |
+
'a cropped image of {0}',
|
39 |
+
'{0} in a suit',
|
40 |
+
'{0} in a dress'
|
41 |
+
]
|
42 |
+
OPEN_CLIP_MODEL_NAMES = ['ViT-B-32', 'ViT-B-16', 'ViT-L-14']
|
43 |
+
NUM_TOTAL_NAMES = 1_000
|
44 |
+
SEED = 42
|
45 |
+
MIN_NUM_CORRECT_PROMPT_PREDS = 1
|
46 |
+
EDAMPLE_IMAGE_DIR = './example_images/'
|
47 |
+
IMG_BATCHSIZE = 16
|
48 |
+
|
49 |
+
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
|
50 |
+
|
51 |
+
EXAMPLE_IMAGE_URLS = read_actor_files(EDAMPLE_IMAGE_DIR)
|
52 |
+
save_images_to_folder(os.path.join(EDAMPLE_IMAGE_DIR, 'images'), EXAMPLE_IMAGE_URLS)
|
53 |
+
|
54 |
+
MODELS = {}
|
55 |
+
for model_name in OPEN_CLIP_MODEL_NAMES:
|
56 |
+
dataset = 'LAION400M'
|
57 |
+
model, _, preprocess = open_clip.create_model_and_transforms(
|
58 |
+
model_name,
|
59 |
+
pretrained=f'{dataset.lower()}_e32'
|
60 |
+
)
|
61 |
+
model = model.eval()
|
62 |
+
MODELS[f'OpenClip {model_name} trained on {dataset}'] = {
|
63 |
+
'model_instance': model,
|
64 |
+
'preprocessing': preprocess,
|
65 |
+
'model_name': model_name,
|
66 |
+
'prompt_text_embeddings': torch.load(f'./prompt_text_embeddings/{model_name}_prompt_text_embeddings.pt')
|
67 |
+
}
|
68 |
+
|
69 |
+
FULL_NAMES_DF = pd.read_csv('full_names.csv', index_col=0)
|
70 |
+
LAION_MEMBERSHIP_OCCURENCE = pd.read_csv('laion_membership_occurence_count.csv', index_col=0)
|
71 |
+
|
72 |
+
EXAMPLE_ACTORS_BY_MODEL = {
|
73 |
+
"ViT-B-32": ["T._J._Thyne"],
|
74 |
+
"ViT-B-16": ["Barbara_Schöneberger", "Carolin_Kebekus"],
|
75 |
+
"ViT-L-14": ["Max_Giermann", "Nicole_De_Boer"]
|
76 |
+
}
|
77 |
+
|
78 |
+
EXAMPLES = []
|
79 |
+
for model_name, person_names in EXAMPLE_ACTORS_BY_MODEL.items():
|
80 |
+
for name in person_names:
|
81 |
+
image_folder = os.path.join("./example_images/images/", name)
|
82 |
+
for dd_model_name in MODELS.keys():
|
83 |
+
if model_name not in dd_model_name:
|
84 |
+
continue
|
85 |
+
|
86 |
+
EXAMPLES.append([
|
87 |
+
dd_model_name,
|
88 |
+
name.replace("_", " "),
|
89 |
+
[[x.format(name.replace("_", " ")) for x in PROMPTS]],
|
90 |
+
[os.path.join(image_folder, x) for x in os.listdir(image_folder)]
|
91 |
+
])
|
92 |
+
|
93 |
+
LICENSE_DETAILS = """
|
94 |
+
<details>
|
95 |
+
<summary>Example Images License Information</summary>
|
96 |
+
|
97 |
+
### Barbara Schöneberger
|
98 |
+
|
99 |
+
| Image Name | Image Url | Author | License |
|
100 |
+
|----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------|--------------|
|
101 |
+
| Barbara_Schöneberger_0.jpg | [https://upload.wikimedia.org/wikipedia/commons/1/1d/Barbara_Sch%C3%B6neberger_-_Deutscher_Radiopreis_Hamburg_2016_13.jpg](https://upload.wikimedia.org/wikipedia/commons/1/1d/Barbara_Sch%C3%B6neberger_-_Deutscher_Radiopreis_Hamburg_2016_13.jpg) | Frank Schwichtenberg | CC-BY-SA-3.0 |
|
102 |
+
| Barbara_Schöneberger_1.jpg | [https://upload.wikimedia.org/wikipedia/commons/9/9d/Barbara_Sch%C3%B6neberger_%282007%29.jpg](https://upload.wikimedia.org/wikipedia/commons/9/9d/Barbara_Sch%C3%B6neberger_%282007%29.jpg) | Pottschalk | CC-BY-SA-3.0 |
|
103 |
+
| Barbara_Schöneberger_2.jpg | [https://upload.wikimedia.org/wikipedia/commons/f/f0/Barbara_Sch%C3%B6neberger_-_Deutscher_Radiopreis_Hamburg_2016_03.jpg](https://upload.wikimedia.org/wikipedia/commons/f/f0/Barbara_Sch%C3%B6neberger_-_Deutscher_Radiopreis_Hamburg_2016_03.jpg) | Frank Schwichtenberg | CC-BY-SA-3.0 |
|
104 |
+
| Barbara_Schöneberger_3.jpg | [https://upload.wikimedia.org/wikipedia/commons/f/fa/Barbara_Sch%C3%B6neberger_-_Deutscher_Radiopreis_Hamburg_2016_12.jpg](https://upload.wikimedia.org/wikipedia/commons/f/fa/Barbara_Sch%C3%B6neberger_-_Deutscher_Radiopreis_Hamburg_2016_12.jpg) | Frank Schwichtenberg | CC-BY-SA-3.0 |
|
105 |
+
| Barbara_Schöneberger_4.jpg | [https://upload.wikimedia.org/wikipedia/commons/0/0a/Barbara_Sch%C3%B6neberger_-_Deutscher_Radiopreis_Hamburg_2016_01.jpg](https://upload.wikimedia.org/wikipedia/commons/0/0a/Barbara_Sch%C3%B6neberger_-_Deutscher_Radiopreis_Hamburg_2016_01.jpg) | Frank Schwichtenberg | CC-BY-SA-3.0 |
|
106 |
+
|
107 |
+
### Carolin Kebekus
|
108 |
+
|
109 |
+
| Image Name | Image Url | Author | License |
|
110 |
+
|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|--------------|
|
111 |
+
| Carolin_Kebekus_0.jpg | [https://upload.wikimedia.org/wikipedia/commons/c/ce/Carolin_Kebekus_-_2019102193318_2019-04-12_Radio_Regenbogen_Award_2019_-_Sven_-_1D_X_MK_II_-_0905_-_AK8I0075.jpg](https://upload.wikimedia.org/wikipedia/commons/c/ce/Carolin_Kebekus_-_2019102193318_2019-04-12_Radio_Regenbogen_Award_2019_-_Sven_-_1D_X_MK_II_-_0905_-_AK8I0075.jpg) | Sven Mandel | CC-BY-SA-4.0 |
|
112 |
+
| Carolin_Kebekus_1.jpg | [https://upload.wikimedia.org/wikipedia/commons/4/45/Carolin-Kebekus-Bonn.jpg](https://upload.wikimedia.org/wikipedia/commons/4/45/Carolin-Kebekus-Bonn.jpg) | Superbass | CC-BY-SA-3.0 |
|
113 |
+
| Carolin_Kebekus_2.jpg | [https://upload.wikimedia.org/wikipedia/commons/4/45/Carolin-Kebekus-Bonn.jpg](https://upload.wikimedia.org/wikipedia/commons/4/45/Carolin-Kebekus-Bonn.jpg) | Sven Mandel | CC-BY-SA-4.0 |
|
114 |
+
| Carolin_Kebekus_3.jpg | [https://upload.wikimedia.org/wikipedia/commons/0/02/Carolin_Kebekus-5848.jpg](https://upload.wikimedia.org/wikipedia/commons/0/02/Carolin_Kebekus-5848.jpg) | Harald Krichel | CC-BY-SA-3.0 |
|
115 |
+
| Carolin_Kebekus_4.jpg | [https://upload.wikimedia.org/wikipedia/commons/e/e1/2021-09-16-Carolin_Kebekus_Deutscher_Fernsehpreis_2021_-3757.jpg](https://upload.wikimedia.org/wikipedia/commons/e/e1/2021-09-16-Carolin_Kebekus_Deutscher_Fernsehpreis_2021_-3757.jpg) | Superbass | CC-BY-SA-4.0 |
|
116 |
+
|
117 |
+
### Max Giermann
|
118 |
+
|
119 |
+
| Image Name | Image Url | Author | License |
|
120 |
+
|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------|--------------|
|
121 |
+
| Max_Giermann_0.jpg | [https://upload.wikimedia.org/wikipedia/commons/4/4b/2018-01-26-DFP_2018-7513.jpg](https://upload.wikimedia.org/wikipedia/commons/4/4b/2018-01-26-DFP_2018-7513.jpg) | Superbass | CC-BY-SA-4.0 |
|
122 |
+
| Max_Giermann_1.jpg | [https://upload.wikimedia.org/wikipedia/commons/f/f6/Deutscher_Fernsehpreis_2012_-_Max_Giermann.jpg](https://upload.wikimedia.org/wikipedia/commons/f/f6/Deutscher_Fernsehpreis_2012_-_Max_Giermann.jpg) | JCS | CC-BY-3.0 |
|
123 |
+
| Max_Giermann_2.jpg | [https://upload.wikimedia.org/wikipedia/commons/1/1c/Hessischer_Filmpreis_2017_-_Max_Giermann_2.JPG](https://upload.wikimedia.org/wikipedia/commons/1/1c/Hessischer_Filmpreis_2017_-_Max_Giermann_2.JPG) | JCS | CC-BY-3.0 |
|
124 |
+
| Max_Giermann_3.jpg | [https://upload.wikimedia.org/wikipedia/commons/1/1d/Max_Giermann_%28extra_3%29_01.jpg](https://upload.wikimedia.org/wikipedia/commons/1/1d/Max_Giermann_%28extra_3%29_01.jpg) | Frank Schwichtenberg | CC-BY-SA-3.0 |
|
125 |
+
| Max_Giermann_4.jpg | [https://upload.wikimedia.org/wikipedia/commons/8/85/Max_Giermann_%28extra_3%29_03.jpg](https://upload.wikimedia.org/wikipedia/commons/8/85/Max_Giermann_%28extra_3%29_03.jpg) | Frank Schwichtenberg | CC-BY-SA-3.0 |
|
126 |
+
|
127 |
+
### Nicole De Boer
|
128 |
+
|
129 |
+
| Image Name | Image Url | Author | License |
|
130 |
+
|----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|--------------|
|
131 |
+
| Nicole_De_Boer_0.jpg | [https://upload.wikimedia.org/wikipedia/commons/0/03/Praha%2C_Lhotka%2C_KC_Novodvorsk%C3%A1%2C_CzechTREK_2013_%2827%29.jpg](https://upload.wikimedia.org/wikipedia/commons/0/03/Praha%2C_Lhotka%2C_KC_Novodvorsk%C3%A1%2C_CzechTREK_2013_%2827%29.jpg) | Harold | CC-BY-SA-3.0 |
|
132 |
+
| Nicole_De_Boer_1.jpg | [https://upload.wikimedia.org/wikipedia/commons/d/db/Nicole_DeBoer_at_Toronto_Comicon_1.jpg](https://upload.wikimedia.org/wikipedia/commons/d/db/Nicole_DeBoer_at_Toronto_Comicon_1.jpg) | Tabercil | CC-BY-SA-3.0 |
|
133 |
+
| Nicole_De_Boer_2.jpg | [https://upload.wikimedia.org/wikipedia/commons/4/4b/Nicole_de_Boer_at_Toronto_Comicon_2_%28cropped%29.jpg](https://upload.wikimedia.org/wikipedia/commons/4/4b/Nicole_de_Boer_at_Toronto_Comicon_2_%28cropped%29.jpg) | Tabercil | CC-BY-SA-3.0 |
|
134 |
+
| Nicole_De_Boer_3.jpg | [https://upload.wikimedia.org/wikipedia/commons/b/b9/Nicole_de_boer_LFCC2015.jpg](https://upload.wikimedia.org/wikipedia/commons/b/b9/Nicole_de_boer_LFCC2015.jpg) | Dazzoboy | CC-BY-SA-4.0 |
|
135 |
+
| Nicole_De_Boer_4.jpg | [https://upload.wikimedia.org/wikipedia/commons/9/90/Nicole_de_Boer_at_Toronto_Comicon_2.jpg](https://upload.wikimedia.org/wikipedia/commons/9/90/Nicole_de_Boer_at_Toronto_Comicon_2.jpg) | Tabercil | CC-BY-SA-3.0 |
|
136 |
+
|
137 |
+
### T. J. Thyne
|
138 |
+
|
139 |
+
| Image Name | Image Url | Author | License |
|
140 |
+
|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------|--------------|
|
141 |
+
| T._J._Thyne_0.jpg | [https://live.staticflickr.com/7036/6837850246_c09a148d70_o.jpg](https://live.staticflickr.com/7036/6837850246_c09a148d70_o.jpg) | Genevieve | CC-BY-2.0 |
|
142 |
+
| T._J._Thyne_1.jpg | [https://live.staticflickr.com/3273/5705869811_d9ff808383_o.jpg](https://live.staticflickr.com/3273/5705869811_d9ff808383_o.jpg) | Genevieve | CC-BY-2.0 |
|
143 |
+
| T._J._Thyne_2.jpg | [https://upload.wikimedia.org/wikipedia/commons/d/d8/TJThyneFanExpo2017.jpg](https://upload.wikimedia.org/wikipedia/commons/d/d8/TJThyneFanExpo2017.jpg) | Christian Dahl-Lacroix | CC-BY-SA-4.0 |
|
144 |
+
| T._J._Thyne_3.jpg | [https://live.staticflickr.com/7041/6984629777_8a415b72d9_b.jpg](https://live.staticflickr.com/7041/6984629777_8a415b72d9_b.jpg) | Genevieve | CC-BY-2.0 |
|
145 |
+
| T._J._Thyne_4.jpg | [https://live.staticflickr.com/7042/6837821654_d65ab80913_b.jpg](https://live.staticflickr.com/7042/6837821654_d65ab80913_b.jpg) | Genevieve | CC-BY-2.0 |
|
146 |
+
|
147 |
+
</details>
|
148 |
+
"""
|
149 |
+
|
150 |
+
CORRECT_RESULT_INTERPRETATION = """<br>
|
151 |
+
<h2>{0} is in the Training Data!</h2>
|
152 |
+
The name of {0} has been <b>correctly predicted for {1} out of {2} prompts.</b> This means that <b>{0} was in
|
153 |
+
the training data and was used to train the model.</b>
|
154 |
+
Keep in mind that the probability of correctly predicting the name for {3} by chance {4} times with {5} possible names for the model to
|
155 |
+
choose from, is only (<sup>1</sup> ⁄ <sub>{5}</sub>)<sup>{6}</sup> = {7}%.
|
156 |
+
"""
|
157 |
+
|
158 |
+
INDECISIVE_RESULT_INTERPRETATION = """<br>
|
159 |
+
<h2>{0} might be in the Training Data!</h2>
|
160 |
+
For none of the {1} prompts the majority vote for the name of {0} was correct. However, while the majority votes are not
|
161 |
+
correct, the name of {0} was correctly predicted {2} times for {3}. This is an indication that the model has seen {0}
|
162 |
+
during training. A different selection of images might have a clearer result. Keep in mind that the probability
|
163 |
+
that the name is correctly predicted by chance {2} times for {3} is
|
164 |
+
(<sup>1</sup> ⁄ <sub>{4}</sub>)<sup>{2}</sup> = {5}%.
|
165 |
+
"""
|
166 |
+
|
167 |
+
INCORRECT_RESULT_INTERPRETATION = """<br>
|
168 |
+
<h2>{0} is most likely not in the Training Data!</h2>
|
169 |
+
The name of {0} has not been correctly predicted for any of the {1} prompts. This is an indication that {0} has
|
170 |
+
most likely not been used for training the model.
|
171 |
+
"""
|
172 |
+
|
173 |
+
OCCURENCE_INFORMATION = """<br><br>
|
174 |
+
According to our analysis {0} appeared {1} times among 400 million image-text pairs in the LAION-400M training dataset.
|
175 |
+
"""
|
176 |
+
|
177 |
+
CSS = """
|
178 |
+
.footer {
|
179 |
+
margin-bottom: 45px;
|
180 |
+
margin-top: 35px;
|
181 |
+
text-align: center;
|
182 |
+
border-bottom: 1px solid #e5e5e5;
|
183 |
+
}
|
184 |
+
#file_upload {
|
185 |
+
max-height: 250px;
|
186 |
+
overflow-y: auto !important;
|
187 |
+
}
|
188 |
+
.footer>p {
|
189 |
+
font-size: .8rem;
|
190 |
+
display: inline-block;
|
191 |
+
padding: 0 10px;
|
192 |
+
transform: translateY(10px);
|
193 |
+
background: white;
|
194 |
+
}
|
195 |
+
|
196 |
+
.dark .footer {
|
197 |
+
border-color: #303030;
|
198 |
+
}
|
199 |
+
.dark .footer>p {
|
200 |
+
background: #0b0f19;
|
201 |
+
}
|
202 |
+
.acknowledgments h4{
|
203 |
+
margin: 1.25em 0 .25em 0;
|
204 |
+
font-weight: bold;
|
205 |
+
font-size: 115%;
|
206 |
+
}
|
207 |
+
"""
|
208 |
+
|
209 |
+
|
210 |
+
# monkey patch the update function of the Files component since otherwise it is not possible to access the original
|
211 |
+
# file name
|
212 |
+
def preprocess(
|
213 |
+
self, x: List[Dict[str, Any]] | None
|
214 |
+
) -> bytes | tempfile._TemporaryFileWrapper | List[
|
215 |
+
bytes | tempfile._TemporaryFileWrapper
|
216 |
+
] | None:
|
217 |
+
"""
|
218 |
+
Parameters:
|
219 |
+
x: List of JSON objects with filename as 'name' property and base64 data as 'data' property
|
220 |
+
Returns:
|
221 |
+
File objects in requested format
|
222 |
+
"""
|
223 |
+
if x is None:
|
224 |
+
return None
|
225 |
+
|
226 |
+
def process_single_file(f) -> bytes | tempfile._TemporaryFileWrapper:
|
227 |
+
file_name, orig_name, data, is_file = (
|
228 |
+
f["name"] if "name" in f.keys() else f["orig_name"],
|
229 |
+
f["orig_name"],
|
230 |
+
f["data"],
|
231 |
+
f.get("is_file", False),
|
232 |
+
)
|
233 |
+
if self.type == "file":
|
234 |
+
if is_file:
|
235 |
+
temp_file_path = self.make_temp_copy_if_needed(file_name)
|
236 |
+
file = tempfile.NamedTemporaryFile(delete=False)
|
237 |
+
file.name = temp_file_path
|
238 |
+
file.orig_name = os.path.basename(orig_name.replace(self.hash_file(file_name), "")) # type: ignore
|
239 |
+
else:
|
240 |
+
file = processing_utils.decode_base64_to_file(
|
241 |
+
data, file_path=file_name
|
242 |
+
)
|
243 |
+
file.orig_name = file_name # type: ignore
|
244 |
+
self.temp_files.add(str(utils.abspath(file.name)))
|
245 |
+
return file
|
246 |
+
elif (
|
247 |
+
self.type == "binary" or self.type == "bytes"
|
248 |
+
): # "bytes" is included for backwards compatibility
|
249 |
+
if is_file:
|
250 |
+
with open(file_name, "rb") as file_data:
|
251 |
+
return file_data.read()
|
252 |
+
return processing_utils.decode_base64_to_binary(data)[0]
|
253 |
+
else:
|
254 |
+
raise ValueError(
|
255 |
+
"Unknown type: "
|
256 |
+
+ str(self.type)
|
257 |
+
+ ". Please choose from: 'file', 'bytes'."
|
258 |
+
)
|
259 |
+
|
260 |
+
if self.file_count == "single":
|
261 |
+
if isinstance(x, list):
|
262 |
+
return process_single_file(x[0])
|
263 |
+
else:
|
264 |
+
return process_single_file(x)
|
265 |
+
else:
|
266 |
+
if isinstance(x, list):
|
267 |
+
return [process_single_file(f) for f in x]
|
268 |
+
else:
|
269 |
+
return process_single_file(x)
|
270 |
+
|
271 |
+
|
272 |
+
gr.Files.preprocess = preprocess
|
273 |
+
|
274 |
+
|
275 |
+
@torch.no_grad()
|
276 |
+
def calculate_text_embeddings(model_name, prompts):
|
277 |
+
tokenizer = open_clip.get_tokenizer(MODELS[model_name]['model_name'])
|
278 |
+
context_vecs = open_clip.tokenize(prompts)
|
279 |
+
|
280 |
+
model_instance = MODELS[model_name]['model_instance']
|
281 |
+
|
282 |
+
model_instance = model_instance.to(DEVICE)
|
283 |
+
context_vecs = context_vecs.to(DEVICE)
|
284 |
+
|
285 |
+
text_features = model_instance.encode_text(context_vecs, normalize=True).cpu()
|
286 |
+
|
287 |
+
model_instance = model_instance.cpu()
|
288 |
+
context_vecs = context_vecs.cpu()
|
289 |
+
|
290 |
+
return text_features
|
291 |
+
|
292 |
+
|
293 |
+
@torch.no_grad()
|
294 |
+
def calculate_image_embeddings(model_name, images):
|
295 |
+
preprocessing = MODELS[model_name]['preprocessing']
|
296 |
+
model_instance = MODELS[model_name]['model_instance']
|
297 |
+
|
298 |
+
# load the given images
|
299 |
+
user_imgs = []
|
300 |
+
for tmp_file_img in images:
|
301 |
+
img = Image.open(tmp_file_img.name)
|
302 |
+
# preprocess the images
|
303 |
+
user_imgs.append(preprocessing(img))
|
304 |
+
|
305 |
+
# calculate the image embeddings
|
306 |
+
image_embeddings = []
|
307 |
+
model_instance = model_instance.to(DEVICE)
|
308 |
+
for batch_idx in range(0, len(user_imgs), IMG_BATCHSIZE):
|
309 |
+
imgs = user_imgs[batch_idx:batch_idx + IMG_BATCHSIZE]
|
310 |
+
imgs = torch.stack(imgs)
|
311 |
+
imgs = imgs.to(DEVICE)
|
312 |
+
|
313 |
+
emb = model_instance.encode_image(imgs, normalize=True).cpu()
|
314 |
+
image_embeddings.append(emb)
|
315 |
+
|
316 |
+
imgs = imgs.cpu()
|
317 |
+
model_instance = model_instance.cpu()
|
318 |
+
|
319 |
+
return torch.cat(image_embeddings)
|
320 |
+
|
321 |
+
|
322 |
+
def get_possible_names(true_name):
|
323 |
+
possible_names = FULL_NAMES_DF
|
324 |
+
possible_names['full_names'] = FULL_NAMES_DF['first_name'].astype(str) + ' ' + FULL_NAMES_DF['last_name'].astype(
|
325 |
+
str)
|
326 |
+
|
327 |
+
possible_names = possible_names[possible_names['full_names'] != true_name]
|
328 |
+
|
329 |
+
# sample the same amount of male and female names
|
330 |
+
sampled_names = possible_names.groupby('sex').sample(int(NUM_TOTAL_NAMES / 2), random_state=42)
|
331 |
+
# shuffle the rows randomly
|
332 |
+
sampled_names = sampled_names.sample(frac=1)
|
333 |
+
# get only the full names since we don't need first and last name and gender anymore
|
334 |
+
possible_full_names = sampled_names['full_names']
|
335 |
+
|
336 |
+
return possible_full_names
|
337 |
+
|
338 |
+
|
339 |
+
def round_to_first_digit(value: Decimal):
|
340 |
+
tmp = np.format_float_positional(value)
|
341 |
+
|
342 |
+
prob_str = []
|
343 |
+
for c in str(tmp):
|
344 |
+
if c in ("0", "."):
|
345 |
+
prob_str.append(c)
|
346 |
+
else:
|
347 |
+
prob_str.append(c)
|
348 |
+
break
|
349 |
+
|
350 |
+
return "".join(prob_str)
|
351 |
+
|
352 |
+
|
353 |
+
def get_majority_predictions(predictions: pd.Series, values_only=False, counts_only=False, value=None):
|
354 |
+
"""Takes a series of predictions and returns the unique values and the number of prediction occurrences
|
355 |
+
in descending order."""
|
356 |
+
values, counts = np.unique(predictions, return_counts=True)
|
357 |
+
descending_counts_indices = counts.argsort()[::-1]
|
358 |
+
values, counts = values[descending_counts_indices], counts[descending_counts_indices]
|
359 |
+
|
360 |
+
idx_most_often_pred_names = np.argwhere(counts == counts.max()).flatten()
|
361 |
+
|
362 |
+
if values_only:
|
363 |
+
return values[idx_most_often_pred_names]
|
364 |
+
elif counts_only:
|
365 |
+
return counts[idx_most_often_pred_names]
|
366 |
+
elif value is not None:
|
367 |
+
if value not in values:
|
368 |
+
return [0]
|
369 |
+
# return how often the values appears in the predictions
|
370 |
+
return counts[np.where(values == value)[0]]
|
371 |
+
else:
|
372 |
+
return values[idx_most_often_pred_names], counts[idx_most_often_pred_names]
|
373 |
+
|
374 |
+
|
375 |
+
def on_submit_btn_click(model_name, true_name, prompts, images):
|
376 |
+
# assert that the name is in the prompts
|
377 |
+
assert prompts.iloc[0].str.contains(true_name).sum() == len(prompts.T)
|
378 |
+
|
379 |
+
# calculate the image embeddings
|
380 |
+
img_embeddings = calculate_image_embeddings(model_name, images)
|
381 |
+
|
382 |
+
# calculate the text embeddings of the populated prompts
|
383 |
+
user_text_emb = calculate_text_embeddings(model_name, prompts.values[0].tolist())
|
384 |
+
|
385 |
+
# get the indices of the possible names
|
386 |
+
possible_names = get_possible_names(true_name)
|
387 |
+
# get the text embeddings of the possible names
|
388 |
+
prompt_text_embeddings = MODELS[model_name]['prompt_text_embeddings']
|
389 |
+
text_embeddings_used_for_prediction = prompt_text_embeddings.index_select(1,
|
390 |
+
torch.tensor(possible_names.index.values))
|
391 |
+
|
392 |
+
# add the true name and the text embeddings to the possible names
|
393 |
+
names_used_for_prediction = pd.concat([possible_names, pd.Series(true_name)], ignore_index=True)
|
394 |
+
text_embeddings_used_for_prediction = torch.cat([text_embeddings_used_for_prediction, user_text_emb.unsqueeze(1)],
|
395 |
+
dim=1)
|
396 |
+
|
397 |
+
# calculate the similarity of the images and the given texts
|
398 |
+
with torch.no_grad():
|
399 |
+
logits_per_image = MODELS[model_name][
|
400 |
+
'model_instance'
|
401 |
+
].logit_scale.exp().cpu() * img_embeddings @ text_embeddings_used_for_prediction.swapaxes(-1, -2)
|
402 |
+
preds = logits_per_image.argmax(-1)
|
403 |
+
|
404 |
+
# get the predicted names for each prompt
|
405 |
+
predicted_names = []
|
406 |
+
for pred in preds:
|
407 |
+
predicted_names.append(names_used_for_prediction.iloc[pred])
|
408 |
+
predicted_names = np.array(predicted_names)
|
409 |
+
|
410 |
+
# convert the predictions into a dataframe
|
411 |
+
name_predictions = pd.DataFrame(predicted_names).T.reset_index().rename(
|
412 |
+
columns={i: f'Prompt {i + 1}' for i in range(len(predicted_names))}
|
413 |
+
).rename(columns={'index': 'Image'})
|
414 |
+
# add the image names
|
415 |
+
name_predictions['Image'] = [x.orig_name for x in images]
|
416 |
+
|
417 |
+
# get the majority votes
|
418 |
+
majority_preds = name_predictions[[f'Prompt {i + 1}' for i in range(len(PROMPTS))]].apply(
|
419 |
+
lambda x: get_majority_predictions(x, values_only=True)
|
420 |
+
)
|
421 |
+
# get how often the majority name was predicted
|
422 |
+
majority_preds_counts = name_predictions[[f'Prompt {i + 1}' for i in range(len(PROMPTS))]].apply(
|
423 |
+
lambda x: get_majority_predictions(x, counts_only=True)
|
424 |
+
).apply(lambda x: x[0])
|
425 |
+
# get how often the correct name was predicted - even if no majority
|
426 |
+
true_name_preds_counts = name_predictions[[f'Prompt {i + 1}' for i in range(len(PROMPTS))]].apply(
|
427 |
+
lambda x: get_majority_predictions(x, value=true_name)
|
428 |
+
).apply(lambda x: x[0])
|
429 |
+
|
430 |
+
# convert the majority preds to a series of lists if it is a dataframe
|
431 |
+
majority_preds = majority_preds.T.squeeze().apply(lambda x: [x]) if len(majority_preds) == 1 else majority_preds
|
432 |
+
|
433 |
+
# create the results dataframe for display
|
434 |
+
result = pd.concat(
|
435 |
+
[name_predictions,
|
436 |
+
pd.concat([pd.Series({'Image': 'Correct Name Predictions'}), true_name_preds_counts]).to_frame().T],
|
437 |
+
ignore_index=True
|
438 |
+
)
|
439 |
+
result = pd.concat(
|
440 |
+
[result, pd.concat([pd.Series({'Image': 'Majority Vote'}), majority_preds]).to_frame().T],
|
441 |
+
ignore_index=True
|
442 |
+
)
|
443 |
+
result = pd.concat(
|
444 |
+
[result, pd.concat([pd.Series({'Image': 'Majority Vote Counts'}), majority_preds_counts]).to_frame().T],
|
445 |
+
ignore_index=True
|
446 |
+
)
|
447 |
+
result = result.set_index('Image')
|
448 |
+
|
449 |
+
# check whether there is only one majority vote. If not, display Not Applicable
|
450 |
+
result.loc['Majority Vote'] = result.loc['Majority Vote'].apply(
|
451 |
+
lambda x: x[0] if len(x) == 1 else "N/A")
|
452 |
+
|
453 |
+
# check whether the majority prediction is the correct name
|
454 |
+
result.loc['Correct Majority Prediction'] = result.apply(lambda x: x['Majority Vote'] == true_name, axis=0)
|
455 |
+
|
456 |
+
result = result[[f'Prompt {i + 1}' for i in range(len(PROMPTS))]].sort_values(
|
457 |
+
['Correct Name Predictions', 'Majority Vote Counts', "Correct Majority Prediction"], axis=1, ascending=False
|
458 |
+
)
|
459 |
+
|
460 |
+
predictions = result.loc[[x.orig_name for x in images]]
|
461 |
+
prediction_results = result.loc[['Correct Name Predictions', 'Majority Vote', 'Correct Majority Prediction']]
|
462 |
+
|
463 |
+
# if there are correct predictions
|
464 |
+
num_correct_maj_preds = prediction_results.loc['Correct Majority Prediction'].sum()
|
465 |
+
num_correct_name_preds = result.loc['Correct Name Predictions'].max()
|
466 |
+
if num_correct_maj_preds > 0:
|
467 |
+
interpretation = CORRECT_RESULT_INTERPRETATION.format(
|
468 |
+
true_name,
|
469 |
+
num_correct_maj_preds,
|
470 |
+
len(PROMPTS),
|
471 |
+
prediction_results.columns[0],
|
472 |
+
len(images),
|
473 |
+
len(possible_names),
|
474 |
+
predictions.iloc[:, 0].value_counts()[true_name],
|
475 |
+
round_to_first_digit(
|
476 |
+
(
|
477 |
+
(Decimal(1) / Decimal(len(possible_names))) ** predictions.iloc[:, 0].value_counts()[true_name]
|
478 |
+
) * Decimal(100)
|
479 |
+
)
|
480 |
+
)
|
481 |
+
elif num_correct_name_preds > 0:
|
482 |
+
interpretation = INDECISIVE_RESULT_INTERPRETATION.format(
|
483 |
+
true_name,
|
484 |
+
len(PROMPTS),
|
485 |
+
num_correct_name_preds,
|
486 |
+
prediction_results.columns[result.loc['Correct Name Predictions'].to_numpy().argmax()],
|
487 |
+
len(possible_names),
|
488 |
+
round_to_first_digit(
|
489 |
+
(
|
490 |
+
(Decimal(1) / Decimal(len(possible_names))) ** Decimal(num_correct_name_preds)
|
491 |
+
) * Decimal(100)
|
492 |
+
)
|
493 |
+
)
|
494 |
+
else:
|
495 |
+
interpretation = INCORRECT_RESULT_INTERPRETATION.format(
|
496 |
+
true_name,
|
497 |
+
len(PROMPTS)
|
498 |
+
)
|
499 |
+
|
500 |
+
if true_name.lower() in LAION_MEMBERSHIP_OCCURENCE['name'].str.lower().values:
|
501 |
+
row = LAION_MEMBERSHIP_OCCURENCE[LAION_MEMBERSHIP_OCCURENCE['name'].str.lower() == true_name.lower()]
|
502 |
+
interpretation = interpretation + OCCURENCE_INFORMATION.format(true_name, row['count'].values[0])
|
503 |
+
|
504 |
+
return predictions.reset_index(), prediction_results.reset_index(names=[""]), interpretation
|
505 |
+
|
506 |
+
|
507 |
+
def populate_prompts(name):
|
508 |
+
return [[x.format(name) for x in PROMPTS]]
|
509 |
+
|
510 |
+
|
511 |
+
def load_uploaded_imgs(images):
|
512 |
+
if images is None:
|
513 |
+
return None
|
514 |
+
|
515 |
+
imgs = []
|
516 |
+
for file_wrapper in images:
|
517 |
+
img = Image.open(file_wrapper.name)
|
518 |
+
imgs.append((img, file_wrapper.orig_name))
|
519 |
+
|
520 |
+
return imgs
|
521 |
+
|
522 |
+
|
523 |
+
block = gr.Blocks(css=CSS)
|
524 |
+
with block as demo:
|
525 |
+
gr.HTML(
|
526 |
+
"""
|
527 |
+
<div style="text-align: center; max-width: 750px; margin: 0 auto;">
|
528 |
+
<div>
|
529 |
+
<img
|
530 |
+
class="logo"
|
531 |
+
src="https://aeiljuispo.cloudimg.io/v7/https://s3.amazonaws.com/moonup/production/uploads/1666181274838-62fa1d95e8c9c532aa75331c.png"
|
532 |
+
alt="AIML Logo"
|
533 |
+
style="margin: auto; max-width: 7rem;"
|
534 |
+
>
|
535 |
+
<h1 style="font-weight: 900; font-size: 3rem;">
|
536 |
+
Does CLIP Know My Face?
|
537 |
+
</h1>
|
538 |
+
</div>
|
539 |
+
<p style="margin-bottom: 10px; font-size: 94%">
|
540 |
+
Want to know whether you were used to train a CLIP model? Below you can choose a model, enter your name and upload some pictures.
|
541 |
+
If the model correctly predicts your name for multiple images, it is very likely that you were part of the training data.
|
542 |
+
Pick some of the examples below and try it out!<br><br>
|
543 |
+
Details and further analysis can be found in the paper
|
544 |
+
<a href="https://arxiv.org/abs/2209.07341" style="text-decoration: underline;" target="_blank">
|
545 |
+
Does CLIP Know My Face?
|
546 |
+
</a>.
|
547 |
+
</p>
|
548 |
+
</div>
|
549 |
+
"""
|
550 |
+
)
|
551 |
+
|
552 |
+
with gr.Row():
|
553 |
+
with gr.Box():
|
554 |
+
gr.Markdown("## Inputs")
|
555 |
+
with gr.Column():
|
556 |
+
model_dd = gr.Dropdown(label="CLIP Model", choices=list(MODELS.keys()),
|
557 |
+
value=list(MODELS.keys())[0])
|
558 |
+
true_name = gr.Textbox(label='Name of Person:', lines=1, value=DEFAULT_INITIAL_NAME)
|
559 |
+
prompts = gr.Dataframe(
|
560 |
+
value=[[x.format(DEFAULT_INITIAL_NAME) for x in PROMPTS]],
|
561 |
+
label='Prompts Used (hold shift to scroll sideways):',
|
562 |
+
interactive=False
|
563 |
+
)
|
564 |
+
|
565 |
+
true_name.change(fn=populate_prompts, inputs=[true_name], outputs=prompts, show_progress=True,
|
566 |
+
status_tracker=None)
|
567 |
+
|
568 |
+
uploaded_imgs = gr.Files(label='Upload Images:', file_types=['image'], elem_id='file_upload').style()
|
569 |
+
image_gallery = gr.Gallery(label='Images Used:', show_label=True, elem_id="image_gallery").style(grid=[5])
|
570 |
+
|
571 |
+
uploaded_imgs.change(load_uploaded_imgs, inputs=uploaded_imgs, outputs=image_gallery)
|
572 |
+
submit_btn = gr.Button(value='Submit')
|
573 |
+
|
574 |
+
with gr.Box():
|
575 |
+
gr.Markdown("## Outputs")
|
576 |
+
prediction_df = gr.Dataframe(label="Prediction Output (hold shift to scroll sideways):", interactive=False)
|
577 |
+
result_df = gr.DataFrame(label="Result (hold shift to scroll sideways):", interactive=False)
|
578 |
+
interpretation = gr.HTML()
|
579 |
+
|
580 |
+
submit_btn.click(on_submit_btn_click, inputs=[model_dd, true_name, prompts, uploaded_imgs],
|
581 |
+
outputs=[prediction_df, result_df, interpretation])
|
582 |
+
|
583 |
+
gr.Examples(
|
584 |
+
examples=EXAMPLES,
|
585 |
+
inputs=[model_dd, true_name, prompts, uploaded_imgs],
|
586 |
+
outputs=[prediction_df, result_df, interpretation],
|
587 |
+
fn=on_submit_btn_click,
|
588 |
+
cache_examples=True
|
589 |
+
)
|
590 |
+
|
591 |
+
gr.Markdown(LICENSE_DETAILS)
|
592 |
+
|
593 |
+
gr.HTML(
|
594 |
+
"""
|
595 |
+
<div class="footer">
|
596 |
+
<p> Gradio Demo by AIML@TU Darmstadt</p>
|
597 |
+
</div>
|
598 |
+
<div class="acknowledgments">
|
599 |
+
<p>Created by <a href="https://www.ml.informatik.tu-darmstadt.de/people/dhintersdorf/">Dominik Hintersdorf</a> at <a href="https://www.aiml.informatik.tu-darmstadt.de">AIML Lab</a>.</p>
|
600 |
+
</div>
|
601 |
+
"""
|
602 |
+
)
|
603 |
+
|
604 |
+
if __name__ == "__main__":
|
605 |
+
demo.launch()
|
calculate_text_embeddings.ipynb
ADDED
@@ -0,0 +1,284 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 14,
|
6 |
+
"metadata": {
|
7 |
+
"collapsed": true
|
8 |
+
},
|
9 |
+
"outputs": [],
|
10 |
+
"source": [
|
11 |
+
"import open_clip\n",
|
12 |
+
"import torch\n",
|
13 |
+
"from tqdm.notebook import tqdm\n",
|
14 |
+
"import pandas as pd\n",
|
15 |
+
"import os\n",
|
16 |
+
"\n",
|
17 |
+
"device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n",
|
18 |
+
"\n",
|
19 |
+
"PROMPTS = [\n",
|
20 |
+
" '{0}',\n",
|
21 |
+
" 'an image of {0}',\n",
|
22 |
+
" 'a photo of {0}',\n",
|
23 |
+
" '{0} on a photo',\n",
|
24 |
+
" 'a photo of a person named {0}',\n",
|
25 |
+
" 'a person named {0}',\n",
|
26 |
+
" 'a man named {0}',\n",
|
27 |
+
" 'a woman named {0}',\n",
|
28 |
+
" 'the name of the person is {0}',\n",
|
29 |
+
" 'a photo of a person with the name {0}',\n",
|
30 |
+
" '{0} at a gala',\n",
|
31 |
+
" 'a photo of the celebrity {0}',\n",
|
32 |
+
" 'actor {0}',\n",
|
33 |
+
" 'actress {0}',\n",
|
34 |
+
" 'a colored photo of {0}',\n",
|
35 |
+
" 'a black and white photo of {0}',\n",
|
36 |
+
" 'a cool photo of {0}',\n",
|
37 |
+
" 'a cropped photo of {0}',\n",
|
38 |
+
" 'a cropped image of {0}',\n",
|
39 |
+
" '{0} in a suit',\n",
|
40 |
+
" '{0} in a dress'\n",
|
41 |
+
"]\n",
|
42 |
+
"MODEL_NAMES = ['ViT-B-32', 'ViT-B-16', 'ViT-L-14']\n",
|
43 |
+
"SEED = 42"
|
44 |
+
]
|
45 |
+
},
|
46 |
+
{
|
47 |
+
"cell_type": "code",
|
48 |
+
"execution_count": 2,
|
49 |
+
"outputs": [],
|
50 |
+
"source": [
|
51 |
+
"# init clip\n",
|
52 |
+
"models = {}\n",
|
53 |
+
"preprocessings = {}\n",
|
54 |
+
"tokenizers = {}\n",
|
55 |
+
"for model_name in MODEL_NAMES:\n",
|
56 |
+
" model, _, preprocess = open_clip.create_model_and_transforms(model_name, pretrained='laion400m_e32')\n",
|
57 |
+
" preprocessings[model_name] = preprocess\n",
|
58 |
+
" model = model.eval()\n",
|
59 |
+
" models[model_name] = model\n",
|
60 |
+
" tokenizers[model_name] = open_clip.get_tokenizer(model_name)"
|
61 |
+
],
|
62 |
+
"metadata": {
|
63 |
+
"collapsed": false
|
64 |
+
}
|
65 |
+
},
|
66 |
+
{
|
67 |
+
"cell_type": "code",
|
68 |
+
"execution_count": 3,
|
69 |
+
"outputs": [],
|
70 |
+
"source": [
|
71 |
+
"# define a function to get the predictions for an actor/actress\n",
|
72 |
+
"@torch.no_grad()\n",
|
73 |
+
"def get_text_embeddings(model, context, context_batchsize=1_000, use_tqdm=False):\n",
|
74 |
+
" context_batchsize = context_batchsize * torch.cuda.device_count()\n",
|
75 |
+
" # if there is not batches for the context unsqueeze it\n",
|
76 |
+
" if context.dim() < 3:\n",
|
77 |
+
" context = context.unsqueeze(0)\n",
|
78 |
+
"\n",
|
79 |
+
" # get the batch size, the number of labels and the sequence length\n",
|
80 |
+
" seq_len = context.shape[-1]\n",
|
81 |
+
" viewed_context = context.view(-1, seq_len)\n",
|
82 |
+
"\n",
|
83 |
+
" text_features = []\n",
|
84 |
+
" for context_batch_idx in tqdm(range(0, len(viewed_context), context_batchsize), desc=\"Calculating Text Embeddings\",\n",
|
85 |
+
" disable=not use_tqdm):\n",
|
86 |
+
" context_batch = viewed_context[context_batch_idx:context_batch_idx + context_batchsize]\n",
|
87 |
+
" batch_text_features = model.encode_text(context_batch, normalize=True).cpu()\n",
|
88 |
+
"\n",
|
89 |
+
" text_features.append(batch_text_features)\n",
|
90 |
+
" text_features = torch.cat(text_features).view(list(context.shape[:-1]) + [-1])\n",
|
91 |
+
"\n",
|
92 |
+
" return text_features"
|
93 |
+
],
|
94 |
+
"metadata": {
|
95 |
+
"collapsed": false
|
96 |
+
}
|
97 |
+
},
|
98 |
+
{
|
99 |
+
"cell_type": "code",
|
100 |
+
"execution_count": 4,
|
101 |
+
"outputs": [
|
102 |
+
{
|
103 |
+
"data": {
|
104 |
+
"text/plain": " first_name sex last_name\n0 Eliana f Cardenas\n1 Meghann f Daniels\n2 Ada f Stevenson\n3 Elsa f Leblanc\n4 Avah f Lambert\n... ... .. ...\n9995 Kasen m Barker\n9996 Camryn m Roberts\n9997 Henry m Whitaker\n9998 Adin m Richards\n9999 Charley m Herman\n\n[10000 rows x 3 columns]",
|
105 |
+
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>first_name</th>\n <th>sex</th>\n <th>last_name</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>Eliana</td>\n <td>f</td>\n <td>Cardenas</td>\n </tr>\n <tr>\n <th>1</th>\n <td>Meghann</td>\n <td>f</td>\n <td>Daniels</td>\n </tr>\n <tr>\n <th>2</th>\n <td>Ada</td>\n <td>f</td>\n <td>Stevenson</td>\n </tr>\n <tr>\n <th>3</th>\n <td>Elsa</td>\n <td>f</td>\n <td>Leblanc</td>\n </tr>\n <tr>\n <th>4</th>\n <td>Avah</td>\n <td>f</td>\n <td>Lambert</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>9995</th>\n <td>Kasen</td>\n <td>m</td>\n <td>Barker</td>\n </tr>\n <tr>\n <th>9996</th>\n <td>Camryn</td>\n <td>m</td>\n <td>Roberts</td>\n </tr>\n <tr>\n <th>9997</th>\n <td>Henry</td>\n <td>m</td>\n <td>Whitaker</td>\n </tr>\n <tr>\n <th>9998</th>\n <td>Adin</td>\n <td>m</td>\n <td>Richards</td>\n </tr>\n <tr>\n <th>9999</th>\n <td>Charley</td>\n <td>m</td>\n <td>Herman</td>\n </tr>\n </tbody>\n</table>\n<p>10000 rows × 3 columns</p>\n</div>"
|
106 |
+
},
|
107 |
+
"execution_count": 4,
|
108 |
+
"metadata": {},
|
109 |
+
"output_type": "execute_result"
|
110 |
+
}
|
111 |
+
],
|
112 |
+
"source": [
|
113 |
+
"# load the possible names\n",
|
114 |
+
"possible_names = pd.read_csv('./full_names.csv', index_col=0)\n",
|
115 |
+
"possible_names\n",
|
116 |
+
"# possible_names_list = (possible_names['first_name'] + ' ' + possible_names['last_name']).tolist()\n",
|
117 |
+
"# possible_names_list[:5]"
|
118 |
+
],
|
119 |
+
"metadata": {
|
120 |
+
"collapsed": false
|
121 |
+
}
|
122 |
+
},
|
123 |
+
{
|
124 |
+
"cell_type": "code",
|
125 |
+
"execution_count": 5,
|
126 |
+
"outputs": [
|
127 |
+
{
|
128 |
+
"data": {
|
129 |
+
"text/plain": " first_name sex last_name prompt_0 prompt_1 \\\n0 Eliana f Cardenas Eliana Cardenas an image of Eliana Cardenas \n1 Meghann f Daniels Meghann Daniels an image of Meghann Daniels \n2 Ada f Stevenson Ada Stevenson an image of Ada Stevenson \n3 Elsa f Leblanc Elsa Leblanc an image of Elsa Leblanc \n4 Avah f Lambert Avah Lambert an image of Avah Lambert \n... ... .. ... ... ... \n9995 Kasen m Barker Kasen Barker an image of Kasen Barker \n9996 Camryn m Roberts Camryn Roberts an image of Camryn Roberts \n9997 Henry m Whitaker Henry Whitaker an image of Henry Whitaker \n9998 Adin m Richards Adin Richards an image of Adin Richards \n9999 Charley m Herman Charley Herman an image of Charley Herman \n\n prompt_2 prompt_3 \\\n0 a photo of Eliana Cardenas Eliana Cardenas on a photo \n1 a photo of Meghann Daniels Meghann Daniels on a photo \n2 a photo of Ada Stevenson Ada Stevenson on a photo \n3 a photo of Elsa Leblanc Elsa Leblanc on a photo \n4 a photo of Avah Lambert Avah Lambert on a photo \n... ... ... \n9995 a photo of Kasen Barker Kasen Barker on a photo \n9996 a photo of Camryn Roberts Camryn Roberts on a photo \n9997 a photo of Henry Whitaker Henry Whitaker on a photo \n9998 a photo of Adin Richards Adin Richards on a photo \n9999 a photo of Charley Herman Charley Herman on a photo \n\n prompt_4 \\\n0 a photo of a person named Eliana Cardenas \n1 a photo of a person named Meghann Daniels \n2 a photo of a person named Ada Stevenson \n3 a photo of a person named Elsa Leblanc \n4 a photo of a person named Avah Lambert \n... ... \n9995 a photo of a person named Kasen Barker \n9996 a photo of a person named Camryn Roberts \n9997 a photo of a person named Henry Whitaker \n9998 a photo of a person named Adin Richards \n9999 a photo of a person named Charley Herman \n\n prompt_5 prompt_6 ... \\\n0 a person named Eliana Cardenas a man named Eliana Cardenas ... \n1 a person named Meghann Daniels a man named Meghann Daniels ... \n2 a person named Ada Stevenson a man named Ada Stevenson ... \n3 a person named Elsa Leblanc a man named Elsa Leblanc ... \n4 a person named Avah Lambert a man named Avah Lambert ... \n... ... ... ... \n9995 a person named Kasen Barker a man named Kasen Barker ... \n9996 a person named Camryn Roberts a man named Camryn Roberts ... \n9997 a person named Henry Whitaker a man named Henry Whitaker ... \n9998 a person named Adin Richards a man named Adin Richards ... \n9999 a person named Charley Herman a man named Charley Herman ... \n\n prompt_11 prompt_12 \\\n0 a photo of the celebrity Eliana Cardenas actor Eliana Cardenas \n1 a photo of the celebrity Meghann Daniels actor Meghann Daniels \n2 a photo of the celebrity Ada Stevenson actor Ada Stevenson \n3 a photo of the celebrity Elsa Leblanc actor Elsa Leblanc \n4 a photo of the celebrity Avah Lambert actor Avah Lambert \n... ... ... \n9995 a photo of the celebrity Kasen Barker actor Kasen Barker \n9996 a photo of the celebrity Camryn Roberts actor Camryn Roberts \n9997 a photo of the celebrity Henry Whitaker actor Henry Whitaker \n9998 a photo of the celebrity Adin Richards actor Adin Richards \n9999 a photo of the celebrity Charley Herman actor Charley Herman \n\n prompt_13 prompt_14 \\\n0 actress Eliana Cardenas a colored photo of Eliana Cardenas \n1 actress Meghann Daniels a colored photo of Meghann Daniels \n2 actress Ada Stevenson a colored photo of Ada Stevenson \n3 actress Elsa Leblanc a colored photo of Elsa Leblanc \n4 actress Avah Lambert a colored photo of Avah Lambert \n... ... ... \n9995 actress Kasen Barker a colored photo of Kasen Barker \n9996 actress Camryn Roberts a colored photo of Camryn Roberts \n9997 actress Henry Whitaker a colored photo of Henry Whitaker \n9998 actress Adin Richards a colored photo of Adin Richards \n9999 actress Charley Herman a colored photo of Charley Herman \n\n prompt_15 \\\n0 a black and white photo of Eliana Cardenas \n1 a black and white photo of Meghann Daniels \n2 a black and white photo of Ada Stevenson \n3 a black and white photo of Elsa Leblanc \n4 a black and white photo of Avah Lambert \n... ... \n9995 a black and white photo of Kasen Barker \n9996 a black and white photo of Camryn Roberts \n9997 a black and white photo of Henry Whitaker \n9998 a black and white photo of Adin Richards \n9999 a black and white photo of Charley Herman \n\n prompt_16 prompt_17 \\\n0 a cool photo of Eliana Cardenas a cropped photo of Eliana Cardenas \n1 a cool photo of Meghann Daniels a cropped photo of Meghann Daniels \n2 a cool photo of Ada Stevenson a cropped photo of Ada Stevenson \n3 a cool photo of Elsa Leblanc a cropped photo of Elsa Leblanc \n4 a cool photo of Avah Lambert a cropped photo of Avah Lambert \n... ... ... \n9995 a cool photo of Kasen Barker a cropped photo of Kasen Barker \n9996 a cool photo of Camryn Roberts a cropped photo of Camryn Roberts \n9997 a cool photo of Henry Whitaker a cropped photo of Henry Whitaker \n9998 a cool photo of Adin Richards a cropped photo of Adin Richards \n9999 a cool photo of Charley Herman a cropped photo of Charley Herman \n\n prompt_18 prompt_19 \\\n0 a cropped image of Eliana Cardenas Eliana Cardenas in a suit \n1 a cropped image of Meghann Daniels Meghann Daniels in a suit \n2 a cropped image of Ada Stevenson Ada Stevenson in a suit \n3 a cropped image of Elsa Leblanc Elsa Leblanc in a suit \n4 a cropped image of Avah Lambert Avah Lambert in a suit \n... ... ... \n9995 a cropped image of Kasen Barker Kasen Barker in a suit \n9996 a cropped image of Camryn Roberts Camryn Roberts in a suit \n9997 a cropped image of Henry Whitaker Henry Whitaker in a suit \n9998 a cropped image of Adin Richards Adin Richards in a suit \n9999 a cropped image of Charley Herman Charley Herman in a suit \n\n prompt_20 \n0 Eliana Cardenas in a dress \n1 Meghann Daniels in a dress \n2 Ada Stevenson in a dress \n3 Elsa Leblanc in a dress \n4 Avah Lambert in a dress \n... ... \n9995 Kasen Barker in a dress \n9996 Camryn Roberts in a dress \n9997 Henry Whitaker in a dress \n9998 Adin Richards in a dress \n9999 Charley Herman in a dress \n\n[10000 rows x 24 columns]",
|
130 |
+
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>first_name</th>\n <th>sex</th>\n <th>last_name</th>\n <th>prompt_0</th>\n <th>prompt_1</th>\n <th>prompt_2</th>\n <th>prompt_3</th>\n <th>prompt_4</th>\n <th>prompt_5</th>\n <th>prompt_6</th>\n <th>...</th>\n <th>prompt_11</th>\n <th>prompt_12</th>\n <th>prompt_13</th>\n <th>prompt_14</th>\n <th>prompt_15</th>\n <th>prompt_16</th>\n <th>prompt_17</th>\n <th>prompt_18</th>\n <th>prompt_19</th>\n <th>prompt_20</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>Eliana</td>\n <td>f</td>\n <td>Cardenas</td>\n <td>Eliana Cardenas</td>\n <td>an image of Eliana Cardenas</td>\n <td>a photo of Eliana Cardenas</td>\n <td>Eliana Cardenas on a photo</td>\n <td>a photo of a person named Eliana Cardenas</td>\n <td>a person named Eliana Cardenas</td>\n <td>a man named Eliana Cardenas</td>\n <td>...</td>\n <td>a photo of the celebrity Eliana Cardenas</td>\n <td>actor Eliana Cardenas</td>\n <td>actress Eliana Cardenas</td>\n <td>a colored photo of Eliana Cardenas</td>\n <td>a black and white photo of Eliana Cardenas</td>\n <td>a cool photo of Eliana Cardenas</td>\n <td>a cropped photo of Eliana Cardenas</td>\n <td>a cropped image of Eliana Cardenas</td>\n <td>Eliana Cardenas in a suit</td>\n <td>Eliana Cardenas in a dress</td>\n </tr>\n <tr>\n <th>1</th>\n <td>Meghann</td>\n <td>f</td>\n <td>Daniels</td>\n <td>Meghann Daniels</td>\n <td>an image of Meghann Daniels</td>\n <td>a photo of Meghann Daniels</td>\n <td>Meghann Daniels on a photo</td>\n <td>a photo of a person named Meghann Daniels</td>\n <td>a person named Meghann Daniels</td>\n <td>a man named Meghann Daniels</td>\n <td>...</td>\n <td>a photo of the celebrity Meghann Daniels</td>\n <td>actor Meghann Daniels</td>\n <td>actress Meghann Daniels</td>\n <td>a colored photo of Meghann Daniels</td>\n <td>a black and white photo of Meghann Daniels</td>\n <td>a cool photo of Meghann Daniels</td>\n <td>a cropped photo of Meghann Daniels</td>\n <td>a cropped image of Meghann Daniels</td>\n <td>Meghann Daniels in a suit</td>\n <td>Meghann Daniels in a dress</td>\n </tr>\n <tr>\n <th>2</th>\n <td>Ada</td>\n <td>f</td>\n <td>Stevenson</td>\n <td>Ada Stevenson</td>\n <td>an image of Ada Stevenson</td>\n <td>a photo of Ada Stevenson</td>\n <td>Ada Stevenson on a photo</td>\n <td>a photo of a person named Ada Stevenson</td>\n <td>a person named Ada Stevenson</td>\n <td>a man named Ada Stevenson</td>\n <td>...</td>\n <td>a photo of the celebrity Ada Stevenson</td>\n <td>actor Ada Stevenson</td>\n <td>actress Ada Stevenson</td>\n <td>a colored photo of Ada Stevenson</td>\n <td>a black and white photo of Ada Stevenson</td>\n <td>a cool photo of Ada Stevenson</td>\n <td>a cropped photo of Ada Stevenson</td>\n <td>a cropped image of Ada Stevenson</td>\n <td>Ada Stevenson in a suit</td>\n <td>Ada Stevenson in a dress</td>\n </tr>\n <tr>\n <th>3</th>\n <td>Elsa</td>\n <td>f</td>\n <td>Leblanc</td>\n <td>Elsa Leblanc</td>\n <td>an image of Elsa Leblanc</td>\n <td>a photo of Elsa Leblanc</td>\n <td>Elsa Leblanc on a photo</td>\n <td>a photo of a person named Elsa Leblanc</td>\n <td>a person named Elsa Leblanc</td>\n <td>a man named Elsa Leblanc</td>\n <td>...</td>\n <td>a photo of the celebrity Elsa Leblanc</td>\n <td>actor Elsa Leblanc</td>\n <td>actress Elsa Leblanc</td>\n <td>a colored photo of Elsa Leblanc</td>\n <td>a black and white photo of Elsa Leblanc</td>\n <td>a cool photo of Elsa Leblanc</td>\n <td>a cropped photo of Elsa Leblanc</td>\n <td>a cropped image of Elsa Leblanc</td>\n <td>Elsa Leblanc in a suit</td>\n <td>Elsa Leblanc in a dress</td>\n </tr>\n <tr>\n <th>4</th>\n <td>Avah</td>\n <td>f</td>\n <td>Lambert</td>\n <td>Avah Lambert</td>\n <td>an image of Avah Lambert</td>\n <td>a photo of Avah Lambert</td>\n <td>Avah Lambert on a photo</td>\n <td>a photo of a person named Avah Lambert</td>\n <td>a person named Avah Lambert</td>\n <td>a man named Avah Lambert</td>\n <td>...</td>\n <td>a photo of the celebrity Avah Lambert</td>\n <td>actor Avah Lambert</td>\n <td>actress Avah Lambert</td>\n <td>a colored photo of Avah Lambert</td>\n <td>a black and white photo of Avah Lambert</td>\n <td>a cool photo of Avah Lambert</td>\n <td>a cropped photo of Avah Lambert</td>\n <td>a cropped image of Avah Lambert</td>\n <td>Avah Lambert in a suit</td>\n <td>Avah Lambert in a dress</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>9995</th>\n <td>Kasen</td>\n <td>m</td>\n <td>Barker</td>\n <td>Kasen Barker</td>\n <td>an image of Kasen Barker</td>\n <td>a photo of Kasen Barker</td>\n <td>Kasen Barker on a photo</td>\n <td>a photo of a person named Kasen Barker</td>\n <td>a person named Kasen Barker</td>\n <td>a man named Kasen Barker</td>\n <td>...</td>\n <td>a photo of the celebrity Kasen Barker</td>\n <td>actor Kasen Barker</td>\n <td>actress Kasen Barker</td>\n <td>a colored photo of Kasen Barker</td>\n <td>a black and white photo of Kasen Barker</td>\n <td>a cool photo of Kasen Barker</td>\n <td>a cropped photo of Kasen Barker</td>\n <td>a cropped image of Kasen Barker</td>\n <td>Kasen Barker in a suit</td>\n <td>Kasen Barker in a dress</td>\n </tr>\n <tr>\n <th>9996</th>\n <td>Camryn</td>\n <td>m</td>\n <td>Roberts</td>\n <td>Camryn Roberts</td>\n <td>an image of Camryn Roberts</td>\n <td>a photo of Camryn Roberts</td>\n <td>Camryn Roberts on a photo</td>\n <td>a photo of a person named Camryn Roberts</td>\n <td>a person named Camryn Roberts</td>\n <td>a man named Camryn Roberts</td>\n <td>...</td>\n <td>a photo of the celebrity Camryn Roberts</td>\n <td>actor Camryn Roberts</td>\n <td>actress Camryn Roberts</td>\n <td>a colored photo of Camryn Roberts</td>\n <td>a black and white photo of Camryn Roberts</td>\n <td>a cool photo of Camryn Roberts</td>\n <td>a cropped photo of Camryn Roberts</td>\n <td>a cropped image of Camryn Roberts</td>\n <td>Camryn Roberts in a suit</td>\n <td>Camryn Roberts in a dress</td>\n </tr>\n <tr>\n <th>9997</th>\n <td>Henry</td>\n <td>m</td>\n <td>Whitaker</td>\n <td>Henry Whitaker</td>\n <td>an image of Henry Whitaker</td>\n <td>a photo of Henry Whitaker</td>\n <td>Henry Whitaker on a photo</td>\n <td>a photo of a person named Henry Whitaker</td>\n <td>a person named Henry Whitaker</td>\n <td>a man named Henry Whitaker</td>\n <td>...</td>\n <td>a photo of the celebrity Henry Whitaker</td>\n <td>actor Henry Whitaker</td>\n <td>actress Henry Whitaker</td>\n <td>a colored photo of Henry Whitaker</td>\n <td>a black and white photo of Henry Whitaker</td>\n <td>a cool photo of Henry Whitaker</td>\n <td>a cropped photo of Henry Whitaker</td>\n <td>a cropped image of Henry Whitaker</td>\n <td>Henry Whitaker in a suit</td>\n <td>Henry Whitaker in a dress</td>\n </tr>\n <tr>\n <th>9998</th>\n <td>Adin</td>\n <td>m</td>\n <td>Richards</td>\n <td>Adin Richards</td>\n <td>an image of Adin Richards</td>\n <td>a photo of Adin Richards</td>\n <td>Adin Richards on a photo</td>\n <td>a photo of a person named Adin Richards</td>\n <td>a person named Adin Richards</td>\n <td>a man named Adin Richards</td>\n <td>...</td>\n <td>a photo of the celebrity Adin Richards</td>\n <td>actor Adin Richards</td>\n <td>actress Adin Richards</td>\n <td>a colored photo of Adin Richards</td>\n <td>a black and white photo of Adin Richards</td>\n <td>a cool photo of Adin Richards</td>\n <td>a cropped photo of Adin Richards</td>\n <td>a cropped image of Adin Richards</td>\n <td>Adin Richards in a suit</td>\n <td>Adin Richards in a dress</td>\n </tr>\n <tr>\n <th>9999</th>\n <td>Charley</td>\n <td>m</td>\n <td>Herman</td>\n <td>Charley Herman</td>\n <td>an image of Charley Herman</td>\n <td>a photo of Charley Herman</td>\n <td>Charley Herman on a photo</td>\n <td>a photo of a person named Charley Herman</td>\n <td>a person named Charley Herman</td>\n <td>a man named Charley Herman</td>\n <td>...</td>\n <td>a photo of the celebrity Charley Herman</td>\n <td>actor Charley Herman</td>\n <td>actress Charley Herman</td>\n <td>a colored photo of Charley Herman</td>\n <td>a black and white photo of Charley Herman</td>\n <td>a cool photo of Charley Herman</td>\n <td>a cropped photo of Charley Herman</td>\n <td>a cropped image of Charley Herman</td>\n <td>Charley Herman in a suit</td>\n <td>Charley Herman in a dress</td>\n </tr>\n </tbody>\n</table>\n<p>10000 rows × 24 columns</p>\n</div>"
|
131 |
+
},
|
132 |
+
"execution_count": 5,
|
133 |
+
"metadata": {},
|
134 |
+
"output_type": "execute_result"
|
135 |
+
}
|
136 |
+
],
|
137 |
+
"source": [
|
138 |
+
"# populate the prompts with the possible names\n",
|
139 |
+
"prompts = []\n",
|
140 |
+
"for idx, row in possible_names.iterrows():\n",
|
141 |
+
" df_dict = row.to_dict()\n",
|
142 |
+
" name = f'{row[\"first_name\"]} {row[\"last_name\"]}'\n",
|
143 |
+
" for prompt_idx, prompt in enumerate(PROMPTS):\n",
|
144 |
+
" df_dict[f'prompt_{prompt_idx}'] = prompt.format(name)\n",
|
145 |
+
" prompts.append(df_dict)\n",
|
146 |
+
"prompts = pd.DataFrame(prompts)\n",
|
147 |
+
"prompts"
|
148 |
+
],
|
149 |
+
"metadata": {
|
150 |
+
"collapsed": false
|
151 |
+
}
|
152 |
+
},
|
153 |
+
{
|
154 |
+
"cell_type": "code",
|
155 |
+
"execution_count": 7,
|
156 |
+
"outputs": [],
|
157 |
+
"source": [
|
158 |
+
"label_context_vecs = []\n",
|
159 |
+
"for i in range(len(PROMPTS)):\n",
|
160 |
+
" context = open_clip.tokenize(prompts[f'prompt_{i}'].to_numpy())\n",
|
161 |
+
" label_context_vecs.append(context)\n",
|
162 |
+
"label_context_vecs = torch.stack(label_context_vecs)"
|
163 |
+
],
|
164 |
+
"metadata": {
|
165 |
+
"collapsed": false
|
166 |
+
}
|
167 |
+
},
|
168 |
+
{
|
169 |
+
"cell_type": "code",
|
170 |
+
"execution_count": 8,
|
171 |
+
"outputs": [
|
172 |
+
{
|
173 |
+
"data": {
|
174 |
+
"text/plain": "Calculating Text Embeddings: 0%| | 0/210 [00:00<?, ?it/s]",
|
175 |
+
"application/vnd.jupyter.widget-view+json": {
|
176 |
+
"version_major": 2,
|
177 |
+
"version_minor": 0,
|
178 |
+
"model_id": "4267d43b498f481db5cbf7e709c9ace3"
|
179 |
+
}
|
180 |
+
},
|
181 |
+
"metadata": {},
|
182 |
+
"output_type": "display_data"
|
183 |
+
},
|
184 |
+
{
|
185 |
+
"data": {
|
186 |
+
"text/plain": "Calculating Text Embeddings: 0%| | 0/210 [00:00<?, ?it/s]",
|
187 |
+
"application/vnd.jupyter.widget-view+json": {
|
188 |
+
"version_major": 2,
|
189 |
+
"version_minor": 0,
|
190 |
+
"model_id": "34a21714ab4d42b2beaa3024bcdd8fdd"
|
191 |
+
}
|
192 |
+
},
|
193 |
+
"metadata": {},
|
194 |
+
"output_type": "display_data"
|
195 |
+
},
|
196 |
+
{
|
197 |
+
"data": {
|
198 |
+
"text/plain": "Calculating Text Embeddings: 0%| | 0/210 [00:00<?, ?it/s]",
|
199 |
+
"application/vnd.jupyter.widget-view+json": {
|
200 |
+
"version_major": 2,
|
201 |
+
"version_minor": 0,
|
202 |
+
"model_id": "3278ad478d7d455da8b03d954fbc4558"
|
203 |
+
}
|
204 |
+
},
|
205 |
+
"metadata": {},
|
206 |
+
"output_type": "display_data"
|
207 |
+
}
|
208 |
+
],
|
209 |
+
"source": [
|
210 |
+
"label_context_vecs = label_context_vecs.to(device)\n",
|
211 |
+
"\n",
|
212 |
+
"text_embeddings_per_model = {}\n",
|
213 |
+
"for model_name, model in models.items():\n",
|
214 |
+
" model = model.to(device)\n",
|
215 |
+
" text_embeddings = get_text_embeddings(model, label_context_vecs, use_tqdm=True, context_batchsize=1_000)\n",
|
216 |
+
" text_embeddings_per_model[model_name] = text_embeddings\n",
|
217 |
+
" model = model.cpu()\n",
|
218 |
+
"\n",
|
219 |
+
"label_context_vecs = label_context_vecs.cpu()"
|
220 |
+
],
|
221 |
+
"metadata": {
|
222 |
+
"collapsed": false
|
223 |
+
}
|
224 |
+
},
|
225 |
+
{
|
226 |
+
"cell_type": "code",
|
227 |
+
"execution_count": 18,
|
228 |
+
"outputs": [],
|
229 |
+
"source": [
|
230 |
+
"# save the calculated embeddings to a file\n",
|
231 |
+
"if not os.path.exists('./prompt_text_embeddings'):\n",
|
232 |
+
" os.makedirs('./prompt_text_embeddings')"
|
233 |
+
],
|
234 |
+
"metadata": {
|
235 |
+
"collapsed": false
|
236 |
+
}
|
237 |
+
},
|
238 |
+
{
|
239 |
+
"cell_type": "code",
|
240 |
+
"execution_count": 20,
|
241 |
+
"outputs": [],
|
242 |
+
"source": [
|
243 |
+
"for model_name, _ in models.items():\n",
|
244 |
+
" torch.save(\n",
|
245 |
+
" text_embeddings_per_model[model_name],\n",
|
246 |
+
" f'./prompt_text_embeddings/{model_name}_prompt_text_embeddings.pt'\n",
|
247 |
+
" )"
|
248 |
+
],
|
249 |
+
"metadata": {
|
250 |
+
"collapsed": false
|
251 |
+
}
|
252 |
+
},
|
253 |
+
{
|
254 |
+
"cell_type": "code",
|
255 |
+
"execution_count": null,
|
256 |
+
"outputs": [],
|
257 |
+
"source": [],
|
258 |
+
"metadata": {
|
259 |
+
"collapsed": false
|
260 |
+
}
|
261 |
+
}
|
262 |
+
],
|
263 |
+
"metadata": {
|
264 |
+
"kernelspec": {
|
265 |
+
"display_name": "Python 3",
|
266 |
+
"language": "python",
|
267 |
+
"name": "python3"
|
268 |
+
},
|
269 |
+
"language_info": {
|
270 |
+
"codemirror_mode": {
|
271 |
+
"name": "ipython",
|
272 |
+
"version": 2
|
273 |
+
},
|
274 |
+
"file_extension": ".py",
|
275 |
+
"mimetype": "text/x-python",
|
276 |
+
"name": "python",
|
277 |
+
"nbconvert_exporter": "python",
|
278 |
+
"pygments_lexer": "ipython2",
|
279 |
+
"version": "2.7.6"
|
280 |
+
}
|
281 |
+
},
|
282 |
+
"nbformat": 4,
|
283 |
+
"nbformat_minor": 0
|
284 |
+
}
|
download_example_images.py
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import urllib.request
|
3 |
+
from tqdm import tqdm
|
4 |
+
from PIL import Image
|
5 |
+
|
6 |
+
|
7 |
+
def read_actor_files(folder_path):
|
8 |
+
urls = {}
|
9 |
+
for file in os.listdir(folder_path):
|
10 |
+
if not file.endswith('.txt'):
|
11 |
+
continue
|
12 |
+
|
13 |
+
file_name_without_ext = os.path.splitext(file)[0]
|
14 |
+
with open(os.path.join(folder_path, file)) as text_file:
|
15 |
+
lines = text_file.readlines()
|
16 |
+
lines = [line.rstrip() for line in lines]
|
17 |
+
|
18 |
+
urls[file_name_without_ext] = lines
|
19 |
+
|
20 |
+
return urls
|
21 |
+
|
22 |
+
|
23 |
+
def save_images_to_folder(folder_path, url_dict):
|
24 |
+
url_opener = urllib.request.URLopener()
|
25 |
+
url_opener.addheader('User-Agent',
|
26 |
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36')
|
27 |
+
|
28 |
+
for name, url_list in tqdm(url_dict.items()):
|
29 |
+
base_folder = os.path.join(folder_path, name)
|
30 |
+
if os.path.exists(base_folder):
|
31 |
+
print(f'The image folder {base_folder} already exists. Skipping folder.')
|
32 |
+
continue
|
33 |
+
os.makedirs(base_folder)
|
34 |
+
for i, url in tqdm(enumerate(url_list), desc=name, leave=False):
|
35 |
+
url = urllib.parse.quote(url, safe='://?=&(),%+')
|
36 |
+
img_file_path = os.path.join(base_folder, f'{name}_{i}.jpg')
|
37 |
+
url_opener.retrieve(url, img_file_path)
|
38 |
+
|
39 |
+
# open the image and resize it
|
40 |
+
img = Image.open(img_file_path)
|
41 |
+
img.thumbnail((1024, 1024))
|
42 |
+
img.save(img_file_path)
|
full_names.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
laion_membership_occurence_count.csv
ADDED
@@ -0,0 +1,547 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
,name,count,membership,bin
|
2 |
+
0,Malu Leicher,0,non_member,"[0, 25)"
|
3 |
+
1,Bernhard Hoëcker,0,non_member,"[0, 25)"
|
4 |
+
2,Adrianne León,0,non_member,"[0, 25)"
|
5 |
+
3,Harriet Herbig-Matten,0,non_member,"[0, 25)"
|
6 |
+
4,Jenilee Harrison,1,member,"[0, 25)"
|
7 |
+
5,Joanna García,1,member,"[0, 25)"
|
8 |
+
6,Sabine Vitua,1,member,"[0, 25)"
|
9 |
+
7,Bettina Lamprecht,2,member,"[0, 25)"
|
10 |
+
8,Guido Cantz,2,member,"[0, 25)"
|
11 |
+
9,Taylor Atelian,2,member,"[0, 25)"
|
12 |
+
10,Jörg Pilawa,2,member,"[0, 25)"
|
13 |
+
11,Max Giermann,4,member,"[0, 25)"
|
14 |
+
12,Mackenzie Aladjem,4,member,"[0, 25)"
|
15 |
+
13,Johannes B. Kerner,4,member,"[0, 25)"
|
16 |
+
14,Erin Chambers,6,member,"[0, 25)"
|
17 |
+
15,Bastian Pastewka,6,member,"[0, 25)"
|
18 |
+
16,Staci Keanan,6,member,"[0, 25)"
|
19 |
+
17,Kai Pflaume,7,member,"[0, 25)"
|
20 |
+
18,Freddy Rodríguez,7,member,"[0, 25)"
|
21 |
+
19,Annette Frier,10,member,"[0, 25)"
|
22 |
+
20,Christina Bennett Lind,10,member,"[0, 25)"
|
23 |
+
21,Jessica Leccia,11,member,"[0, 25)"
|
24 |
+
22,Valerie Cruz,11,member,"[0, 25)"
|
25 |
+
23,Lourdes Benedicto,14,member,"[0, 25)"
|
26 |
+
24,Shannon Kane,14,member,"[0, 25)"
|
27 |
+
25,Alice Dwyer,15,member,"[0, 25)"
|
28 |
+
26,Andrea Bogart,15,member,"[0, 25)"
|
29 |
+
27,Florencia Lozano,19,member,"[0, 25)"
|
30 |
+
28,Kimberly Matula,24,member,"[0, 25)"
|
31 |
+
29,Ilene Kristen,25,member,"[25, 50)"
|
32 |
+
30,Natalia Livingston,27,member,"[25, 50)"
|
33 |
+
31,Lexi Ainsworth,29,member,"[25, 50)"
|
34 |
+
32,Molly Burnett,31,member,"[25, 50)"
|
35 |
+
33,Julie Marie Berman,32,member,"[25, 50)"
|
36 |
+
34,Carla Gallo,32,member,"[25, 50)"
|
37 |
+
35,Olivia d'Abo,34,member,"[25, 50)"
|
38 |
+
36,Jonathan Sadowski,34,member,"[25, 50)"
|
39 |
+
37,Wanda De Jesus,34,member,"[25, 50)"
|
40 |
+
38,Carolin Kebekus,36,member,"[25, 50)"
|
41 |
+
39,Michael Kessler,36,member,"[25, 50)"
|
42 |
+
40,Veronica Hamel,37,member,"[25, 50)"
|
43 |
+
41,Patricia Kalember,37,member,"[25, 50)"
|
44 |
+
42,Jodi Long,38,member,"[25, 50)"
|
45 |
+
43,Crystal Chappell,38,member,"[25, 50)"
|
46 |
+
44,Audrey Landers,38,member,"[25, 50)"
|
47 |
+
45,Nicole de Boer,40,member,"[25, 50)"
|
48 |
+
46,T. J. Thyne,41,member,"[25, 50)"
|
49 |
+
47,Natalie Hall,41,member,"[25, 50)"
|
50 |
+
48,Michael Landes,42,member,"[25, 50)"
|
51 |
+
49,Bobbie Eakes,46,member,"[25, 50)"
|
52 |
+
50,Judi Evans,51,member,"[50, 75)"
|
53 |
+
51,Brooke Langton,57,member,"[50, 75)"
|
54 |
+
52,Lisa LoCicero,57,member,"[50, 75)"
|
55 |
+
53,Mary Crosby,58,member,"[50, 75)"
|
56 |
+
54,Chase Masterson,59,member,"[50, 75)"
|
57 |
+
55,Erin Cummings,61,member,"[50, 75)"
|
58 |
+
56,Jake Weber,62,member,"[50, 75)"
|
59 |
+
57,Arnold Vosloo,64,member,"[50, 75)"
|
60 |
+
58,Peggy McCay,65,member,"[50, 75)"
|
61 |
+
59,Crystal Bernard,67,member,"[50, 75)"
|
62 |
+
60,Barbara Schöneberger,68,member,"[50, 75)"
|
63 |
+
61,Melissa Archer,69,member,"[50, 75)"
|
64 |
+
62,Shelley Hack,69,member,"[50, 75)"
|
65 |
+
63,Jill Eikenberry,72,member,"[50, 75)"
|
66 |
+
64,Kimberlin Brown,73,member,"[50, 75)"
|
67 |
+
65,Lecy Goranson,77,member,"[75, 100)"
|
68 |
+
66,Jackee Harry,77,member,"[75, 100)"
|
69 |
+
67,Tracey Gold,78,member,"[75, 100)"
|
70 |
+
68,Kristen Alderson,78,member,"[75, 100)"
|
71 |
+
69,Rebecca Herbst,84,member,"[75, 100)"
|
72 |
+
70,Joanna Kerns,85,member,"[75, 100)"
|
73 |
+
71,Joyce DeWitt,88,member,"[75, 100)"
|
74 |
+
72,Lesley-Anne Down,90,member,"[75, 100)"
|
75 |
+
73,Jamie Luner,90,member,"[75, 100)"
|
76 |
+
74,Adrienne Frantz,90,member,"[75, 100)"
|
77 |
+
75,Kimberly McCullough,94,member,"[75, 100)"
|
78 |
+
76,Farah Fath,95,member,"[75, 100)"
|
79 |
+
77,Pamela Sue Martin,96,member,"[75, 100)"
|
80 |
+
78,Ellen Greene,98,member,"[75, 100)"
|
81 |
+
79,Lindsay Hartley,98,member,"[75, 100)"
|
82 |
+
80,Amanda Bearse,100,member,"[100, 125)"
|
83 |
+
81,Tempestt Bledsoe,102,member,"[100, 125)"
|
84 |
+
82,Alley Mills,104,member,"[100, 125)"
|
85 |
+
83,Jennifer Gareis,107,member,"[100, 125)"
|
86 |
+
84,Tracey E. Bregman,111,member,"[100, 125)"
|
87 |
+
85,Elizabeth Hendrickson,111,member,"[100, 125)"
|
88 |
+
86,Kristy McNichol,112,member,"[100, 125)"
|
89 |
+
87,Lauren Koslow,113,member,"[100, 125)"
|
90 |
+
88,Josie Bissett,114,member,"[100, 125)"
|
91 |
+
89,Laura Innes,115,member,"[100, 125)"
|
92 |
+
90,Barbara Carrera,117,member,"[100, 125)"
|
93 |
+
91,Brianna Brown,119,member,"[100, 125)"
|
94 |
+
92,Caroline Dhavernas,122,member,"[100, 125)"
|
95 |
+
93,Angell Conwell,126,member,"[125, 150)"
|
96 |
+
94,Katherine Helmond,127,member,"[125, 150)"
|
97 |
+
95,Didi Conn,129,member,"[125, 150)"
|
98 |
+
96,Alice Krige,129,member,"[125, 150)"
|
99 |
+
97,Cathy Lee Crosby,130,member,"[125, 150)"
|
100 |
+
98,Susan Dey,132,member,"[125, 150)"
|
101 |
+
99,Peri Gilpin,133,member,"[125, 150)"
|
102 |
+
100,Tamara Braun,134,member,"[125, 150)"
|
103 |
+
101,Kathy Baker,137,member,"[125, 150)"
|
104 |
+
102,Aisha Hinds,140,member,"[125, 150)"
|
105 |
+
103,Christel Khalil,142,member,"[125, 150)"
|
106 |
+
104,Susan Flannery,143,member,"[125, 150)"
|
107 |
+
105,Kim Delaney,144,member,"[125, 150)"
|
108 |
+
106,Bernard Hill,147,member,"[125, 150)"
|
109 |
+
107,Justine Bateman,151,member,"[150, 200)"
|
110 |
+
108,Denise Crosby,157,member,"[150, 200)"
|
111 |
+
109,Rebecca Budig,161,member,"[150, 200)"
|
112 |
+
110,Andrea Anders,164,member,"[150, 200)"
|
113 |
+
111,Ciara Bravo,167,member,"[150, 200)"
|
114 |
+
112,Jim Beaver,169,member,"[150, 200)"
|
115 |
+
113,Kathryn Joosten,172,member,"[150, 200)"
|
116 |
+
114,Kerr Smith,172,member,"[150, 200)"
|
117 |
+
115,Lauralee Bell,174,member,"[150, 200)"
|
118 |
+
116,Gates McFadden,178,member,"[150, 200)"
|
119 |
+
117,Kellie Martin,180,member,"[150, 200)"
|
120 |
+
118,Amy Davidson,188,member,"[150, 200)"
|
121 |
+
119,Kassie DePaiva,190,member,"[150, 200)"
|
122 |
+
120,Jane Curtin,191,member,"[150, 200)"
|
123 |
+
121,Martin Henderson,192,member,"[150, 200)"
|
124 |
+
122,S. Epatha Merkerson,193,member,"[150, 200)"
|
125 |
+
123,Mary Beth Evans,194,member,"[150, 200)"
|
126 |
+
124,Bonnie Franklin,200,member,"[200, 225)"
|
127 |
+
125,Nancy Lee Grahn,201,member,"[200, 225)"
|
128 |
+
126,Dina Meyer,202,member,"[200, 225)"
|
129 |
+
127,Gabrielle Carteris,205,member,"[200, 225)"
|
130 |
+
128,Edi Gathegi,206,member,"[200, 225)"
|
131 |
+
129,Matt Long,209,member,"[200, 225)"
|
132 |
+
130,Christine Lakin,210,member,"[200, 225)"
|
133 |
+
131,Swoosie Kurtz,212,member,"[200, 225)"
|
134 |
+
132,David Wenham,215,member,"[200, 225)"
|
135 |
+
133,Tamala Jones,216,member,"[200, 225)"
|
136 |
+
134,Anthony Stewart Head,216,member,"[200, 225)"
|
137 |
+
135,Omid Djalili,222,member,"[200, 225)"
|
138 |
+
136,Kristian Alfonso,223,member,"[200, 225)"
|
139 |
+
137,Ian Holm,225,member,"[225, 250)"
|
140 |
+
138,Dan Lauria,226,member,"[225, 250)"
|
141 |
+
139,Sherilyn Fenn,228,member,"[225, 250)"
|
142 |
+
140,Gary Dourdan,228,member,"[225, 250)"
|
143 |
+
141,Nicole Eggert,232,member,"[225, 250)"
|
144 |
+
142,Peggy Lipton,240,member,"[225, 250)"
|
145 |
+
143,Portia Doubleday,242,member,"[225, 250)"
|
146 |
+
144,Christa Miller,246,member,"[225, 250)"
|
147 |
+
145,Drea de Matteo,249,member,"[225, 250)"
|
148 |
+
146,Yasmine Bleeth,250,member,"[250, 275)"
|
149 |
+
147,Laura Leighton,252,member,"[250, 275)"
|
150 |
+
148,Terry Farrell,253,member,"[250, 275)"
|
151 |
+
149,James Frain,257,member,"[250, 275)"
|
152 |
+
150,Delta Burke,257,member,"[250, 275)"
|
153 |
+
151,Sharon Gless,258,member,"[250, 275)"
|
154 |
+
152,Faith Ford,258,member,"[250, 275)"
|
155 |
+
153,Jasmine Guy,259,member,"[250, 275)"
|
156 |
+
154,Melissa Claire Egan,261,member,"[250, 275)"
|
157 |
+
155,Kim Fields,265,member,"[250, 275)"
|
158 |
+
156,Jill Hennessy,265,member,"[250, 275)"
|
159 |
+
157,Lorraine Bracco,267,member,"[250, 275)"
|
160 |
+
158,Annie Ilonzeh,268,member,"[250, 275)"
|
161 |
+
159,Andrea Bowen,275,member,"[275, 300)"
|
162 |
+
160,Melissa Fumero,280,member,"[275, 300)"
|
163 |
+
161,Vanessa Marcil,286,member,"[275, 300)"
|
164 |
+
162,Shelley Long,286,member,"[275, 300)"
|
165 |
+
163,Carolyn Hennesy,289,member,"[275, 300)"
|
166 |
+
164,Hector Elizondo,290,member,"[275, 300)"
|
167 |
+
165,Jason Behr,292,member,"[275, 300)"
|
168 |
+
166,Melina Kanakaredes,293,member,"[275, 300)"
|
169 |
+
167,Hal Holbrook,293,member,"[275, 300)"
|
170 |
+
168,Ashley Johnson,294,member,"[275, 300)"
|
171 |
+
169,Lara Flynn Boyle,299,member,"[275, 300)"
|
172 |
+
170,Scott Patterson,299,member,"[275, 300)"
|
173 |
+
171,Chris Kattan,302,member,"[300, 1000000)"
|
174 |
+
172,Loni Anderson,309,member,"[300, 1000000)"
|
175 |
+
173,Kate Linder,311,member,"[300, 1000000)"
|
176 |
+
174,Ashley Jones,314,member,"[300, 1000000)"
|
177 |
+
175,Michael Vartan,323,member,"[300, 1000000)"
|
178 |
+
176,Richard Schiff,324,member,"[300, 1000000)"
|
179 |
+
177,Oliver Platt,333,member,"[300, 1000000)"
|
180 |
+
178,Rue McClanahan,335,member,"[300, 1000000)"
|
181 |
+
179,Desmond Harrington,336,member,"[300, 1000000)"
|
182 |
+
180,Shelley Hennig,340,member,"[300, 1000000)"
|
183 |
+
181,Matt Czuchry,341,member,"[300, 1000000)"
|
184 |
+
182,Chazz Palminteri,342,member,"[300, 1000000)"
|
185 |
+
183,Eileen Davidson,342,member,"[300, 1000000)"
|
186 |
+
184,Natalie Martinez,344,member,"[300, 1000000)"
|
187 |
+
185,Matthew Lillard,347,member,"[300, 1000000)"
|
188 |
+
186,Linda Evans,349,member,"[300, 1000000)"
|
189 |
+
187,Amaury Nolasco,354,member,"[300, 1000000)"
|
190 |
+
188,Nadia Bjorlin,361,member,"[300, 1000000)"
|
191 |
+
189,Neal McDonough,370,member,"[300, 1000000)"
|
192 |
+
190,Bruce Greenwood,374,member,"[300, 1000000)"
|
193 |
+
191,Ken Watanabe,382,member,"[300, 1000000)"
|
194 |
+
192,Adrienne Barbeau,382,member,"[300, 1000000)"
|
195 |
+
193,Billy Boyd,393,member,"[300, 1000000)"
|
196 |
+
194,Ray Stevenson,397,member,"[300, 1000000)"
|
197 |
+
195,Adam McKay,400,member,"[300, 1000000)"
|
198 |
+
196,Patrick Warburton,407,member,"[300, 1000000)"
|
199 |
+
197,Kristen Johnston,412,member,"[300, 1000000)"
|
200 |
+
198,Jolene Blalock,424,member,"[300, 1000000)"
|
201 |
+
199,Chyler Leigh,430,member,"[300, 1000000)"
|
202 |
+
200,Joe Pantoliano,431,member,"[300, 1000000)"
|
203 |
+
201,Wendie Malick,438,member,"[300, 1000000)"
|
204 |
+
202,Andy Richter,441,member,"[300, 1000000)"
|
205 |
+
203,Jessica Capshaw,446,member,"[300, 1000000)"
|
206 |
+
204,Richard E. Grant,452,member,"[300, 1000000)"
|
207 |
+
205,Jeremy Sisto,455,member,"[300, 1000000)"
|
208 |
+
206,Sharon Case,456,member,"[300, 1000000)"
|
209 |
+
207,Ioan Gruffudd,462,member,"[300, 1000000)"
|
210 |
+
208,Jane Leeves,463,member,"[300, 1000000)"
|
211 |
+
209,Debi Mazar,465,member,"[300, 1000000)"
|
212 |
+
210,Eliza Coupe,469,member,"[300, 1000000)"
|
213 |
+
211,Leslie Nielsen,470,member,"[300, 1000000)"
|
214 |
+
212,Rachel Dratch,481,member,"[300, 1000000)"
|
215 |
+
213,James Remar,483,member,"[300, 1000000)"
|
216 |
+
214,Jeanne Cooper,485,member,"[300, 1000000)"
|
217 |
+
215,Sarah Chalke,501,member,"[300, 1000000)"
|
218 |
+
216,Marilu Henner,508,member,"[300, 1000000)"
|
219 |
+
217,Tina Louise,516,member,"[300, 1000000)"
|
220 |
+
218,Robert Knepper,518,member,"[300, 1000000)"
|
221 |
+
219,Cheryl Ladd,521,member,"[300, 1000000)"
|
222 |
+
220,Giovanni Ribisi,527,member,"[300, 1000000)"
|
223 |
+
221,Carey Lowell,532,member,"[300, 1000000)"
|
224 |
+
222,Chris Klein,544,member,"[300, 1000000)"
|
225 |
+
223,Mariel Hemingway,546,member,"[300, 1000000)"
|
226 |
+
224,Tatyana Ali,549,member,"[300, 1000000)"
|
227 |
+
225,Brad Garrett,550,member,"[300, 1000000)"
|
228 |
+
226,Lauren Holly,551,member,"[300, 1000000)"
|
229 |
+
227,Katherine Kelly Lang,558,member,"[300, 1000000)"
|
230 |
+
228,Alexander Skarsgård,559,member,"[300, 1000000)"
|
231 |
+
229,Tyne Daly,565,member,"[300, 1000000)"
|
232 |
+
230,Dean Cain,584,member,"[300, 1000000)"
|
233 |
+
231,Rachel Griffiths,591,member,"[300, 1000000)"
|
234 |
+
232,Rupert Friend,603,member,"[300, 1000000)"
|
235 |
+
233,Cam Gigandet,612,member,"[300, 1000000)"
|
236 |
+
234,Robert Patrick,616,member,"[300, 1000000)"
|
237 |
+
235,Kevin McKidd,627,member,"[300, 1000000)"
|
238 |
+
236,Diahann Carroll,632,member,"[300, 1000000)"
|
239 |
+
237,Alfred Molina,634,member,"[300, 1000000)"
|
240 |
+
238,Ben McKenzie,654,member,"[300, 1000000)"
|
241 |
+
239,Rob Schneider,660,member,"[300, 1000000)"
|
242 |
+
240,Laurie Metcalf,667,member,"[300, 1000000)"
|
243 |
+
241,Cary Elwes,670,member,"[300, 1000000)"
|
244 |
+
242,Sarah Drew,671,member,"[300, 1000000)"
|
245 |
+
243,Danny Masterson,681,member,"[300, 1000000)"
|
246 |
+
244,Hank Azaria,717,member,"[300, 1000000)"
|
247 |
+
245,Katrina Bowden,721,member,"[300, 1000000)"
|
248 |
+
246,Danica McKellar,737,member,"[300, 1000000)"
|
249 |
+
247,Billy Burke,738,member,"[300, 1000000)"
|
250 |
+
248,Sasha Alexander,742,member,"[300, 1000000)"
|
251 |
+
249,Jim Caviezel,744,member,"[300, 1000000)"
|
252 |
+
250,Gabriel Macht,749,member,"[300, 1000000)"
|
253 |
+
251,Jean Reno,770,member,"[300, 1000000)"
|
254 |
+
252,Candice Bergen,780,member,"[300, 1000000)"
|
255 |
+
253,Dermot Mulroney,784,member,"[300, 1000000)"
|
256 |
+
254,Roma Downey,786,member,"[300, 1000000)"
|
257 |
+
255,Tia Carrere,787,member,"[300, 1000000)"
|
258 |
+
256,Victor Garber,804,member,"[300, 1000000)"
|
259 |
+
257,Charlie Day,808,member,"[300, 1000000)"
|
260 |
+
258,Shirley Jones,809,member,"[300, 1000000)"
|
261 |
+
259,Jay Baruchel,813,member,"[300, 1000000)"
|
262 |
+
260,Colin Hanks,819,member,"[300, 1000000)"
|
263 |
+
261,Freddie Prinze Jr,833,member,"[300, 1000000)"
|
264 |
+
262,Kal Penn,839,member,"[300, 1000000)"
|
265 |
+
263,Frances Fisher,843,member,"[300, 1000000)"
|
266 |
+
264,Jennette McCurdy,846,member,"[300, 1000000)"
|
267 |
+
265,James Brolin,856,member,"[300, 1000000)"
|
268 |
+
266,Gene Hackman,866,member,"[300, 1000000)"
|
269 |
+
267,John Noble,872,member,"[300, 1000000)"
|
270 |
+
268,Luke Wilson,877,member,"[300, 1000000)"
|
271 |
+
269,Bernie Mac,884,member,"[300, 1000000)"
|
272 |
+
270,Kevin Connolly,886,member,"[300, 1000000)"
|
273 |
+
271,Chris Noth,886,member,"[300, 1000000)"
|
274 |
+
272,Cheryl Hines,894,member,"[300, 1000000)"
|
275 |
+
273,Linda Gray,906,member,"[300, 1000000)"
|
276 |
+
274,Dominic Monaghan,910,member,"[300, 1000000)"
|
277 |
+
275,Melissa Gilbert,921,member,"[300, 1000000)"
|
278 |
+
276,Misha Collins,924,member,"[300, 1000000)"
|
279 |
+
277,Elizabeth Berkley,935,member,"[300, 1000000)"
|
280 |
+
278,Alan Arkin,941,member,"[300, 1000000)"
|
281 |
+
279,Sara Gilbert,948,member,"[300, 1000000)"
|
282 |
+
280,Billy Zane,955,member,"[300, 1000000)"
|
283 |
+
281,Alan Alda,962,member,"[300, 1000000)"
|
284 |
+
282,Dana Delany,970,member,"[300, 1000000)"
|
285 |
+
283,Valerie Bertinelli,1017,member,"[300, 1000000)"
|
286 |
+
284,Brendan Fraser,1020,member,"[300, 1000000)"
|
287 |
+
285,Nick Frost,1020,member,"[300, 1000000)"
|
288 |
+
286,Holly Marie Combs,1024,member,"[300, 1000000)"
|
289 |
+
287,Jean-Claude Van Damme,1025,member,"[300, 1000000)"
|
290 |
+
288,Lisa Bonet,1026,member,"[300, 1000000)"
|
291 |
+
289,Matt Dillon,1027,member,"[300, 1000000)"
|
292 |
+
290,Matthew Gray Gubler,1040,member,"[300, 1000000)"
|
293 |
+
291,Marg Helgenberger,1043,member,"[300, 1000000)"
|
294 |
+
292,Jonathan Rhys Meyers,1055,member,"[300, 1000000)"
|
295 |
+
293,Lacey Chabert,1060,member,"[300, 1000000)"
|
296 |
+
294,Jeffrey Tambor,1063,member,"[300, 1000000)"
|
297 |
+
295,Valerie Harper,1093,member,"[300, 1000000)"
|
298 |
+
296,Susan Lucci,1096,member,"[300, 1000000)"
|
299 |
+
297,Catherine Bell,1096,member,"[300, 1000000)"
|
300 |
+
298,Candace Cameron Bure,1101,member,"[300, 1000000)"
|
301 |
+
299,Danny Glover,1108,member,"[300, 1000000)"
|
302 |
+
300,Andy Garcia,1121,member,"[300, 1000000)"
|
303 |
+
301,Geena Davis,1122,member,"[300, 1000000)"
|
304 |
+
302,Neve Campbell,1132,member,"[300, 1000000)"
|
305 |
+
303,J.K. Simmons,1142,member,"[300, 1000000)"
|
306 |
+
304,Ed Harris,1161,member,"[300, 1000000)"
|
307 |
+
305,Margaret Cho,1162,member,"[300, 1000000)"
|
308 |
+
306,McKayla Maroney,1221,member,"[300, 1000000)"
|
309 |
+
307,Emile Hirsch,1234,member,"[300, 1000000)"
|
310 |
+
308,Eliza Dushku,1236,member,"[300, 1000000)"
|
311 |
+
309,Summer Glau,1243,member,"[300, 1000000)"
|
312 |
+
310,Benicio Del Toro,1288,member,"[300, 1000000)"
|
313 |
+
311,Danny Trejo,1297,member,"[300, 1000000)"
|
314 |
+
312,Martin Sheen,1301,member,"[300, 1000000)"
|
315 |
+
313,Julie Benz,1303,member,"[300, 1000000)"
|
316 |
+
314,Peter Sarsgaard,1313,member,"[300, 1000000)"
|
317 |
+
315,Diego Luna,1333,member,"[300, 1000000)"
|
318 |
+
316,Robert Duvall,1337,member,"[300, 1000000)"
|
319 |
+
317,Patricia Arquette,1339,member,"[300, 1000000)"
|
320 |
+
318,Edie Falco,1353,member,"[300, 1000000)"
|
321 |
+
319,Christian Slater,1353,member,"[300, 1000000)"
|
322 |
+
320,Fran Drescher,1357,member,"[300, 1000000)"
|
323 |
+
321,Jason Biggs,1367,member,"[300, 1000000)"
|
324 |
+
322,Hayden Christensen,1373,member,"[300, 1000000)"
|
325 |
+
323,Geoffrey Rush,1375,member,"[300, 1000000)"
|
326 |
+
324,Melissa Benoist,1382,member,"[300, 1000000)"
|
327 |
+
325,Christopher Lloyd,1383,member,"[300, 1000000)"
|
328 |
+
326,Eric Dane,1394,member,"[300, 1000000)"
|
329 |
+
327,John Malkovich,1434,member,"[300, 1000000)"
|
330 |
+
328,Milo Ventimiglia,1449,member,"[300, 1000000)"
|
331 |
+
329,Jane Krakowski,1459,member,"[300, 1000000)"
|
332 |
+
330,Michael Weatherly,1459,member,"[300, 1000000)"
|
333 |
+
331,David Cross,1474,member,"[300, 1000000)"
|
334 |
+
332,Jackson Rathbone,1485,member,"[300, 1000000)"
|
335 |
+
333,Kristin Davis,1507,member,"[300, 1000000)"
|
336 |
+
334,Miranda Cosgrove,1518,member,"[300, 1000000)"
|
337 |
+
335,Hugo Weaving,1538,member,"[300, 1000000)"
|
338 |
+
336,Karl Urban,1543,member,"[300, 1000000)"
|
339 |
+
337,Shannen Doherty,1555,member,"[300, 1000000)"
|
340 |
+
338,Angie Harmon,1588,member,"[300, 1000000)"
|
341 |
+
339,Jon Voight,1589,member,"[300, 1000000)"
|
342 |
+
340,Marcia Cross,1598,member,"[300, 1000000)"
|
343 |
+
341,Roseanne Barr,1613,member,"[300, 1000000)"
|
344 |
+
342,Morena Baccarin,1620,member,"[300, 1000000)"
|
345 |
+
343,Farrah Fawcett,1658,member,"[300, 1000000)"
|
346 |
+
344,John Cleese,1666,member,"[300, 1000000)"
|
347 |
+
345,Kris Kristofferson,1683,member,"[300, 1000000)"
|
348 |
+
346,Harry Connick Jr.,1693,member,"[300, 1000000)"
|
349 |
+
347,Judith Light,1694,member,"[300, 1000000)"
|
350 |
+
348,Calista Flockhart,1703,member,"[300, 1000000)"
|
351 |
+
349,Adam Brody,1704,member,"[300, 1000000)"
|
352 |
+
350,Aaron Eckhart,1705,member,"[300, 1000000)"
|
353 |
+
351,Justin Long,1722,member,"[300, 1000000)"
|
354 |
+
352,Bill Nighy,1756,member,"[300, 1000000)"
|
355 |
+
353,Sam Rockwell,1768,member,"[300, 1000000)"
|
356 |
+
354,Jason Lee,1769,member,"[300, 1000000)"
|
357 |
+
355,Mike Myers,1779,member,"[300, 1000000)"
|
358 |
+
356,Josh Hartnett,1784,member,"[300, 1000000)"
|
359 |
+
357,Richard Madden,1788,member,"[300, 1000000)"
|
360 |
+
358,Sean Bean,1835,member,"[300, 1000000)"
|
361 |
+
359,Allison Janney,1838,member,"[300, 1000000)"
|
362 |
+
360,Martin Lawrence,1838,member,"[300, 1000000)"
|
363 |
+
361,John Cusack,1864,member,"[300, 1000000)"
|
364 |
+
362,James Marsden,1915,member,"[300, 1000000)"
|
365 |
+
363,David Schwimmer,1932,member,"[300, 1000000)"
|
366 |
+
364,Audra McDonald,1933,member,"[300, 1000000)"
|
367 |
+
365,Jeremy Irons,1945,member,"[300, 1000000)"
|
368 |
+
366,Paul Bettany,1949,member,"[300, 1000000)"
|
369 |
+
367,David Boreanaz,1954,member,"[300, 1000000)"
|
370 |
+
368,Casey Affleck,1959,member,"[300, 1000000)"
|
371 |
+
369,Kim Cattrall,1968,member,"[300, 1000000)"
|
372 |
+
370,Christopher Reeve,1973,member,"[300, 1000000)"
|
373 |
+
371,Ben Kingsley,1997,member,"[300, 1000000)"
|
374 |
+
372,Billy Bob Thornton,2001,member,"[300, 1000000)"
|
375 |
+
373,Teri Hatcher,2068,member,"[300, 1000000)"
|
376 |
+
374,Matt LeBlanc,2074,member,"[300, 1000000)"
|
377 |
+
375,Laurence Fishburne,2080,member,"[300, 1000000)"
|
378 |
+
376,Helen Hunt,2097,member,"[300, 1000000)"
|
379 |
+
377,George Lopez,2106,member,"[300, 1000000)"
|
380 |
+
378,Patrick Swayze,2112,member,"[300, 1000000)"
|
381 |
+
379,Lori Loughlin,2134,member,"[300, 1000000)"
|
382 |
+
380,Mayim Bialik,2154,member,"[300, 1000000)"
|
383 |
+
381,Andy Serkis,2174,member,"[300, 1000000)"
|
384 |
+
382,Bill Hader,2191,member,"[300, 1000000)"
|
385 |
+
383,Burt Reynolds,2239,member,"[300, 1000000)"
|
386 |
+
384,Stana Katic,2249,member,"[300, 1000000)"
|
387 |
+
385,Portia de Rossi,2258,member,"[300, 1000000)"
|
388 |
+
386,Adrien Brody,2277,member,"[300, 1000000)"
|
389 |
+
387,Alan Rickman,2277,member,"[300, 1000000)"
|
390 |
+
388,Felicity Huffman,2281,member,"[300, 1000000)"
|
391 |
+
389,Emily Deschanel,2316,member,"[300, 1000000)"
|
392 |
+
390,Jennie Garth,2365,member,"[300, 1000000)"
|
393 |
+
391,Matthew Broderick,2383,member,"[300, 1000000)"
|
394 |
+
392,Joan Collins,2451,member,"[300, 1000000)"
|
395 |
+
393,Lisa Kudrow,2454,member,"[300, 1000000)"
|
396 |
+
394,Don Cheadle,2465,member,"[300, 1000000)"
|
397 |
+
395,Clive Owen,2482,member,"[300, 1000000)"
|
398 |
+
396,Heather Locklear,2488,member,"[300, 1000000)"
|
399 |
+
397,Jet Li,2514,member,"[300, 1000000)"
|
400 |
+
398,Jensen Ackles,2532,member,"[300, 1000000)"
|
401 |
+
399,Carmen Electra,2553,member,"[300, 1000000)"
|
402 |
+
400,Jesse Eisenberg,2569,member,"[300, 1000000)"
|
403 |
+
401,Jared Padalecki,2626,member,"[300, 1000000)"
|
404 |
+
402,Tobey Maguire,2661,member,"[300, 1000000)"
|
405 |
+
403,Elijah Wood,2699,member,"[300, 1000000)"
|
406 |
+
404,Rupert Grint,2721,member,"[300, 1000000)"
|
407 |
+
405,America Ferrera,2722,member,"[300, 1000000)"
|
408 |
+
406,Simon Pegg,2776,member,"[300, 1000000)"
|
409 |
+
407,Matthew Perry,2816,member,"[300, 1000000)"
|
410 |
+
408,Alyson Hannigan,2881,member,"[300, 1000000)"
|
411 |
+
409,Gary Oldman,2904,member,"[300, 1000000)"
|
412 |
+
410,Christina Applegate,2911,member,"[300, 1000000)"
|
413 |
+
411,Philip Seymour Hoffman,2922,member,"[300, 1000000)"
|
414 |
+
412,Sally Field,2928,member,"[300, 1000000)"
|
415 |
+
413,Kirstie Alley,2957,member,"[300, 1000000)"
|
416 |
+
414,Dustin Hoffman,3036,member,"[300, 1000000)"
|
417 |
+
415,Glenn Close,3038,member,"[300, 1000000)"
|
418 |
+
416,Ethan Hawke,3040,member,"[300, 1000000)"
|
419 |
+
417,Sarah Hyland,3107,member,"[300, 1000000)"
|
420 |
+
418,Ryan Phillippe,3108,member,"[300, 1000000)"
|
421 |
+
419,Julia Louis-Dreyfus,3181,member,"[300, 1000000)"
|
422 |
+
420,Liev Schreiber,3184,member,"[300, 1000000)"
|
423 |
+
421,Dianna Agron,3247,member,"[300, 1000000)"
|
424 |
+
422,Patrick Dempsey,3310,member,"[300, 1000000)"
|
425 |
+
423,Jason Sudeikis,3311,member,"[300, 1000000)"
|
426 |
+
424,Jamie Lee Curtis,3333,member,"[300, 1000000)"
|
427 |
+
425,Daniel Day-Lewis,3368,member,"[300, 1000000)"
|
428 |
+
426,Hugh Grant,3395,member,"[300, 1000000)"
|
429 |
+
427,Jerry Seinfeld,3398,member,"[300, 1000000)"
|
430 |
+
428,Ian McKellen,3413,member,"[300, 1000000)"
|
431 |
+
429,Kathy Griffin,3460,member,"[300, 1000000)"
|
432 |
+
430,Kiefer Sutherland,3472,member,"[300, 1000000)"
|
433 |
+
431,Norman Reedus,3487,member,"[300, 1000000)"
|
434 |
+
432,Kristin Chenoweth,3490,member,"[300, 1000000)"
|
435 |
+
433,Jaden Smith,3527,member,"[300, 1000000)"
|
436 |
+
434,Jason Bateman,3529,member,"[300, 1000000)"
|
437 |
+
435,Gillian Anderson,3533,member,"[300, 1000000)"
|
438 |
+
436,Julianna Margulies,3559,member,"[300, 1000000)"
|
439 |
+
437,James McAvoy,3604,member,"[300, 1000000)"
|
440 |
+
438,Julie Bowen,3628,member,"[300, 1000000)"
|
441 |
+
439,Jack Nicholson,3691,member,"[300, 1000000)"
|
442 |
+
440,Owen Wilson,3828,member,"[300, 1000000)"
|
443 |
+
441,Victoria Justice,3849,member,"[300, 1000000)"
|
444 |
+
442,Joshua Jackson,3926,member,"[300, 1000000)"
|
445 |
+
443,Kevin Bacon,3980,member,"[300, 1000000)"
|
446 |
+
444,Josh Brolin,3991,member,"[300, 1000000)"
|
447 |
+
445,Debra Messing,4050,member,"[300, 1000000)"
|
448 |
+
446,Anthony Hopkins,4137,member,"[300, 1000000)"
|
449 |
+
447,Joe Manganiello,4147,member,"[300, 1000000)"
|
450 |
+
448,Kevin Costner,4230,member,"[300, 1000000)"
|
451 |
+
449,John Krasinski,4272,member,"[300, 1000000)"
|
452 |
+
450,David Duchovny,4372,member,"[300, 1000000)"
|
453 |
+
451,Kellan Lutz,4374,member,"[300, 1000000)"
|
454 |
+
452,Sarah Michelle Gellar,4415,member,"[300, 1000000)"
|
455 |
+
453,Mark Ruffalo,4421,member,"[300, 1000000)"
|
456 |
+
454,Richard Gere,4428,member,"[300, 1000000)"
|
457 |
+
455,Jane Lynch,4431,member,"[300, 1000000)"
|
458 |
+
456,Joaquin Phoenix,4437,member,"[300, 1000000)"
|
459 |
+
457,Josh Duhamel,4460,member,"[300, 1000000)"
|
460 |
+
458,Ashley Benson,4603,member,"[300, 1000000)"
|
461 |
+
459,Colin Farrell,4725,member,"[300, 1000000)"
|
462 |
+
460,Jonah Hill,4768,member,"[300, 1000000)"
|
463 |
+
461,Samuel L. Jackson,4787,member,"[300, 1000000)"
|
464 |
+
462,Steve Carell,4802,member,"[300, 1000000)"
|
465 |
+
463,Mel Gibson,4806,member,"[300, 1000000)"
|
466 |
+
464,Ewan McGregor,4832,member,"[300, 1000000)"
|
467 |
+
465,Robert Redford,4907,member,"[300, 1000000)"
|
468 |
+
466,Jennifer Love Hewitt,4953,member,"[300, 1000000)"
|
469 |
+
467,Nicolas Cage,4972,member,"[300, 1000000)"
|
470 |
+
468,Chris Rock,4976,member,"[300, 1000000)"
|
471 |
+
469,Pamela Anderson,5005,member,"[300, 1000000)"
|
472 |
+
470,Jude Law,5006,member,"[300, 1000000)"
|
473 |
+
471,Pierce Brosnan,5357,member,"[300, 1000000)"
|
474 |
+
472,Jason Statham,5379,member,"[300, 1000000)"
|
475 |
+
473,Kit Harington,5429,member,"[300, 1000000)"
|
476 |
+
474,Ben Stiller,5544,member,"[300, 1000000)"
|
477 |
+
475,Shia LaBeouf,5733,member,"[300, 1000000)"
|
478 |
+
476,Alyssa Milano,5769,member,"[300, 1000000)"
|
479 |
+
477,Russell Crowe,5783,member,"[300, 1000000)"
|
480 |
+
478,Al Pacino,5818,member,"[300, 1000000)"
|
481 |
+
479,Heath Ledger,5994,member,"[300, 1000000)"
|
482 |
+
480,Jackie Chan,6008,member,"[300, 1000000)"
|
483 |
+
481,Gerard Butler,6155,member,"[300, 1000000)"
|
484 |
+
482,Jim Carrey,6155,member,"[300, 1000000)"
|
485 |
+
483,Seth Rogen,6245,member,"[300, 1000000)"
|
486 |
+
484,Bill Cosby,6253,member,"[300, 1000000)"
|
487 |
+
485,Adam Sandler,6324,member,"[300, 1000000)"
|
488 |
+
486,Colin Firth,6355,member,"[300, 1000000)"
|
489 |
+
487,Antonio Banderas,6426,member,"[300, 1000000)"
|
490 |
+
488,January Jones,6673,member,"[300, 1000000)"
|
491 |
+
489,Robert De Niro,6699,member,"[300, 1000000)"
|
492 |
+
490,Michael Douglas,6713,member,"[300, 1000000)"
|
493 |
+
491,Kaley Cuoco,7032,member,"[300, 1000000)"
|
494 |
+
492,John Travolta,7079,member,"[300, 1000000)"
|
495 |
+
493,Jamie Foxx,7167,member,"[300, 1000000)"
|
496 |
+
494,Denzel Washington,7216,member,"[300, 1000000)"
|
497 |
+
495,Woody Allen,7280,member,"[300, 1000000)"
|
498 |
+
496,Taylor Lautner,7403,member,"[300, 1000000)"
|
499 |
+
497,Jon Hamm,7463,member,"[300, 1000000)"
|
500 |
+
498,Courteney Cox,7673,member,"[300, 1000000)"
|
501 |
+
499,Bill Murray,7956,member,"[300, 1000000)"
|
502 |
+
500,Keanu Reeves,8108,member,"[300, 1000000)"
|
503 |
+
501,Christian Bale,8115,member,"[300, 1000000)"
|
504 |
+
502,Paul Walker,8153,member,"[300, 1000000)"
|
505 |
+
503,Alec Baldwin,8313,member,"[300, 1000000)"
|
506 |
+
504,Bruce Willis,8319,member,"[300, 1000000)"
|
507 |
+
505,Chris Evans,8907,member,"[300, 1000000)"
|
508 |
+
506,Tina Fey,8946,member,"[300, 1000000)"
|
509 |
+
507,Zooey Deschanel,9025,member,"[300, 1000000)"
|
510 |
+
508,Charlie Sheen,9160,member,"[300, 1000000)"
|
511 |
+
509,Jake Gyllenhaal,9267,member,"[300, 1000000)"
|
512 |
+
510,Mark Wahlberg,9308,member,"[300, 1000000)"
|
513 |
+
511,Daniel Radcliffe,9372,member,"[300, 1000000)"
|
514 |
+
512,Dwayne Johnson,9700,member,"[300, 1000000)"
|
515 |
+
513,Orlando Bloom,10005,member,"[300, 1000000)"
|
516 |
+
514,Robin Williams,10075,member,"[300, 1000000)"
|
517 |
+
515,Arnold Schwarzenegger,10103,member,"[300, 1000000)"
|
518 |
+
516,Lea Michele,10353,member,"[300, 1000000)"
|
519 |
+
517,Harrison Ford,10497,member,"[300, 1000000)"
|
520 |
+
518,Mila Kunis,10725,member,"[300, 1000000)"
|
521 |
+
519,Ellen DeGeneres,10746,member,"[300, 1000000)"
|
522 |
+
520,Clint Eastwood,10884,member,"[300, 1000000)"
|
523 |
+
521,Daniel Craig,10893,member,"[300, 1000000)"
|
524 |
+
522,Ashton Kutcher,10894,member,"[300, 1000000)"
|
525 |
+
523,Matthew McConaughey,11042,member,"[300, 1000000)"
|
526 |
+
524,Channing Tatum,11468,member,"[300, 1000000)"
|
527 |
+
525,James Franco,11598,member,"[300, 1000000)"
|
528 |
+
526,Jessica Biel,11651,member,"[300, 1000000)"
|
529 |
+
527,Robert Downey Jr.,12612,member,"[300, 1000000)"
|
530 |
+
528,Eva Longoria,13164,member,"[300, 1000000)"
|
531 |
+
529,Ryan Reynolds,13860,member,"[300, 1000000)"
|
532 |
+
530,Tom Hanks,14555,member,"[300, 1000000)"
|
533 |
+
531,Ryan Gosling,14676,member,"[300, 1000000)"
|
534 |
+
532,Bradley Cooper,14716,member,"[300, 1000000)"
|
535 |
+
533,Hugh Jackman,15260,member,"[300, 1000000)"
|
536 |
+
534,Leonardo DiCaprio,15294,member,"[300, 1000000)"
|
537 |
+
535,Matt Damon,16190,member,"[300, 1000000)"
|
538 |
+
536,Jimmy Fallon,18671,member,"[300, 1000000)"
|
539 |
+
537,George Clooney,21764,member,"[300, 1000000)"
|
540 |
+
538,Justin Timberlake,21886,member,"[300, 1000000)"
|
541 |
+
539,Anne Hathaway,22155,member,"[300, 1000000)"
|
542 |
+
540,Ben Affleck,23038,member,"[300, 1000000)"
|
543 |
+
541,Selena Gomez,24778,member,"[300, 1000000)"
|
544 |
+
542,Johnny Depp,27342,member,"[300, 1000000)"
|
545 |
+
543,Brad Pitt,30524,member,"[300, 1000000)"
|
546 |
+
544,Robert Pattinson,31238,member,"[300, 1000000)"
|
547 |
+
545,Jennifer Aniston,36981,member,"[300, 1000000)"
|
prompt_text_embeddings/ViT-B-16_prompt_text_embeddings.pt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:21a5aaf59ac44f37f2903c4b9bfc2cc1025757420de6aa500aafacbb9797f9ab
|
3 |
+
size 430080883
|
prompt_text_embeddings/ViT-B-32_prompt_text_embeddings.pt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:5c842c10a0982de17892a86dd9f00f5858eda62795d1fdf37904046ebc565685
|
3 |
+
size 430080883
|
prompt_text_embeddings/ViT-L-14_prompt_text_embeddings.pt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:4fd82898cfd5d233aec8b3c644af5ddd71265eef1d6c63fdc4d1e6167d5450a9
|
3 |
+
size 645120883
|
requirements.txt
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
torch==1.13.1
|
2 |
+
torchvision==0.14.1
|
3 |
+
gradio==3.19.1
|
4 |
+
open_clip_torch==2.14.0
|
5 |
+
Pillow==9.3.0
|
6 |
+
jupyterlab==3.6.1
|
7 |
+
ipywidgets==8.0.4
|