hjxdl 0.2.24__py3-none-any.whl → 0.2.26__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.2.24'
16
- __version_tuple__ = version_tuple = (0, 2, 24)
15
+ __version__ = version = '0.2.26'
16
+ __version_tuple__ = version_tuple = (0, 2, 26)
hdl/utils/llm/vis.py CHANGED
@@ -4,6 +4,7 @@ import base64
4
4
  from io import BytesIO
5
5
  import requests
6
6
  import uuid
7
+ import hashlib
7
8
 
8
9
  import torch
9
10
  import numpy as np
@@ -132,8 +133,6 @@ class ImgHandler:
132
133
  def __init__(
133
134
  self,
134
135
  model_path,
135
- db_host,
136
- db_port,
137
136
  conn=None,
138
137
  model_name: str = None,
139
138
  device: str = "cpu",
@@ -159,9 +158,7 @@ class ImgHandler:
159
158
  self.model_path = model_path
160
159
  self.model_name = model_name
161
160
 
162
- self.db_host = db_host
163
- self.db_port = db_port
164
- self._db_conn = None
161
+ self.db_conn = conn
165
162
  self.num_vec_dim = num_vec_dim
166
163
  self.pic_idx_name = "idx:pic_idx"
167
164
  if load_model:
@@ -204,17 +201,6 @@ class ImgHandler:
204
201
  HF_HUB_PREFIX + self.model_path
205
202
  )
206
203
 
207
- @property
208
- def db_conn(self):
209
- """Establishes a connection to Redis server if not already connected.
210
-
211
- Returns:
212
- Redis connection object: A connection to the Redis server.
213
- """
214
- if self._db_conn is None:
215
- self._db_conn = conn_redis(self.db_host, self.db_port)
216
- return self._db_conn
217
-
218
204
  def get_img_features(
219
205
  self,
220
206
  images,
@@ -353,7 +339,7 @@ class ImgHandler:
353
339
  conn=None,
354
340
  print_idx_info: bool = False,
355
341
  ):
356
- """Save image features to a Redis database.
342
+ """Save image features to a Redis database, avoiding duplicates.
357
343
 
358
344
  Args:
359
345
  images (list): A list of image file paths.
@@ -370,6 +356,7 @@ class ImgHandler:
370
356
  if conn is None:
371
357
  conn = self.db_conn
372
358
  pipeline = conn.pipeline()
359
+
373
360
  for img_file, emb in tqdm(zip(sorted_imgs, img_feats)):
374
361
  if img_file.startswith("data:"):
375
362
  img_data = img_file
@@ -378,13 +365,26 @@ class ImgHandler:
378
365
  img_data = imgfile_to_base64(img_file)
379
366
  img_idx = f"pic-{img_file}"
380
367
 
368
+ # 使用图片特征生成唯一哈希值
369
+ emb_hash = hashlib.sha256(emb.tobytes()).hexdigest()
370
+
371
+ # 检查该哈希值是否已存在,避免重复存储
372
+ if conn.exists(f"pic-hash-{emb_hash}"):
373
+ print(f"Image {img_file} already exists, skipping.")
374
+ continue
375
+
376
+ # 存储新图片的特征和数据
381
377
  emb = emb.astype(np.float32).tolist()
382
378
  emb_json = {
383
379
  "emb": emb,
384
380
  "data": img_data
385
381
  }
386
382
  pipeline.json().set(img_idx, "$", emb_json)
387
- res = pipeline.execute()
383
+
384
+ # 将哈希值作为键存储,以便后续检查
385
+ pipeline.set(f"pic-hash-{emb_hash}", img_idx)
386
+
387
+ res = pipeline.execute()
388
388
 
389
389
  # 定义向量索引的schema
390
390
  schema = (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hjxdl
3
- Version: 0.2.24
3
+ Version: 0.2.26
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=60O-fkBLileJecASMvt-pFLFn9U7Uv1i95gYM4vcTpM,413
2
+ hdl/_version.py,sha256=-Bz-F1hr7wbrrnyo6EqAHpJHRnGCyOCHoNlwDcFCT1M,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
@@ -132,13 +132,13 @@ hdl/utils/llm/chatgr.py,sha256=GO2G7g6YybduA5VCUuGjvEsJfC_6L7rycSnPeHMcxyM,2820
132
132
  hdl/utils/llm/embs.py,sha256=Tf0FOYrOFZp7qQpEPiSCXzlgyHH0X9HVTUtsup74a9E,7174
133
133
  hdl/utils/llm/extract.py,sha256=2sK_WJzmYIc8iuWaM9DA6Nw3_6q1O4lJ5pKpcZo-bBA,6512
134
134
  hdl/utils/llm/llama_chat.py,sha256=watcHGOaz-bv3x-yDucYlGk5f8FiqfFhwWogrl334fk,4387
135
- hdl/utils/llm/vis.py,sha256=QT1rr49EXyAR9iH1j4_eyiDMLRQSwpJOFaIBGycrOhA,16293
135
+ hdl/utils/llm/vis.py,sha256=M2Xk-2LnOcRge9Aej7ejGZzzLTV82PfI_wo9VX9h-3E,16381
136
136
  hdl/utils/llm/visrag.py,sha256=_PuKtmQIXD5bnmXwDWhTLdzOhgC42JiqdMNb1uKA7n8,9190
137
137
  hdl/utils/schedulers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
138
  hdl/utils/schedulers/norm_lr.py,sha256=bDwCmdEK-WkgxQMFBiMuchv8Mm7C0-GZJ6usm-PQk14,4461
139
139
  hdl/utils/weather/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
140
  hdl/utils/weather/weather.py,sha256=k11o6wM15kF8b9NMlEfrg68ak-SfSYLN3nOOflFUv-I,4381
141
- hjxdl-0.2.24.dist-info/METADATA,sha256=ekKkJLBvfpN2pDDTrQmQRCaWud-UsGsn0FCrC6fzUMo,836
142
- hjxdl-0.2.24.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
143
- hjxdl-0.2.24.dist-info/top_level.txt,sha256=-kxwTM5JPhylp06z3zAVO3w6_h7wtBfBo2zgM6YZoTk,4
144
- hjxdl-0.2.24.dist-info/RECORD,,
141
+ hjxdl-0.2.26.dist-info/METADATA,sha256=tHMyD2XRvWwLO7NlyzBujX2Bjdx1lnQRxxVWnPwtR_w,836
142
+ hjxdl-0.2.26.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
143
+ hjxdl-0.2.26.dist-info/top_level.txt,sha256=-kxwTM5JPhylp06z3zAVO3w6_h7wtBfBo2zgM6YZoTk,4
144
+ hjxdl-0.2.26.dist-info/RECORD,,
File without changes