This gem is an unofficial Ruby client for Clarifai's image recognition API.
The Clarifai API offers image and video recognition as a service. Whether you have one image or billions, you are only steps away from using artificial intelligence to 'see' what's inside your visual content.
Table of Contents
- Known Issues
Before using this gem, make sure to create an account for Clarifai and create an application to obtain a client id and client secret.
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install clarifai_ruby
To configure the gem, stick this block:
ClarifaiRuby.configure do |config| config.base_url = "https://api.clarifai.com" config.version_path = "/v1" config.client_id = "<CLIENT_ID>" config.client_secret = "<CLIENT_SECRET>" end
inside of your initializer file.
This gem can make 4 types of requests (Info, Tag, Color, Feedback) using 4 corresponding request objects:
And each request will result in a corresponding response object that will have access to each response's data:
To make an
info = ClarifaiRuby::InfoRequest.new.get #=> ClarifaiRuby::InfoResponse info.status_code #=> "OK"
To make a
tag_response = ClarifaiRuby::TagRequest.new.get("https://samples.clarifai.com/metro-north.jpg") #=> #<ClarifaiRuby::TagResponse> tag_response.tag_images #=> [#<ClarifaiRuby::TagImage>] # Each tag image will contain an array of Tag objects tag_response.tag_images.first.tags #=> [#<ClarifaiRuby::Tag>, #<ClarifaiRuby::Tag>, ...]
TagResponse will contain an array of
TagImages and each
TagImage will contain an array of
Tag represents each tag returned by Clarifai.
Tag contains these readers:
word- the class of the tag
prob- (short for probability) indicate how well the model believes the corresponding tag is associated with the input data.
concept_id- the corresponding concept_id
You can pass in the
model (more info)
If you'd like to get tags for an image or video using a different model, you can do so by passing in a
modelparameter. If you omit this parameter, the API will use the default model for your application. You can change this on the applications page.
ClarifaiRuby::TagRequest.new.get("https://samples.clarifai.com/metro-north.jpg", model: "nsfw-v0.1") #=> #<ClarifaiRuby::TagResponse>
As of February here are the valid models:
Please refer to the documentation for any possible changes to this list.
You can pass in
select_classes (more info)
If you'd like to get the probability of a certain tag or tags, you can specify them in the request using the
select_classesparameter. Different tags should be comma separated.
tag_response = ClarifaiRuby::TagRequest.new.get("https://samples.clarifai.com/metro-north.jpg", select_classes: "light,sky") #=> #<ClarifaiRuby::TagResponse>
You can pass in
language (more info)
By default this API call returns tags in English. You can change this default setting on the applications page or can pass in a language parameter. If you use a language other than English, you must make sure the model you are using is
tag_response = tag_response = ClarifaiRuby::TagRequest.new.get("https://samples.clarifai.com/metro-north.jpg", model: "general-v1.3", language: "es") #=> #<ClarifaiRuby::TagResponse>
- Token Overconsumption
- Currently, every instance of any request objects generates a separate access token. We would need to change it, such that it would use one token across all request objects.
- No support for multiple files
tagendpoint can support multiple files within its request, however, due to
Bug reports and pull requests are welcome on GitHub at https://github.com/chardane/ClarifaiRuby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
The gem is available as open source under the terms of the MIT License.