clarifai / clarifai-php
Clarifai PHP 客户端
Requires
- php: >=7.0.0
- google/protobuf: ^v3.6.0.1
- grpc/grpc: ^1.12.0
Requires (Dev)
- phpunit/phpunit: >=6
This package is not auto-updated.
Last update: 2024-09-23 18:24:27 UTC
README
已弃用
此 API 客户端不再受支持。
请使用 Clarifai PHP gRPC 代替,它更快且功能更丰富。
Clarifai API PHP 客户端
- 在以下位置尝试 Clarifai 演示: https://clarifai.com/demo
- 在以下位置注册免费账户: https://clarifai.com/developer/signup/
- 在以下位置阅读开发者指南: https://clarifai.com/developer/guide/
安装
composer require clarifai/clarifai-php
注意:如果您没有使用框架(例如 Laravel),您可能需要引入由 composer 生成的
autoload.php
文件:require_once('vendor/autoload.php');
先决条件
PHP >=7.0
注意:此库需要启用 curl PHP 扩展。这很可能已经在您的 PHP 主机服务上完成,除非您自己托管 PHP,在这种情况下,您可能需要取消注释(删除
;
)php.ini
文件中的extension=php_curl.dll
行。
入门
我们将展示使用 Clarifai API 的三个常见示例。以下是需要运行这些示例的所有导入。此外,创建了 ClarifaiClient
对象,该对象用于访问 Clarifai API 中的所有可用方法。
use Clarifai\API\ClarifaiClient; use Clarifai\DTOs\Inputs\ClarifaiURLImage; use Clarifai\DTOs\Outputs\ClarifaiOutput; use Clarifai\DTOs\Predictions\Concept; use Clarifai\DTOs\Searches\SearchBy; use Clarifai\DTOs\Searches\SearchInputsResult; use Clarifai\DTOs\Models\ModelType; // Skip the argument to fetch the key from the CLARIFAI_API_KEY env. variable $client = new ClarifaiClient('YOUR_API_KEY');
注意:与其将您的 Clarifai API 密钥硬编码,不如将密钥保存在环境变量中。如果您跳过参数并简单地执行
new ClarifaiClient()
,客户端将自动尝试从名为CLARIFAI_API_KEY
的环境变量中读取您的 API 密钥,您应在环境中设置该密钥。
示例 #1:预测
以下代码将识别列表中每张图片中包含的概念。它使用我们通用公共模型,该模型识别各种概念。
$model = $client->publicModels()->generalModel(); $response = $model->batchPredict([ new ClarifaiURLImage('https://samples.clarifai.com/metro-north.jpg'), new ClarifaiURLImage('https://samples.clarifai.com/wedding.jpg'), ])->executeSync();
如果您的用例需要更具体的预测,您可以使用更多专用公共模型之一,如 weddingModel
、foodModel
、nfswModel
等。 这里 是所有可用模型的列表。
注意:您还可以创建自己的模型,并使用自己的图像数据集对其进行训练。我们在示例 #2 中展示了如何进行。除了使用
new ClarifaiURLImage
在 URL 图像上运行预测之外,您还可以使用new ClarifaiFileImage
在本地文件图像上预测。
下面是如何从 $response
变量中访问数据。对于每张图片,我们打印出模型为该图片预测的所有概念。
/** @var ClarifaiOutput[] $outputs */ $outputs = $response->get(); foreach ($outputs as $output) { /** @var ClarifaiURLImage $image */ $image = $output->input(); echo "Predicted concepts for image at url " . $image->url() . "\n"; /** @var Concept $concept */ foreach ($output->data() as $concept) { echo $concept->name() . ': ' . $concept->value() . "\n"; } echo "\n"; }
注意:存储在
$concept->value()
中的值是概念$concept->name()
在图片中包含的百分比可能性。
当出现问题时,您可以通过处理错误并检查详细信息来处理。在您的程序中,以下代码将位于上一部分的代码之上。
if (!$response->isSuccessful()) { echo "Response is not successful. Reason: \n"; echo $response->status()->description() . "\n"; echo $response->status()->errorDetails() . "\n"; echo "Status code: " . $response->status()->statusCode(); exit(1); }
有关在视频中预测概念的说明,请参阅 Clarifai 开发者指南。
示例 #2:创建和训练自定义模型 在一些输入和概念上创建和训练自定义模型
您可以选择创建自己的模型,添加训练数据,并使用该模型以与示例#1相同的方式对新图像进行预测。
这首先需要创建模型的主题概念。然后添加样本输入,我们将它们与某些概念关联或解关联。模型创建后,我们对其进行训练,之后该模型可用于对新输入进行预测。
$client->addConcepts([new Concept('boscoe')]) ->executeSync(); $client->addInputs([ (new ClarifaiURLImage('https://samples.clarifai.com/puppy.jpeg')) ->withPositiveConcepts([new Concept('boscoe')]), (new ClarifaiURLImage('https://samples.clarifai.com/wedding.jpg')) ->withNegativeConcepts([new Concept('boscoe')]) ]) ->executeSync(); $client->createModel('pets') ->withConcepts([new Concept('boscoe')]) ->executeSync(); $response = $client->trainModel(ModelType::concept(), 'pets') ->executeSync(); if ($response->isSuccessful()) { echo "Response is successful.\n"; } else { echo "Response is not successful. Reason: \n"; echo $response->status()->description() . "\n"; echo $response->status()->errorDetails() . "\n"; echo "Status code: " . $response->status()->statusCode(); }
示例#3:视觉搜索
可以使用图像在搜索中找到其他视觉相似的图像。在添加一些图像使用 addInputs
(参见示例#2)后,我们使用 searchInputs
进行搜索。
$response = $client->searchInputs( SearchBy::urlImageVisually('https://samples.clarifai.com/metro-north.jpg')) ->executeSync(); if ($response->isSuccessful()) { echo "Response is successful.\n"; /** @var SearchInputsResult $result */ $result = $response->get(); foreach ($result->searchHits() as $searchHit) { echo $searchHit->input()->id() . ' ' . $searchHit->score() . "\n"; } } else { echo "Response is not successful. Reason: \n"; echo $response->status()->description() . "\n"; echo $response->status()->errorDetails() . "\n"; echo "Status code: " . $response->status()->statusCode(); }
请参阅Clarifai开发者指南以获取更多关于Clarifai API可以提供的信息。
获取帮助
如果您在使用库方面需要任何帮助,请联系support@clarifai.com的支持团队或我们的开发者关系团队developers@clarifai.com。
如果您发现了一个错误或想提出一个功能请求,请在此处创建问题或提交拉取请求。
许可证
本项目采用Apache 2.0许可证 - 请参阅LICENSE文件以获取详细信息。