hjxdl 0.1.62__py3-none-any.whl → 0.1.64__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
hdl/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.1.62'
16
- __version_tuple__ = version_tuple = (0, 1, 62)
15
+ __version__ = version = '0.1.64'
16
+ __version_tuple__ = version_tuple = (0, 1, 64)
hdl/utils/llm/vis.py CHANGED
@@ -54,6 +54,7 @@ class ImgHandler:
54
54
  # precision=precision
55
55
  )
56
56
  )
57
+ self.vector_dimension = self.open_clip_cfg["model_cfg"]["embed_dim"]
57
58
  self.tokenizer = open_clip.get_tokenizer(
58
59
  HF_HUB_PREFIX + model_path
59
60
  )
@@ -66,6 +67,11 @@ class ImgHandler:
66
67
 
67
68
  @property
68
69
  def redis_conn(self):
70
+ """Establishes a connection to Redis server if not already connected.
71
+
72
+ Returns:
73
+ Redis connection object: A connection to the Redis server.
74
+ """
69
75
  if self._redis_conn is None:
70
76
  self._redis_conn = conn_redis(self.redis_host, self.redis_port)
71
77
  return self._redis_conn
@@ -76,7 +82,17 @@ class ImgHandler:
76
82
  to_numpy = False,
77
83
  **kwargs
78
84
  ):
79
- with torch.no_grad(), torch.cuda.amp.autocast():
85
+ """Get image features using a pretrained model.
86
+
87
+ Args:
88
+ images (list): List of image paths.
89
+ to_numpy (bool, optional): Whether to convert the image features to numpy array. Defaults to False.
90
+ **kwargs: Additional keyword arguments to pass to the model.
91
+
92
+ Returns:
93
+ torch.Tensor or numpy.ndarray: Image features extracted from the model.
94
+ """
95
+ with torch.no_grad(), torch.amp.autocast("cuda"):
80
96
  imgs = torch.stack([
81
97
  self.preprocess_val(Image.open(image)).to(self.device)
82
98
  for image in images
@@ -93,7 +109,20 @@ class ImgHandler:
93
109
  to_numpy = False,
94
110
  **kwargs
95
111
  ):
96
- with torch.no_grad(), torch.cuda.amp.autocast():
112
+ """Get text features from the input texts.
113
+
114
+ Args:
115
+ texts (list): List of input texts to extract features from.
116
+ to_numpy (bool, optional): Whether to convert the output features to a numpy array. Defaults to False.
117
+ **kwargs: Additional keyword arguments to pass to the model for encoding text.
118
+
119
+ Returns:
120
+ torch.Tensor or numpy.ndarray: Extracted text features.
121
+
122
+ Example:
123
+ get_text_features(["text1", "text2"], to_numpy=True)
124
+ """
125
+ with torch.no_grad(), torch.amp.autocast("cuda"):
97
126
  txts = self.tokenizer(
98
127
  texts,
99
128
  context_length=self.model.context_length
@@ -113,14 +142,54 @@ class ImgHandler:
113
142
  to_numpy: bool = False,
114
143
  **kwargs
115
144
  ):
116
- with torch.no_grad(), torch.cuda.amp.autocast():
145
+ """Get the probabilities of text-image associations.
146
+
147
+ Args:
148
+ texts (list): List of text inputs.
149
+ images (list): List of image inputs.
150
+ probs (bool, optional): Whether to return probabilities. Defaults to False.
151
+ to_numpy (bool, optional): Whether to convert the output to a numpy array. Defaults to False.
152
+ **kwargs: Additional keyword arguments for feature extraction.
153
+
154
+ Returns:
155
+ torch.Tensor or numpy.ndarray: Text-image association probabilities.
156
+ """
157
+ with torch.no_grad(), torch.amp.autocast("cuda"):
117
158
  image_features = self.get_img_features(images, **kwargs)
118
159
  text_features = self.get_text_features(texts, **kwargs)
119
160
  text_probs = (100.0 * image_features @ text_features.T)
161
+ # >3 有关联
120
162
  if probs:
121
163
  text_probs = text_probs.softmax(dim=-1)
122
164
  if to_numpy:
123
165
  text_probs = text_probs.cpu().numpy()
124
166
  return text_probs
125
167
 
168
+ def get_pics_sims(
169
+ self,
170
+ images1,
171
+ images2,
172
+ to_numpy: bool = False,
173
+ **kwargs
174
+ ):
175
+ """Calculate similarity scores between two sets of images.
176
+
177
+ Args:
178
+ images1: First set of images.
179
+ images2: Second set of images.
180
+ to_numpy: Whether to convert the similarity scores to a numpy array (default is False).
181
+ **kwargs: Additional keyword arguments to pass to the get_img_features method.
182
+
183
+ Returns:
184
+ torch.Tensor or numpy.ndarray: Similarity scores between the two sets of images.
185
+ """
186
+ with torch.no_grad(), torch.amp.autocast("cuda"):
187
+ img1_feats = self.get_img_features(images1, **kwargs)
188
+ img2_feats = self.get_img_features(images2, **kwargs)
189
+ sims = img1_feats @ img2_feats.T
190
+ if to_numpy:
191
+ sims = sims.cpu().numpy()
192
+ # > 0.9 很相似
193
+ return sims
194
+
126
195
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hjxdl
3
- Version: 0.1.62
3
+ Version: 0.1.64
4
4
  Summary: A collection of functions for Jupyter notebooks
5
5
  Home-page: https://github.com/huluxiaohuowa/hdl
6
6
  Author: Jianxing Hu
@@ -1,5 +1,5 @@
1
1
  hdl/__init__.py,sha256=GffnD0jLJdhkd-vo989v40N90sQbofkayRBwxc6TVhQ,72
2
- hdl/_version.py,sha256=rG3DSNYFAHXdVeQ2WjD0Z0Cpa8cTqknlt8QLq3_8uSk,413
2
+ hdl/_version.py,sha256=jeNdt9VGQNw1iIiYHVNvXMaEDEn4mkNvXMSVcAGw4fI,413
3
3
  hdl/args/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  hdl/args/loss_args.py,sha256=s7YzSdd7IjD24rZvvOrxLLFqMZQb9YylxKeyelSdrTk,70
5
5
  hdl/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -131,12 +131,12 @@ hdl/utils/llm/chat.py,sha256=sk7Lw5Oa30k-l2fnJknkMmTc5zkBeEKsR981aeFhH5s,11907
131
131
  hdl/utils/llm/embs.py,sha256=Tf0FOYrOFZp7qQpEPiSCXzlgyHH0X9HVTUtsup74a9E,7174
132
132
  hdl/utils/llm/extract.py,sha256=2sK_WJzmYIc8iuWaM9DA6Nw3_6q1O4lJ5pKpcZo-bBA,6512
133
133
  hdl/utils/llm/llama_chat.py,sha256=watcHGOaz-bv3x-yDucYlGk5f8FiqfFhwWogrl334fk,4387
134
- hdl/utils/llm/vis.py,sha256=mmitBc5zRwT98oHIKmkhPahc8LI5YhAJlMtvCsRpT4c,3734
134
+ hdl/utils/llm/vis.py,sha256=z1NNh1Xni3l7c8i9VZLphEDGlfQSn8g5wIA7wudUgps,6516
135
135
  hdl/utils/schedulers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
136
  hdl/utils/schedulers/norm_lr.py,sha256=bDwCmdEK-WkgxQMFBiMuchv8Mm7C0-GZJ6usm-PQk14,4461
137
137
  hdl/utils/weather/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
138
  hdl/utils/weather/weather.py,sha256=k11o6wM15kF8b9NMlEfrg68ak-SfSYLN3nOOflFUv-I,4381
139
- hjxdl-0.1.62.dist-info/METADATA,sha256=3Gb5-bSC047umAiQbseqxL3e5yvt82RNt1Usor3cGkg,880
140
- hjxdl-0.1.62.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
141
- hjxdl-0.1.62.dist-info/top_level.txt,sha256=-kxwTM5JPhylp06z3zAVO3w6_h7wtBfBo2zgM6YZoTk,4
142
- hjxdl-0.1.62.dist-info/RECORD,,
139
+ hjxdl-0.1.64.dist-info/METADATA,sha256=0Oy9QnqLsIOqprs7XFD3nG0CMopv4OIhbdcQaV19RX4,880
140
+ hjxdl-0.1.64.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
141
+ hjxdl-0.1.64.dist-info/top_level.txt,sha256=-kxwTM5JPhylp06z3zAVO3w6_h7wtBfBo2zgM6YZoTk,4
142
+ hjxdl-0.1.64.dist-info/RECORD,,
File without changes