hjxdl 0.1.65__py3-none-any.whl → 0.1.67__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.65'
16
- __version_tuple__ = version_tuple = (0, 1, 65)
15
+ __version__ = version = '0.1.67'
16
+ __version_tuple__ = version_tuple = (0, 1, 67)
hdl/utils/llm/vis.py CHANGED
@@ -1,11 +1,14 @@
1
1
  from pathlib import Path
2
2
  import json
3
+ import base64
4
+ from io import BytesIO
3
5
 
4
6
  import torch
5
7
  import numpy as np
6
8
  from PIL import Image
7
9
  # from transformers import ChineseCLIPProcessor, ChineseCLIPModel
8
10
  import open_clip
11
+ import natsort
9
12
 
10
13
  from ..database_tools.connect import conn_redis
11
14
 
@@ -16,6 +19,40 @@ __all__ = [
16
19
 
17
20
  HF_HUB_PREFIX = "hf-hub:"
18
21
 
22
+
23
+ def imgfile_to_base64(img_dir: str):
24
+ """Converts an image file to base64 format.
25
+
26
+ Args:
27
+ img_dir (str): The directory path of the image file.
28
+
29
+ Returns:
30
+ str: The image file converted to base64 format.
31
+ """
32
+ with open(img_dir, 'rb') as file:
33
+ img_base64 = "data:image/jpeg;base64," + base64.b64encode(
34
+ file.read()
35
+ ).decode('utf-8')
36
+ return img_base64
37
+
38
+
39
+ def imgbase64_to_pilimg(img_base64: str):
40
+ """Converts a base64 encoded image to a PIL image.
41
+
42
+ Args:
43
+ img_base64 (str): Base64 encoded image string.
44
+
45
+ Returns:
46
+ PIL.Image: A PIL image object.
47
+ """
48
+ img_pil = Image.open(
49
+ BytesIO(
50
+ base64.b64decode(img_base64.split(",")[-1])
51
+ )
52
+ )
53
+ return img_pil
54
+
55
+
19
56
  class ImgHandler:
20
57
  def __init__(
21
58
  self,
@@ -203,4 +240,31 @@ class ImgHandler:
203
240
  # > 0.9 很相似
204
241
  return sims
205
242
 
243
+ def vec_pics_todb(self, images):
244
+ """Save image features to a Redis database.
245
+
246
+ Args:
247
+ images (list): A list of image file paths.
248
+
249
+ Returns:
250
+ None
251
+
252
+ Example:
253
+ vec_pics_todb(images=['image1.jpg', 'image2.jpg'])
254
+ """
255
+ sorted_imgs = natsort.natsorted(images)
256
+ img_feats = self.get_img_features(sorted_imgs, to_numpy=True)
257
+ pipeline = self.ih.db_conn.pipeline()
258
+ for img_file, emb in zip(sorted_imgs, img_feats):
259
+ # 初始化 Redis,先使用 img 文件名作为 Key 和 Value,后续再更新为图片特征向量
260
+ # pipeline.json().set(img_file, "$", img_file)
261
+ emb = emb.astype(np.float32).tolist()
262
+ emb_json = {
263
+ "emb": emb,
264
+ "data": imgfile_to_base64(img_file)
265
+ }
266
+ pipeline.json().set(img_file, "$", emb_json)
267
+ res = pipeline.execute()
268
+ print('redis set:', res)
269
+
206
270
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hjxdl
3
- Version: 0.1.65
3
+ Version: 0.1.67
4
4
  Summary: A collection of functions for Jupyter notebooks
5
5
  Home-page: https://github.com/huluxiaohuowa/hdl
6
6
  Author: Jianxing Hu
@@ -23,6 +23,7 @@ Requires-Dist: redis[hiredis]
23
23
  Requires-Dist: psycopg[binary]
24
24
  Requires-Dist: Pillow
25
25
  Requires-Dist: open-clip-torch
26
+ Requires-Dist: natsort
26
27
 
27
28
  # DL framework by Jianxing
28
29
 
@@ -1,5 +1,5 @@
1
1
  hdl/__init__.py,sha256=GffnD0jLJdhkd-vo989v40N90sQbofkayRBwxc6TVhQ,72
2
- hdl/_version.py,sha256=dWes_pejilDszHY1ei6MxbFy7H_tVhepnPnoJG50ueY,413
2
+ hdl/_version.py,sha256=FcaV_ACOb2e682h3wmnM4BoU2t4Y9YegpmtQ5bKxxNg,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=4bIzsCAOlkIscc_u6j2NkyV30_uGb6hMEhs3QGSUvj0,6736
134
+ hdl/utils/llm/vis.py,sha256=dkrSWZJcnLFy5ZmT8aDTy2EdvfzWbYOwDjUL47BbmxI,8547
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.65.dist-info/METADATA,sha256=lXWFTci94OQLioRQkmta01nK-cK_zZBsqPxFBr2Aa6E,880
140
- hjxdl-0.1.65.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
141
- hjxdl-0.1.65.dist-info/top_level.txt,sha256=-kxwTM5JPhylp06z3zAVO3w6_h7wtBfBo2zgM6YZoTk,4
142
- hjxdl-0.1.65.dist-info/RECORD,,
139
+ hjxdl-0.1.67.dist-info/METADATA,sha256=dxyZsd_-4xjvQ6k6WZcaxsxYI6gJzQ38iO2CAFZf2OY,903
140
+ hjxdl-0.1.67.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
141
+ hjxdl-0.1.67.dist-info/top_level.txt,sha256=-kxwTM5JPhylp06z3zAVO3w6_h7wtBfBo2zgM6YZoTk,4
142
+ hjxdl-0.1.67.dist-info/RECORD,,
File without changes