Home > Backend Development > PHP Tutorial > Building Microsoft's What-Dog AI in under 100 Lines of Code

Building Microsoft's What-Dog AI in under 100 Lines of Code

Jennifer Aniston
Release: 2025-02-15 10:30:12
Original
1012 people have browsed it

Building Microsoft's What-Dog AI in under 100 Lines of Code

This tutorial shows you how to build a dog breed identifier similar to Microsoft's What-Dog AI, but using Diffbot's Image API. The entire application is less than 100 lines of code and leverages Imgur for image hosting to minimize costs.

Key Features:

  • Uses a simple image upload form and PHP for processing.
  • Diffbot's Image API analyzes uploaded images and returns breed suggestions based on identified tags.
  • While not perfect, the resulting application demonstrates the accessibility and potential of modern AI for image recognition.

Getting Started:

  1. Diffbot Account: Obtain a free 14-day API token from Diffbot.com.
  2. Composer Setup: Use the following composer.json to install the necessary libraries:
{
    "require": {
        "swader/diffbot-php-client": "^2",
        "php-http/guzzle6-adapter": "^1.0"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "require-dev": {
        "symfony/var-dumper": "^3.0"
    }
}
Copy after login
<code>Run `composer install`.  The `minimum-stability` setting accommodates a beta dependency.</code>
Copy after login
  1. Imgur Account: Create an Imgur account and obtain a Client ID for anonymous image uploads.

Code Structure (index.php):

The core logic resides in index.php. The code first handles image uploads via an HTML form (omitted for brevity, focusing on the PHP backend). Imgur is used for hosting, saving on server costs. The uploaded image URL is then sent to Diffbot's Image API.

<?php
require 'vendor/autoload.php';

$token = 'YOUR_DIFFBOT_TOKEN'; // Replace with your Diffbot token
$imgur_client = 'YOUR_IMGUR_CLIENT_ID'; // Replace with your Imgur Client ID

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Handle image upload (using $_FILES) or URL submission (using $_POST['url'])
    // ... (Image upload to Imgur using Guzzle, obtaining the image URL) ...

    if (!isset($url) || empty($url)) {
        die("Image upload or URL submission failed.");
    }

    $diffbot = new Swader\Diffbot\Diffbot($token);
    $imageDetails = $diffbot->createImageAPI($url)->call();
    $tags = $imageDetails->getTags();

    echo "<img  src=\"{$url}\"    style="max-width:90%"500\" alt="Building Microsoft&#x27;s What-Dog AI in under 100 Lines of Code" ></img>";

    if (empty($tags)) {
        echo "<h4>No breed identified.</h4>";
    } else {
        echo "<h4>Suggested Breed(s):</h4>";
        foreach ($tags as $tag) {
            echo "- <a href=\"https://www.bing.com/images/search?q=" . urlencode($tag['label']) . "\" target=\"_blank\">" . $tag['label'] . "</a><br>";
        }
    }
}
?>

<!-- HTML form for image upload or URL input -->
Copy after login

Functions (Helper Functions):

The code uses helper functions (not shown above) to create links to Bing image search results for each suggested breed.

Testing and Results:

The tutorial includes several test images and their results, highlighting both successes and failures of the breed identification. The accuracy is comparable to Microsoft's What-Dog AI, demonstrating the feasibility of building a similar application with Diffbot.

Conclusion:

This tutorial showcases the ease of integrating AI-powered image analysis into a simple web application. While the accuracy isn't perfect, it highlights the potential of readily available APIs for building powerful image recognition features. Remember to replace placeholder tokens and IDs with your own.

The above is the detailed content of Building Microsoft's What-Dog AI in under 100 Lines of Code. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template