Citaman commited on
Commit
2eac4d2
1 Parent(s): ab63df4

Upload files from github

Browse files
Files changed (7) hide show
  1. CODE_OF_CONDUCT.md +71 -0
  2. CONTRIBUTING.md +11 -0
  3. LICENSE +39 -0
  4. clip_processor.py +81 -0
  5. load_veclip.ipynb +0 -0
  6. requirements.txt +150 -0
  7. veclip.yml +171 -0
CODE_OF_CONDUCT.md ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, sex characteristics, gender identity and expression,
9
+ level of experience, education, socio-economic status, nationality, personal
10
+ appearance, race, religion, or sexual identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies within all project spaces, and it also applies when
49
+ an individual is representing the project or its community in public spaces.
50
+ Examples of representing a project or community include using an official
51
+ project e-mail address, posting via an official social media account, or acting
52
+ as an appointed representative at an online or offline event. Representation of
53
+ a project may be further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the open source team at [[email protected]](mailto:[email protected]). All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 1.4,
71
+ available at [https://www.contributor-covenant.org/version/1/4/code-of-conduct.html](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
CONTRIBUTING.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Contribution Guide
2
+
3
+ Thanks for your interest in contributing. This project was released to accompany a research paper for purposes of reproducibility, and beyond its publication there are limited plans for future development of the repository.
4
+
5
+ While we welcome new pull requests and issues please note that our response may be limited. Forks and out-of-tree improvements are strongly encouraged.
6
+
7
+ ## Before you get started
8
+
9
+ By submitting a pull request, you represent that you have the right to license your contribution to Apple and the community, and agree by submitting the patch that your contributions are licensed under the [LICENSE](LICENSE).
10
+
11
+ We ask that all community members read and observe our [Code of Conduct](CODE_OF_CONDUCT.md).
LICENSE ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (C) 2024 Apple Inc. All Rights Reserved.
2
+
3
+ IMPORTANT: This Apple software is supplied to you by Apple
4
+ Inc. ("Apple") in consideration of your agreement to the following
5
+ terms, and your use, installation, modification or redistribution of
6
+ this Apple software constitutes acceptance of these terms. If you do
7
+ not agree with these terms, please do not use, install, modify or
8
+ redistribute this Apple software.
9
+
10
+ In consideration of your agreement to abide by the following terms, and
11
+ subject to these terms, Apple grants you a personal, non-exclusive
12
+ license, under Apple's copyrights in this original Apple software (the
13
+ "Apple Software"), to use, reproduce, modify and redistribute the Apple
14
+ Software, with or without modifications, in source and/or binary forms;
15
+ provided that if you redistribute the Apple Software in its entirety and
16
+ without modifications, you must retain this notice and the following
17
+ text and disclaimers in all such redistributions of the Apple Software.
18
+ Neither the name, trademarks, service marks or logos of Apple Inc. may
19
+ be used to endorse or promote products derived from the Apple Software
20
+ without specific prior written permission from Apple. Except as
21
+ expressly stated in this notice, no other rights or licenses, express or
22
+ implied, are granted by Apple herein, including but not limited to any
23
+ patent rights that may be infringed by your derivative works or by other
24
+ works in which the Apple Software may be incorporated.
25
+
26
+ The Apple Software is provided by Apple on an "AS IS" basis. APPLE
27
+ MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
28
+ THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
29
+ FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
30
+ OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
31
+
32
+ IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
33
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
34
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
35
+ INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
36
+ MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
37
+ AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
38
+ STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
39
+ POSSIBILITY OF SUCH DAMAGE.
clip_processor.py ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import List
2
+ import numpy as np
3
+ import torch
4
+
5
+ from transformers.utils import is_tf_available
6
+
7
+ if is_tf_available():
8
+ import tensorflow as tf # type: ignore
9
+ else:
10
+ raise ValueError("Please run `pip install tensorflow` to use the processor.")
11
+
12
+ MEAN_RGB = [0.48145466 * 255, 0.4578275 * 255, 0.40821073 * 255]
13
+ STDDEV_RGB = [0.26862954 * 255, 0.26130258 * 255, 0.27577711 * 255]
14
+
15
+
16
+ def crop_image(image: tf.Tensor, center_crop_fraction: float = 0.875):
17
+ image_size = tf.cast(tf.shape(image)[:2], dtype=tf.float32)
18
+ crop_size = center_crop_fraction * tf.math.minimum(image_size[0], image_size[1])
19
+ crop_offset = tf.cast((image_size - crop_size) / 2.0, dtype=tf.int32)
20
+ crop_size = tf.cast(crop_size, dtype=tf.int32)
21
+ return image[
22
+ crop_offset[0] : crop_offset[0] + crop_size, crop_offset[1] : crop_offset[1] + crop_size, : # noqa: E203
23
+ ]
24
+
25
+
26
+ def whiten(
27
+ image: tf.Tensor,
28
+ ) -> tf.Tensor:
29
+ image = tf.cast(tf.convert_to_tensor(image), tf.float32)
30
+ image -= tf.constant(MEAN_RGB, shape=[1, 1, 3], dtype=image.dtype)
31
+ image /= tf.constant(STDDEV_RGB, shape=[1, 1, 3], dtype=image.dtype)
32
+ return image
33
+
34
+
35
+ def tf_image_reshape_crop(image: tf.Tensor, crop_size: int) -> tf.Tensor:
36
+ # 100000 is chosen as no image would have 100000 pixels along one edge.
37
+ shape_1 = (100000, crop_size)
38
+ shape_2 = (crop_size, 100000)
39
+ image = tf.cond(
40
+ tf.shape(image)[0] > tf.shape(image)[1],
41
+ lambda: tf.image.resize(image, shape_1, method="bilinear", preserve_aspect_ratio=True, antialias=False),
42
+ lambda: tf.image.resize(image, shape_2, method="bilinear", preserve_aspect_ratio=True, antialias=False),
43
+ )
44
+ processed_image = crop_image(image=image, center_crop_fraction=1)
45
+ return processed_image
46
+
47
+
48
+ def _single_image_preprocess(image: np.ndarray, crop_size: int = 224, resize_only: bool = False):
49
+ """Single image preprocess.
50
+ Args:
51
+ images: image in numpy array.
52
+ crop_size: the size of the cropped images.
53
+ resize_only: If true, only resize to the crop size, otherwise, first resize then center crop.
54
+ Returns:
55
+ A torch tensor with processed image.
56
+ """
57
+ image = tf.constant(image)
58
+ if resize_only:
59
+ image = tf.image.resize(
60
+ image, (crop_size, crop_size), method="bilinear", preserve_aspect_ratio=False, antialias=False
61
+ )
62
+ else:
63
+ image = tf_image_reshape_crop(image, crop_size)
64
+ image = whiten(image)
65
+ return torch.asarray(image.numpy())
66
+
67
+
68
+ def image_preprocess(images: List[np.ndarray], crop_size: int = 224, resize_only: bool = False):
69
+ """Image preprocess using tf resizing function.
70
+ Args:
71
+ images: A list of numpy array.
72
+ crop_size: the size of the cropped images.
73
+ Returns:
74
+ A torch tensor with shape [size_of_images, crop_size, crop_size, 3].
75
+ """
76
+ processed_images = []
77
+ for image in images:
78
+ image = tf.constant(image)
79
+ processed_image = _single_image_preprocess(image, crop_size=crop_size, resize_only=resize_only)
80
+ processed_images.append(processed_image)
81
+ return torch.permute(torch.stack(processed_images, 0), (0, 3, 1, 2))
load_veclip.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
requirements.txt ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ absl-py==2.1.0
2
+ anyio==4.2.0
3
+ appnope==0.1.4
4
+ argon2-cffi==23.1.0
5
+ argon2-cffi-bindings==21.2.0
6
+ arrow==1.3.0
7
+ asttokens==2.4.1
8
+ astunparse==1.6.3
9
+ async-lru==2.0.4
10
+ attrs==23.2.0
11
+ Babel==2.14.0
12
+ beautifulsoup4==4.12.3
13
+ bleach==6.1.0
14
+ cachetools==5.3.2
15
+ certifi==2024.2.2
16
+ cffi==1.16.0
17
+ charset-normalizer==3.3.2
18
+ comm==0.2.1
19
+ debugpy==1.8.1
20
+ decorator==5.1.1
21
+ defusedxml==0.7.1
22
+ exceptiongroup==1.2.0
23
+ executing==2.0.1
24
+ fastjsonschema==2.19.1
25
+ filelock==3.13.1
26
+ flatbuffers==23.5.26
27
+ fqdn==1.5.1
28
+ fsspec==2024.2.0
29
+ gast==0.5.4
30
+ google-auth==2.27.0
31
+ google-auth-oauthlib==1.2.0
32
+ google-pasta==0.2.0
33
+ grpcio==1.60.1
34
+ h11==0.14.0
35
+ h5py==3.10.0
36
+ httpcore==1.0.3
37
+ httpx==0.26.0
38
+ huggingface-hub==0.20.3
39
+ idna==3.6
40
+ importlib-metadata==7.0.1
41
+ ipykernel==6.29.2
42
+ ipython==8.18.1
43
+ ipywidgets==8.1.2
44
+ isoduration==20.11.0
45
+ jedi==0.19.1
46
+ Jinja2==3.1.3
47
+ json5==0.9.14
48
+ jsonpointer==2.4
49
+ jsonschema==4.21.1
50
+ jsonschema-specifications==2023.12.1
51
+ jupyter==1.0.0
52
+ jupyter-console==6.6.3
53
+ jupyter-events==0.9.0
54
+ jupyter-lsp==2.2.2
55
+ jupyter_client==8.6.0
56
+ jupyter_core==5.7.1
57
+ jupyter_server==2.12.5
58
+ jupyter_server_terminals==0.5.2
59
+ jupyterlab==4.1.1
60
+ jupyterlab_pygments==0.3.0
61
+ jupyterlab_server==2.25.3
62
+ jupyterlab_widgets==3.0.10
63
+ keras==2.15.0
64
+ libclang==16.0.6
65
+ Markdown==3.5.2
66
+ MarkupSafe==2.1.5
67
+ matplotlib-inline==0.1.6
68
+ mistune==3.0.2
69
+ ml-dtypes==0.2.0
70
+ mpmath==1.3.0
71
+ nbclient==0.9.0
72
+ nbconvert==7.16.0
73
+ nbformat==5.9.2
74
+ nest-asyncio==1.6.0
75
+ networkx==3.2.1
76
+ notebook==7.1.0
77
+ notebook_shim==0.2.4
78
+ numpy==1.26.4
79
+ oauthlib==3.2.2
80
+ opt-einsum==3.3.0
81
+ overrides==7.7.0
82
+ packaging==23.2
83
+ pandocfilters==1.5.1
84
+ parso==0.8.3
85
+ pexpect==4.9.0
86
+ pillow==10.2.0
87
+ platformdirs==4.2.0
88
+ prometheus_client==0.20.0
89
+ prompt-toolkit==3.0.43
90
+ protobuf==4.25.2
91
+ psutil==5.9.8
92
+ ptyprocess==0.7.0
93
+ pure-eval==0.2.2
94
+ pyasn1==0.5.1
95
+ pyasn1-modules==0.3.0
96
+ pycparser==2.21
97
+ Pygments==2.17.2
98
+ python-dateutil==2.8.2
99
+ python-json-logger==2.0.7
100
+ PyYAML==6.0.1
101
+ pyzmq==25.1.2
102
+ qtconsole==5.5.1
103
+ QtPy==2.4.1
104
+ referencing==0.33.0
105
+ regex==2023.12.25
106
+ requests==2.31.0
107
+ requests-oauthlib==1.3.1
108
+ rfc3339-validator==0.1.4
109
+ rfc3986-validator==0.1.1
110
+ rpds-py==0.18.0
111
+ rsa==4.9
112
+ safetensors==0.4.2
113
+ Send2Trash==1.8.2
114
+ sentencepiece==0.1.99
115
+ six==1.16.0
116
+ sniffio==1.3.0
117
+ soupsieve==2.5
118
+ stack-data==0.6.3
119
+ sympy==1.12
120
+ tensorboard==2.15.2
121
+ tensorboard-data-server==0.7.2
122
+ tensorflow==2.15.0
123
+ tensorflow-estimator==2.15.0
124
+ tensorflow-io-gcs-filesystem==0.36.0
125
+ tensorflow-macos==2.15.0
126
+ tensorflow-metal==1.1.0
127
+ termcolor==2.4.0
128
+ terminado==0.18.0
129
+ tinycss2==1.2.1
130
+ tokenizers==0.15.2
131
+ tomli==2.0.1
132
+ torch==2.2.0
133
+ torchaudio==2.2.0
134
+ torchvision==0.17.0
135
+ tornado==6.4
136
+ tqdm==4.66.2
137
+ traitlets==5.14.1
138
+ transformers==4.37.2
139
+ types-python-dateutil==2.8.19.20240106
140
+ typing_extensions==4.9.0
141
+ uri-template==1.3.0
142
+ urllib3==2.2.0
143
+ wcwidth==0.2.13
144
+ webcolors==1.13
145
+ webencodings==0.5.1
146
+ websocket-client==1.7.0
147
+ Werkzeug==3.0.1
148
+ widgetsnbextension==4.0.10
149
+ wrapt==1.14.1
150
+ zipp==3.17.0
veclip.yml ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: veclip
2
+ channels:
3
+ - conda-forge
4
+ dependencies:
5
+ - bzip2=1.0.8=h93a5062_5
6
+ - ca-certificates=2024.2.2=hf0a4a13_0
7
+ - libffi=3.4.2=h3422bc3_5
8
+ - libsqlite=3.45.1=h091b4b1_0
9
+ - libzlib=1.2.13=h53f4e23_5
10
+ - ncurses=6.4=h463b476_2
11
+ - openssl=3.2.1=h0d3ecfb_0
12
+ - pip=24.0=pyhd8ed1ab_0
13
+ - python=3.9.18=hd7ebdb9_1_cpython
14
+ - readline=8.2=h92ec313_1
15
+ - setuptools=69.0.3=pyhd8ed1ab_0
16
+ - tk=8.6.13=h5083fa2_1
17
+ - tzdata=2024a=h0c530f3_0
18
+ - wheel=0.42.0=pyhd8ed1ab_0
19
+ - xz=5.2.6=h57fd34a_0
20
+ - pip:
21
+ - absl-py==2.1.0
22
+ - anyio==4.2.0
23
+ - appnope==0.1.4
24
+ - argon2-cffi==23.1.0
25
+ - argon2-cffi-bindings==21.2.0
26
+ - arrow==1.3.0
27
+ - asttokens==2.4.1
28
+ - astunparse==1.6.3
29
+ - async-lru==2.0.4
30
+ - attrs==23.2.0
31
+ - babel==2.14.0
32
+ - beautifulsoup4==4.12.3
33
+ - bleach==6.1.0
34
+ - cachetools==5.3.2
35
+ - certifi==2024.2.2
36
+ - cffi==1.16.0
37
+ - charset-normalizer==3.3.2
38
+ - comm==0.2.1
39
+ - debugpy==1.8.1
40
+ - decorator==5.1.1
41
+ - defusedxml==0.7.1
42
+ - exceptiongroup==1.2.0
43
+ - executing==2.0.1
44
+ - fastjsonschema==2.19.1
45
+ - filelock==3.13.1
46
+ - flatbuffers==23.5.26
47
+ - fqdn==1.5.1
48
+ - fsspec==2024.2.0
49
+ - gast==0.5.4
50
+ - google-auth==2.27.0
51
+ - google-auth-oauthlib==1.2.0
52
+ - google-pasta==0.2.0
53
+ - grpcio==1.60.1
54
+ - h11==0.14.0
55
+ - h5py==3.10.0
56
+ - httpcore==1.0.3
57
+ - httpx==0.26.0
58
+ - huggingface-hub==0.20.3
59
+ - idna==3.6
60
+ - importlib-metadata==7.0.1
61
+ - ipykernel==6.29.2
62
+ - ipython==8.18.1
63
+ - ipywidgets==8.1.2
64
+ - isoduration==20.11.0
65
+ - jedi==0.19.1
66
+ - jinja2==3.1.3
67
+ - json5==0.9.14
68
+ - jsonpointer==2.4
69
+ - jsonschema==4.21.1
70
+ - jsonschema-specifications==2023.12.1
71
+ - jupyter==1.0.0
72
+ - jupyter-client==8.6.0
73
+ - jupyter-console==6.6.3
74
+ - jupyter-core==5.7.1
75
+ - jupyter-events==0.9.0
76
+ - jupyter-lsp==2.2.2
77
+ - jupyter-server==2.12.5
78
+ - jupyter-server-terminals==0.5.2
79
+ - jupyterlab==4.1.1
80
+ - jupyterlab-pygments==0.3.0
81
+ - jupyterlab-server==2.25.3
82
+ - jupyterlab-widgets==3.0.10
83
+ - keras==2.15.0
84
+ - libclang==16.0.6
85
+ - markdown==3.5.2
86
+ - markupsafe==2.1.5
87
+ - matplotlib-inline==0.1.6
88
+ - mistune==3.0.2
89
+ - ml-dtypes==0.2.0
90
+ - mpmath==1.3.0
91
+ - nbclient==0.9.0
92
+ - nbconvert==7.16.0
93
+ - nbformat==5.9.2
94
+ - nest-asyncio==1.6.0
95
+ - networkx==3.2.1
96
+ - notebook==7.1.0
97
+ - notebook-shim==0.2.4
98
+ - numpy==1.26.4
99
+ - oauthlib==3.2.2
100
+ - opt-einsum==3.3.0
101
+ - overrides==7.7.0
102
+ - packaging==23.2
103
+ - pandocfilters==1.5.1
104
+ - parso==0.8.3
105
+ - pexpect==4.9.0
106
+ - pillow==10.2.0
107
+ - platformdirs==4.2.0
108
+ - prometheus-client==0.20.0
109
+ - prompt-toolkit==3.0.43
110
+ - protobuf==4.25.2
111
+ - psutil==5.9.8
112
+ - ptyprocess==0.7.0
113
+ - pure-eval==0.2.2
114
+ - pyasn1==0.5.1
115
+ - pyasn1-modules==0.3.0
116
+ - pycparser==2.21
117
+ - pygments==2.17.2
118
+ - python-dateutil==2.8.2
119
+ - python-json-logger==2.0.7
120
+ - pyyaml==6.0.1
121
+ - pyzmq==25.1.2
122
+ - qtconsole==5.5.1
123
+ - qtpy==2.4.1
124
+ - referencing==0.33.0
125
+ - regex==2023.12.25
126
+ - requests==2.31.0
127
+ - requests-oauthlib==1.3.1
128
+ - rfc3339-validator==0.1.4
129
+ - rfc3986-validator==0.1.1
130
+ - rpds-py==0.18.0
131
+ - rsa==4.9
132
+ - safetensors==0.4.2
133
+ - send2trash==1.8.2
134
+ - sentencepiece==0.1.99
135
+ - six==1.16.0
136
+ - sniffio==1.3.0
137
+ - soupsieve==2.5
138
+ - stack-data==0.6.3
139
+ - sympy==1.12
140
+ - tensorboard==2.15.2
141
+ - tensorboard-data-server==0.7.2
142
+ - tensorflow==2.15.0
143
+ - tensorflow-estimator==2.15.0
144
+ - tensorflow-io-gcs-filesystem==0.36.0
145
+ - tensorflow-macos==2.15.0
146
+ - tensorflow-metal==1.1.0
147
+ - termcolor==2.4.0
148
+ - terminado==0.18.0
149
+ - tinycss2==1.2.1
150
+ - tokenizers==0.15.2
151
+ - tomli==2.0.1
152
+ - torch==2.2.0
153
+ - torchaudio==2.2.0
154
+ - torchvision==0.17.0
155
+ - tornado==6.4
156
+ - tqdm==4.66.2
157
+ - traitlets==5.14.1
158
+ - transformers==4.37.2
159
+ - types-python-dateutil==2.8.19.20240106
160
+ - typing-extensions==4.9.0
161
+ - uri-template==1.3.0
162
+ - urllib3==2.2.0
163
+ - wcwidth==0.2.13
164
+ - webcolors==1.13
165
+ - webencodings==0.5.1
166
+ - websocket-client==1.7.0
167
+ - werkzeug==3.0.1
168
+ - widgetsnbextension==4.0.10
169
+ - wrapt==1.14.1
170
+ - zipp==3.17.0
171
+ prefix: /Users/haotiz/miniforge3/envs/hf