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 +2 -2
- hdl/utils/llm/vis.py +18 -18
- {hjxdl-0.2.24.dist-info → hjxdl-0.2.26.dist-info}/METADATA +1 -1
- {hjxdl-0.2.24.dist-info → hjxdl-0.2.26.dist-info}/RECORD +6 -6
- {hjxdl-0.2.24.dist-info → hjxdl-0.2.26.dist-info}/WHEEL +0 -0
- {hjxdl-0.2.24.dist-info → hjxdl-0.2.26.dist-info}/top_level.txt +0 -0
hdl/_version.py
CHANGED
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.
|
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
|
-
|
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,5 +1,5 @@
|
|
1
1
|
hdl/__init__.py,sha256=GffnD0jLJdhkd-vo989v40N90sQbofkayRBwxc6TVhQ,72
|
2
|
-
hdl/_version.py,sha256
|
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=
|
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.
|
142
|
-
hjxdl-0.2.
|
143
|
-
hjxdl-0.2.
|
144
|
-
hjxdl-0.2.
|
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
|
File without changes
|