Module: Clip
- Defined in:
- lib/clip.rb,
lib/clip/model.rb,
lib/clip/version.rb,
lib/clip/tokenizer.rb,
lib/clip/image_preprocessor.rb,
lib/clip/multilingual_model.rb
Defined Under Namespace
Classes: ImagePreprocessor, Model, MultilingualModel, Tokenizer
Constant Summary
collapse
- BASE_URL =
"https://huggingface.co/khasinski/"
- MODELS =
{
"textual.onnx" => "clip-ViT-B-32-onnx/resolve/main/textual.onnx?download=true",
"visual.onnx" => "clip-ViT-B-32-onnx/resolve/main/visual.onnx?download=true"
}
- MULTILINGUAL_MODELS =
{
"textual.onnx" => "XLM-Roberta-Large-Vit-B-32-onnx/resolve/main/textual.onnx?download=true",
"data.bin" => "XLM-Roberta-Large-Vit-B-32-onnx/resolve/main/data.bin?download=true",
"visual.onnx" => "XLM-Roberta-Large-Vit-B-32-onnx/resolve/main/visual.onnx?download=true"
}
- VERSION =
"1.1.0"
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Attribute Details
#logger ⇒ Object
Returns the value of attribute logger.
11
12
13
|
# File 'lib/clip.rb', line 11
def logger
@logger
end
|
Class Method Details
.download_file(url, destination, limit = 10) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/clip.rb', line 37
def self.download_file(url, destination, limit = 10)
raise "Too many HTTP redirects" if limit == 0
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = (uri.scheme == 'https')
request = Net::HTTP::Get.new(uri.request_uri)
http.request(request) do |response|
case response
when Net::HTTPRedirection
new_url = response['location']
self.download_file(new_url, destination, limit - 1)
when Net::HTTPSuccess
File.open(destination, 'wb') do |file|
response.read_body do |chunk|
file.write(chunk)
end
end
puts "Downloaded #{url} to #{destination}"
else
raise "Failed to download file: #{response.code} #{response.message}"
end
end
end
|
.download_models(download_dir, models = MODELS) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/clip.rb', line 25
def self.download_models(download_dir, models = MODELS)
logger ||= Logger.new(STDOUT)
FileUtils.mkdir_p(download_dir)
models.each do |filename, path|
uri = URI.join(BASE_URL, path)
logger.info("Downloading #{filename} model from #{uri}")
self.download_file(uri.to_s, File.join(download_dir, filename))
end
end
|
.models_exist?(textual_model_path:, visual_model_path:) ⇒ Boolean
64
65
66
|
# File 'lib/clip.rb', line 64
def self.models_exist?(textual_model_path:, visual_model_path:)
File.exist?(textual_model_path) && File.exist?(visual_model_path)
end
|