Beispiel #1
0
    def __init__(self):
        self.stub = service_pb2_grpc.V2Stub(ClarifaiChannel.get_grpc_channel())
        # moderation cccf390eb32cad478c7ae150069bd2c6
        # nsfw - v1.0 ccc76d86d2004ed1a38ba0cf39ecb4b1
        # nsfw-v1.0 e9576d86d2004ed1a38ba0cf39ecb4b1
        # moderation a3ab820725bb472092a2cd63b1c0035a
        # moderation d16f390eb32cad478c7ae150069bd2c6

        # self.model_id = 'aaa03c23b3724a16a56b629203edc62c'  # General
        self.model_id = 'd16f390eb32cad478c7ae150069bd2c6'  # moderation
        with open(CLARIFAI_KEY, 'r') as f:
            self.api_key = f.read()
            self.auth = (('authorization', f'Key {self.api_key}'), )
Beispiel #2
0
def has_object_on_image(file_name, object_name):
    channel = ClarifaiChannel.get_grpc_channel()
    app = service_pb2_grpc.V2Stub(channel)
    metadata = (('authorization', f'Key {settings.CLARIFAI_API_KEY}'),)

    with open(file_name, 'rb') as f:
        file_data = f.read()
        image = resources_pb2.Image(base64=file_data)

    request = service_pb2.PostModelOutputsRequest(
        model_id='aaa03c23b3724a16a56b629203edc62c',
        inputs=[
            resources_pb2.Input(
                data=resources_pb2.Data(image=image)
            )
        ])

    response = app.PostModelOutputs(request, metadata=metadata)
    # print(response)
    return check_response_for_object(response, object_name)
Beispiel #3
0
def keywords(request):

    if request.method != 'POST':
        # Method not allowed
        return JsonResponse(helpers.create_error_response(405), status=405)

    # Check if request has a foodImage file
    if 'foodImage' not in request.FILES:
        return JsonResponse(helpers.create_error_response(400), status=400)

    # Retrieving image from the request
    food_image = request.FILES['foodImage'].file.read()

    # Client setup
    channel = ClarifaiChannel.get_grpc_channel()
    stub = service_pb2_grpc.V2Stub(channel)
    metadata = (('authorization', f"Key {os.environ['CLARIFAI_API_KEY']}"), )

    post_model_outputs_response = stub.PostModelOutputs(
        service_pb2.PostModelOutputsRequest(
            model_id=f"{os.environ['MODEL_ID']}",
            inputs=[
                resources_pb2.Input(data=resources_pb2.Data(
                    image=resources_pb2.Image(base64=food_image)))
            ]),
        metadata=metadata)

    if post_model_outputs_response.status.code != status_code_pb2.SUCCESS:
        # Something went wrong while retrieving info from Clarifai - 502
        return JsonResponse(helpers.create_error_response(502), status=502)

    # Since only one image was sent, there is only one output
    output = post_model_outputs_response.outputs[0]

    return JsonResponse(
        helpers.create_success_response(output.data.concepts[:5]))
    def func_wrapper():
        channel = ClarifaiChannel.get_grpc_channel()
        func(channel)

        channel = ClarifaiChannel.get_json_channel()
        func(channel)
Beispiel #5
0
 def __init__(self, key):
     # Construct one of the channels you want to use
     self.channel = ClarifaiChannel.get_json_channel()
     self.key = key
Beispiel #6
0
from flask import Flask, render_template, session, redirect, url_for, flash, request
from werkzeug.utils import secure_filename
import os
from clarifai_grpc.grpc.api import service_pb2, resources_pb2
from clarifai_grpc.grpc.api.status import status_code_pb2
from clarifai_grpc.channel.clarifai_channel import ClarifaiChannel
from clarifai_grpc.grpc.api import service_pb2_grpc

stub = service_pb2_grpc.V2Stub(ClarifaiChannel.get_grpc_channel())
metadata = (('authorization', 'Key 24f6926e2f1744aa8e83199cb554d8b0'), )

app = Flask(__name__)

upload_folder = "static/uploads"
allowed_extentions = set(['png', 'jpeg', 'jpg'])

app.config['UPLOAD_FOLDER'] = upload_folder
app.config['SECRET_KEY'] = 'fjhasldkfjhasdflkhasdflkjh'

recyclable_objects = [
    "bottle", "cardboard", "glass", "plastic bottle", "plastic container",
    "cereal box", "snack box", "phonebook", "magazine", "mail", "paper",
    "newspaper", "tin cans", "aluminum can", "steel can", "food container",
    "jar", "soft drink bottle", "beer bottle", "wine bottle", "liquor bottle",
    "carton", "aersol", "aersol can", "aluminum", "aluminum foil",
    "aluminum tray", "stryrofoam", "stryrofoam packaging",
    "stryrofoam food container", "stryrofoam drink container", "paper box",
    "pizza box", "paper bag", "shredded paper", "plastic bucket",
    "plastic tubs", "plastic pot", "plastic tray", "plastic toy",
    "plastic food container", "plastic cup", "metal can", "aluminum can",
    "wrapping paper", "mail", "newspaper", "book"
import os

from clarifai_grpc.channel.clarifai_channel import ClarifaiChannel
from clarifai_grpc.grpc.api import resources_pb2, service_pb2, service_pb2_grpc
from clarifai_grpc.grpc.api.status import status_pb2, status_code_pb2

channel = ClarifaiChannel.get_json_channel()
channel = ClarifaiChannel.get_insecure_grpc_channel()

stub = service_pb2_grpc.V2Stub(channel)
key = os.getenv('API_KEY')

metadata = (('authorization', f'Key {key}'), )


def classification(img):
    #with open(img, "rb") as f:
    file_bytes = img.read()

    post_model_outputs_response = stub.PostModelOutputs(
        service_pb2.PostModelOutputsRequest(
            model_id="bd367be194cf45149e75f01d59f77ba7",
            inputs=[
                resources_pb2.Input(data=resources_pb2.Data(
                    image=resources_pb2.Image(base64=file_bytes)))
            ]),
        metadata=metadata)

    if post_model_outputs_response.status.code != status_code_pb2.SUCCESS:
        raise Exception("Post model outputs failed, status: " +
                        post_model_outputs_response.status.description)
from clarifai_grpc.grpc.api import service_pb2_grpc, service_pb2, resources_pb2
from clarifai_grpc.grpc.api.status import status_code_pb2
import os
from google.cloud import vision, translate

from aux_functions import separate_capital_letters

import settings

# Declaração da credencial para APIs do Google e instancia do client
os.environ[
    "GOOGLE_APPLICATION_CREDENTIALS"] = "projeto-tcc-276919-afa464aedacb.json"
client = vision.ImageAnnotatorClient()

# Declaração e intancia de client da API da Clarifai
channel = ClarifaiChannel.get_json_channel()
stub = service_pb2_grpc.V2Stub(channel)


#Função que reconhece logos de empresas conhecidas da imagem passada
#---RETORNO: informações sobre a logo, nome e percentual de chance de ser.
def get_logos(content):
    # carrega a imagem para a memória
    # with io.open(path, 'rb') as image_file:
    # content = image_file.read()

    image = types.Image(content=content)  # define o model da imagem

    # Chama a requisição à API e pega sua resposta
    response = client.logo_detection(image=image)
    logos = response.logo_annotations
Beispiel #9
0
 def __init__(self, key):
     self.channel = ClarifaiChannel.get_grpc_channel()
     self.stub = service_pb2_grpc.V2Stub(self.channel)
     self.metadata = (('authorization', f'Key {key}'),)
def test_deep_classification_training_with_queries():
    stub = service_pb2_grpc.V2Stub(ClarifaiChannel.get_grpc_channel())

    app_id = "my-app-" + uuid.uuid4().hex[:20]
    post_apps_response = stub.PostApps(
        service_pb2.PostAppsRequest(
            apps=[
                resources_pb2.App(
                    id=app_id,
                    default_workflow_id="General",
                )
            ]
        ),
        metadata=pat_key_metadata(),
    )
    raise_on_failure(post_apps_response)

    post_keys_response = stub.PostKeys(
        service_pb2.PostKeysRequest(
            keys=[
                resources_pb2.Key(
                    description="All scopes",
                    scopes=["All"],
                    apps=[resources_pb2.App(id=app_id, user_id="me")],
                )
            ],
        ),
        metadata=pat_key_metadata(),
    )
    raise_on_failure(post_keys_response)
    api_key = post_keys_response.keys[0].id

    template_name = "classification_cifar10_v1"

    model_id = "my-deep-classification-" + uuid.uuid4().hex
    model_type = _get_model_type_for_template(stub, api_key, template_name)

    train_info_params = struct_pb2.Struct()
    train_info_params.update(
        {
            "template": template_name,
            "num_epochs": 2,
            "num_gpus": 0,
        }
    )

    post_models_response = stub.PostModels(
        service_pb2.PostModelsRequest(
            models=[
                resources_pb2.Model(
                    id=model_id,
                    model_type_id=model_type.id,
                    train_info=resources_pb2.TrainInfo(params=train_info_params),
                    output_info=resources_pb2.OutputInfo(
                        data=resources_pb2.Data(
                            concepts=[
                                resources_pb2.Concept(id="train-concept"),
                                resources_pb2.Concept(id="test-only-concept"),
                            ]
                        ),
                    ),
                )
            ]
        ),
        metadata=api_key_metadata(api_key),
    )
    raise_on_failure(post_models_response)

    train_and_test = ["train", "test"]
    inputs = []
    annotations = []
    for i, url in enumerate(URLS):
        input_id = str(i)
        inputs.append(
            resources_pb2.Input(
                id=input_id, data=resources_pb2.Data(image=resources_pb2.Image(url=url))
            )
        )

        train_annotation_info = struct_pb2.Struct()
        train_annotation_info.update({"split": train_and_test[i % 2]})
        ann = resources_pb2.Annotation(
            input_id=input_id,
            annotation_info=train_annotation_info,
            data=resources_pb2.Data(concepts=[resources_pb2.Concept(id="train-concept", value=1)]),
        )
        # Add an extra concept to the test set which show should up in evals, but have a bad score since there is
        # no instance of it in the train set.
        if i % 2 == 1:
            ann.data.concepts.append(resources_pb2.Concept(id="test-only-concept", value=1))
        annotations.append(ann)

    post_inputs_response = stub.PostInputs(
        service_pb2.PostInputsRequest(inputs=inputs),
        metadata=api_key_metadata(api_key),
    )
    raise_on_failure(post_inputs_response)
    wait_for_inputs_upload(stub, api_key_metadata(api_key), [str(i) for i in range(len(URLS))])

    post_annotations_response = stub.PostAnnotations(
        service_pb2.PostAnnotationsRequest(annotations=annotations),
        metadata=api_key_metadata(api_key),
    )
    raise_on_failure(post_annotations_response)

    train_annotation_info = struct_pb2.Struct()
    train_annotation_info.update({"split": "train"})
    train_query = resources_pb2.Query(
        ands=[
            resources_pb2.And(
                annotation=resources_pb2.Annotation(annotation_info=train_annotation_info)
            ),
        ]
    )

    test_annotation_info = struct_pb2.Struct()
    test_annotation_info.update({"split": "train"})
    test_query = resources_pb2.Query(
        ands=[
            resources_pb2.And(
                negate=True,
                annotation=resources_pb2.Annotation(annotation_info=test_annotation_info),
            ),
        ]
    )

    post_model_versions_response = stub.PostModelVersions(
        service_pb2.PostModelVersionsRequest(
            model_id=model_id,
            train_search=resources_pb2.Search(query=train_query),
            test_search=resources_pb2.Search(query=test_query),
        ),
        metadata=api_key_metadata(api_key),
    )
    raise_on_failure(post_model_versions_response)
    model_version_id = post_model_versions_response.model.model_version.id

    wait_for_model_trained(stub, api_key_metadata(api_key), model_id, model_version_id)

    post_model_outputs_response = stub.PostModelOutputs(
        service_pb2.PostModelOutputsRequest(
            model_id=model_id,
            version_id=model_version_id,
            inputs=[
                resources_pb2.Input(
                    data=resources_pb2.Data(image=resources_pb2.Image(url=URLS[0]))
                )
            ],
        ),
        metadata=api_key_metadata(api_key),
    )
    raise_on_failure(post_model_outputs_response)

    concepts = post_model_outputs_response.outputs[0].data.concepts
    assert len(concepts) == 2
    assert concepts[0].id == "train-concept"
    assert concepts[1].id == "test-only-concept"
    assert concepts[1].value <= 0.0001

    delete_app_response = stub.DeleteApp(
        service_pb2.DeleteAppRequest(
            user_app_id=resources_pb2.UserAppIDSet(user_id="me", app_id=app_id)
        ),
        metadata=pat_key_metadata(),
    )
    raise_on_failure(delete_app_response)
 def __init__(self, app_id):
     self.app_id = app_id
     self.channel = ClarifaiChannel.get_json_channel()
     self.stub = service_pb2_grpc.V2Stub(self.channel)