Assessing image quality
Image classification is currently in the Preview stage.
To evaluate the quality of an image, use the Image Classification feature.
In the batchAnalyze method, set the type
property to Classification
, and in the configuration, specify the quality model.
Examples
Before getting started
To use the examples, install cURL and get the authorization data for your account:
- On the billing page, make sure that your billing account status is
ACTIVE
orTRIAL_ACTIVE
. If you don't have a billing account, create one. - Get an IAM token required for authentication.
- Get the ID of any folder that your account is granted the
editor
role or higher for.
-
Select the authentication method:
-
Get an IAM token used in the examples.
-
Create an API key. Pass the API key in the
Authorization
header in the following format:Authorization: Api-Key <API key>
-
-
Assign the
editor
role or a higher role to the service account for the folder where it was created.Don't specify the folder ID in your requests: the service uses the folder where the service account was created.
-
Use the CLI to get an IAM token required for authentication:
$ yc iam create-token
-
Get the ID of any folder that your account is granted the
editor
role or higher for.
Apply the model to assess quality
-
Prepare an image file that meets the requirements:
-
Supported file formats: JPEG, PNG, PDF.
You specify the MIME type of the file in the
mime_type
property. The default isimage
. -
Maximum file size: 1 MB.
-
Image size should not exceed 20 MP (length x width).
Note
Need an image? Download a sample.
-
-
Encode the file as Base64:
UNIXWindowsPowerShellPythonNode.jsJavaGo$ base64 -i input.jpg > output.txt
C:> Base64.exe -e input.jpg > output.txt
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./input.jpg")) > output.txt
# Импортируйте библиотеку для кодирования в Base64 import base64 # Создайте функцию, которая кодирует файл и возвращает результат. def encode_file(file): file_content = file.read() return base64.b64encode(file_content)
// Считайте содержимое файла в память. var fs = require('fs'); var file = fs.readFileSync('/path/to/file'); // Получите содержимое файла в формате Base64. var encoded = Buffer.from(file).toString('base64');
// Импортируйте библиотеку для кодирования в Base64. import org.apache.commons.codec.binary.Base64; // Получите содержимое файла в формате Base64. byte[] fileData = Base64.encodeBase64(yourFile.getBytes());
import ( "bufio" "encoding/base64" "io/ioutil" "os" ) // Откройте файл f, _ := os.Open("/path/to/file") // Прочитайте содержимое файла. reader := bufio.NewReader(f) content, _ := ioutil.ReadAll(reader) // Получите содержимое файла в формате Base64. base64.StdEncoding.EncodeToString(content)
-
Create a file with the request body (for example,
body.json
). In thecontent
property, specify a Base64-encoded image:body.json:
{ "folderId": "b1gvmob95yysaplct532", "analyze_specs": [{ "content": "iVBORw0KGgo...", "features": [{ "type": "CLASSIFICATION", "classificationConfig": { "model": "quality" } }] }] }
-
Send a request using the batchAnalyze method and save the response in a file, such as
output.json
:$ export IAM_TOKEN=CggaATEVAgA... $ curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json
The response will contain the properties and the probability of matching them. You can use these properties to moderate the image:
{ "results": [{ "results": [{ "faceDetection": { "properties": [{ "name": "low", "probability": 0.001466292142868043 }, { "name": "medium", "probability": 0.003421348333358767 }, { "name": "high", "probability": 0.99511235952377319 } ] } }] }] }
Ready-to-use function for sending requests in bash
-
If you don't have the Yandex.Cloud command line interface yet, install and initialize it.
-
Copy the function to the terminal:
vision_quality() { curl -H "Authorization: Bearer `yc iam create-token`" \ "https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze" \ -d @<(cat << EOF { "folderId": "`yc config get folder-id`", "analyze_specs": [{ "content": "`base64 -i $1`", "features": [{ "type": "CLASSIFICATION", "classificationConfig": { "model": "quality" } }] }] } EOF ) }
Explanations:
yc iam create-token
: get an IAM token.-d @<(cat EOF ... EOF)
: create a request body.yc config get folder-id
: get the ID of the default folder selected in the CLI.base64 -i $1
: Base64 encoding of the image passed in the function arguments.
-
Now you can call this function by passing the image path in the arguments:
vision_quality path/to/image.jpg