Clarifai

Hex.pm Travis license

Elixir API for Clarifai.

To use Clarifai’s API, you need to sign up and request an API key. Oauth2 is being deprecated but is still supported by this package. You can still use a client ID and secret.

Visit Clarifai for more information.

After obtaining either an API key or a client ID/secret, update your config.exs with the neccesary values.

config :clarifai,
  client_id: "your_client_id",
  client_secret: "your_client_secret",
  api_key: "your_api_key",
  version: "v2"

Installation

The package can be installed by adding clarifai to your list of dependencies in mix.exs and running mix deps.get:

def deps do
  [{:clarifai, "~> 0.1.1"}]
end

Examples

Available Models

Clarifai.models

=> {
    :ok,
    [
      %Clarifai.Structs.Model{
        app_id: "main",
        created_at: "2017-03-06T22:57:00.707216Z",
        id: "c443119bf2ed4da98487520d01a0b1e3",
        name: "logo",
        output_info: %{
          "message" => "Show output_info with: GET /models/{model_id}/output_info",
          "type" => "concept",
          "type_ext" => "detection"
        },
        version: %{
          "active_concept_count" => 561,
          "created_at" => "2017-03-06T22:57:05.625525Z",
          "id" => "ef1b7237d28b415f910ca343a9145e99",
          "status" => %{
            "code" => 21100, "description" => "Model trained successfully"
          }
        }
      },
      ...
    ]

Available Model Names

Clarifai.model_names
=> {
    :ok,
    [
      "logo", "focus", "apparel", "celeb-v1.3", "weddings-v1.0",
      "food-items-v1.0", "nsfw-v1.0", "travel-v1.0", "color", "general-v1.3"
    ]
  }

Tagging images with the given models

Clarifai.predict(["https://unsplash.it/5092/3395?image=1062"], ["color", "general-v1.3"])

=> %Clarifai.Structs.Response{
      predictions: [
        %Clarifai.Structs.Prediction{
          image_url: "https://unsplash.it/5092/3395?image=1062",
          status: :ok,
          tags_by_model: [
            %Clarifai.Structs.TagsByModel{
              model: "color",
              tags: [
                %Clarifai.Structs.ColorTag{hex: "#696969", name: "DimGray", value: 0.20425},
                %Clarifai.Structs.ColorTag{hex: "#b0c4de", name: "LightSteelBlue", value: 0.40675},
                %Clarifai.Structs.ColorTag{hex: "#808080", name: "Gray", value: 0.389}
              ]
            },
            %Clarifai.Structs.TagsByModel{
              model: "general-v1.3",
              tags: [
                %Clarifai.Structs.Tag{concept_id: "ai_B2TBwp8F", confidence: 0.9732083, name: "bed"},
                %Clarifai.Structs.Tag{concept_id: "ai_TJ9wFfK5", confidence: 0.96748126, name: "portrait"},
                %Clarifai.Structs.Tag{concept_id: "ai_CnBc0kwc", confidence: 0.94953597, name: "sleep"},
                %Clarifai.Structs.Tag{concept_id: "ai_4CRlSvbV", confidence: 0.9400542, name: "cute"},
                %Clarifai.Structs.Tag{concept_id: "ai_bJt1PfQ5", confidence: 0.91432786, name: "bedroom"},
                %Clarifai.Structs.Tag{concept_id: "ai_j09mzT6j", confidence: 0.9100505, name: "family"},
                %Clarifai.Structs.Tag{concept_id: "ai_8S2Vq3cR", confidence: 0.89849144, name: "dog"},
                ...,
                %Clarifai.Structs.Tag{concept_id: "ai_SzsXMB1w", confidence: 0.7452092, name: "animal"}
              ]
            }
          ]
        }
      ]
    }