deepstack 1.3.0 → 1.6.0
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.
- checksums.yaml +4 -4
- data/lib/deep_stack/custom_model.rb +4 -2
- data/lib/deep_stack/deep_stack.rb +20 -11
- data/lib/deep_stack/face.rb +19 -0
- data/lib/deep_stack/image.rb +24 -0
- data/lib/deep_stack/scene.rb +3 -2
- data/lib/deep_stack/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 830f650f0001d9ace30cbcf6758aa58cae9d4bf7089300f0e22261e58274e1cb
|
4
|
+
data.tar.gz: 2a9b1c9d03f3c04d6f159f9216b85791904f8c279155c9142bf5248eb719769a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc573a46b62325ef299af50d25a7c9c760df25025f87f1c8c1eb588a3ee148fceb38ace946d3d39e92236d48c96da4f474a239ecfc2821660886e6f020b77ea4
|
7
|
+
data.tar.gz: '08e0a71c109b87a81ef475aa85e8ea2750ed615adf65a03299b4b3df805911fac898597f94a4cdb5aa597fa03fab6367ccf04004c7545980e3a6b2261ff86d1d'
|
@@ -1,10 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class DeepStack
|
4
|
-
# Custom
|
4
|
+
# Support for using Custom Models with DeepStack
|
5
5
|
module CustomModel
|
6
6
|
#
|
7
|
-
# Return predictions using a custom model
|
7
|
+
# Return predictions using a custom model.
|
8
|
+
# Custom models are *.pt models that have been saved in DeepStack's modelstore directory.
|
9
|
+
# See https://docs.deepstack.cc/custom-models/deployment/index.html
|
8
10
|
#
|
9
11
|
# @param [String] model custom model name
|
10
12
|
# @param [Object] image binary data or a File object
|
@@ -6,6 +6,7 @@ require_relative 'face'
|
|
6
6
|
require_relative 'detection'
|
7
7
|
require_relative 'scene'
|
8
8
|
require_relative 'custom_model'
|
9
|
+
require_relative 'image'
|
9
10
|
require_relative 'version'
|
10
11
|
|
11
12
|
# DeepStack API
|
@@ -13,6 +14,7 @@ class DeepStack
|
|
13
14
|
include DeepStack::Face
|
14
15
|
include DeepStack::Detection
|
15
16
|
include DeepStack::Scene
|
17
|
+
include DeepStack::Image
|
16
18
|
include DeepStack::CustomModel
|
17
19
|
|
18
20
|
#
|
@@ -20,15 +22,27 @@ class DeepStack
|
|
20
22
|
#
|
21
23
|
# @param [String] base_url the url to DeepStack's server:port
|
22
24
|
# @param [String] api_key an optional API-KEY to use when connecting to DeepStack
|
23
|
-
# @param [String]
|
25
|
+
# @param [String] api_key an optional API-KEY to use when connecting to DeepStack
|
26
|
+
# @param [Integer] verify_mode sets the flags for server the certification verification at
|
27
|
+
# beginning of SSL/TLS session.
|
28
|
+
# +OpenSSL::SSL::VERIFY_NONE+ or +OpenSSL::SSL::VERIFY_PEER+ are acceptable.
|
24
29
|
#
|
25
30
|
# @example
|
26
31
|
# DeepStack.new('http://127.0.0.1:5000')
|
27
32
|
#
|
28
|
-
|
33
|
+
# # Using API KEY:
|
34
|
+
# DeepStack.new('http://127.0.0.1:5000', api_key: 'secret', admin_key: 'supersecret')
|
35
|
+
#
|
36
|
+
# # Connect to SSL with a self-signed certificate
|
37
|
+
# DeepStack.new('https://localhost:443', verify_mode: OpenSSL::SSL::VERIFY_NONE)
|
38
|
+
#
|
39
|
+
def initialize(base_url, api_key: nil, admin_key: nil, verify_mode: nil)
|
29
40
|
@base_url = base_url
|
30
41
|
@auth = { api_key: api_key, admin_key: admin_key }.select { |_k, v| v } # remove nil values
|
31
|
-
|
42
|
+
uri = URI(base_url)
|
43
|
+
http_options = {}
|
44
|
+
http_options[:verify_mode] = verify_mode if verify_mode
|
45
|
+
@http = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.instance_of?(URI::HTTPS), **http_options)
|
32
46
|
end
|
33
47
|
|
34
48
|
#
|
@@ -60,9 +74,7 @@ class DeepStack
|
|
60
74
|
# Close the HTTP connection to DeepStack server
|
61
75
|
#
|
62
76
|
def close
|
63
|
-
@
|
64
|
-
@http.finish if @http&.started?
|
65
|
-
end
|
77
|
+
@http.finish if @http&.started?
|
66
78
|
end
|
67
79
|
|
68
80
|
private
|
@@ -79,11 +91,8 @@ class DeepStack
|
|
79
91
|
form_data = combine_images_and_args(images.flatten, **args)
|
80
92
|
req = Net::HTTP::Post.new(uri)
|
81
93
|
req.set_form(form_data, 'multipart/form-data')
|
82
|
-
@
|
83
|
-
|
84
|
-
@http.start unless @http.started?
|
85
|
-
@http.request(req)
|
86
|
-
end
|
94
|
+
@http.start unless @http.started?
|
95
|
+
@http.request(req)
|
87
96
|
end
|
88
97
|
|
89
98
|
def combine_images_and_args(*images, **args)
|
data/lib/deep_stack/face.rb
CHANGED
@@ -77,5 +77,24 @@ class DeepStack
|
|
77
77
|
target = 'vision/face/register'
|
78
78
|
api_post(target, images, userid: userid)&.dig('success') == true
|
79
79
|
end
|
80
|
+
|
81
|
+
#
|
82
|
+
# Call DeepStack's Face Match service. Compare two different pictures and tells the similarity between them.
|
83
|
+
#
|
84
|
+
# @example
|
85
|
+
# image1 = File.read('obama1.jpg')
|
86
|
+
# image2 = File.read('obama2.jpg')
|
87
|
+
# puts deepstack.face_match(image1, image2) > 0.6 ? 'similar' : 'different'
|
88
|
+
#
|
89
|
+
# @param [Array] *images two images to compare
|
90
|
+
# @param [kwargs] **args optional arguments to the API call
|
91
|
+
#
|
92
|
+
# @return [Float] The similarity score (0-1)
|
93
|
+
# @return [nil] if failed
|
94
|
+
#
|
95
|
+
def face_match(*images, **args)
|
96
|
+
target = 'vision/face/match'
|
97
|
+
api_post(target, images, **args)&.dig('similarity')
|
98
|
+
end
|
80
99
|
end
|
81
100
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'base64'
|
4
|
+
|
5
|
+
class DeepStack
|
6
|
+
# Support Image Enhance feature
|
7
|
+
module Image
|
8
|
+
#
|
9
|
+
# Enhance image {https://docs.deepstack.cc/api-reference/index.html#image-enhance}
|
10
|
+
#
|
11
|
+
# @param [Image] image the raw image data or a File object of an image file
|
12
|
+
#
|
13
|
+
# @return [Image] the enhanced image object
|
14
|
+
# @return [nil] if failed
|
15
|
+
#
|
16
|
+
def enhance_image(image)
|
17
|
+
target = 'vision/enhance'
|
18
|
+
result = api_post(target, image)
|
19
|
+
return unless result&.dig('success') == true
|
20
|
+
|
21
|
+
Base64.decode64(result['base64'])
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/deep_stack/scene.rb
CHANGED
@@ -4,14 +4,15 @@ class DeepStack
|
|
4
4
|
# Scene Recognition
|
5
5
|
module Scene
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# Call the scene recognition API to classify an image into one of the supported scenes.
|
8
8
|
#
|
9
9
|
# @param [Object] image binary data or a File object
|
10
10
|
# @param [Hash] options additional fields for DeepStack, e.g. min_confidence: 0.5
|
11
11
|
#
|
12
|
-
# @return [Hash] if successful, DeepStack result hash {'label' => 'scene', 'confidence' => 2.2}
|
12
|
+
# @return [Hash] if successful, DeepStack result hash +{'label' => 'scene', 'confidence' => 2.2}+
|
13
13
|
#
|
14
14
|
# @return [nil] if error
|
15
|
+
#
|
15
16
|
def identify_scene(image, **options)
|
16
17
|
target = 'vision/scene'
|
17
18
|
api_post(target, image, **options)
|
data/lib/deep_stack/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deepstack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Tanagra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -21,6 +21,7 @@ files:
|
|
21
21
|
- lib/deep_stack/deep_stack.rb
|
22
22
|
- lib/deep_stack/detection.rb
|
23
23
|
- lib/deep_stack/face.rb
|
24
|
+
- lib/deep_stack/image.rb
|
24
25
|
- lib/deep_stack/scene.rb
|
25
26
|
- lib/deep_stack/version.rb
|
26
27
|
- lib/deepstack.rb
|