【Java×AI画像判定API】自作で学ぶ!TensorFlow連携の最速ガイド

プログラミング

「JavaでAIを使ってみたいけど、どこから始めればいいかわからない」
「画像を判定するシステムを作ってみたい」

そんなお悩みを抱えている方に向けて、この記事ではJavaとAI画像モデルを組み合わせた画像判定APIの作り方を丁寧に解説します。

TensorFlowモデルを使って画像分類し、REST APIでJavaと連携させる方法を具体的なコードとともに紹介します。

機械学習の知識がなくても、手順通りに進めるだけで誰でも簡単に画像分類APIが完成します。


AI画像判定APIとは何か?

画像を自動で識別する仕組みをJavaで扱います

結論:画像から情報を読み取り、分類・判定を行うのが画像判定APIです。

画像判定APIでは以下のような処理を行います:

  • 画像ファイルを受け取る
  • AIモデルに渡して分類結果を得る
  • 判定結果をAPI経由で返す

たとえば、以下のような活用例があります:

  • 食品画像を判定して「果物・野菜・飲み物」に分類
  • 医療画像から腫瘍の可能性をAIで予測
  • 商品画像からカテゴリを自動タグ付け

政府機関でもAI活用が推奨されており、経産省はAI導入による業務効率化を支援しています。
(参考:経済産業省「AI・データ活用支援」 https://www.meti.go.jp/policy/it_policy/ai/)


JavaとTensorFlowモデルの連携方法

画像分類AIをJavaアプリに組み込みます

結論:事前学習済みモデル(.pbファイルなど)をJavaから呼び出します。

準備するもの:

  • 画像分類モデル(例:TensorFlowのMobileNetなど)
  • Java APIでモデルを使えるライブラリ(例:TensorFlow Java API)

pom.xml に依存ライブラリを追加

1
2
3
4
5
<dependency>
  <groupId>org.tensorflow</groupId>
  <artifactId>tensorflow-core-platform</artifactId>
  <version>0.4.0</version>
</dependency>

画像分類コード(ImageClassifier.java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import org.tensorflow.Graph;
import org.tensorflow.Session;
import org.tensorflow.Tensor;
import java.nio.file.Files;
import java.nio.file.Paths;
 
public class ImageClassifier {
 
    public static String classify(byte[] imageData) {
        try (Graph graph = new Graph()) {
            graph.importGraphDef(Files.readAllBytes(Paths.get("model.pb")));
            try (Session session = new Session(graph)) {
                Tensor input = Tensor.create(imageData);
                Tensor output = session.runner()
                    .feed("input", input)
                    .fetch("output")
                    .run()
                    .get(0);
                float[][] result = new float[1][1000];
                output.copyTo(result);
                return "分類結果: " + result[0][0];
            }
        } catch (Exception e) {
            return "エラー: " + e.getMessage();
        }
    }
}

REST APIで画像判定を提供する

Spring BootでAPIエンドポイントを作ります

結論:画像ファイルをPOSTして、分類結果を返すAPIを作成します。

ImageController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
 
@RestController
@RequestMapping("/api")
public class ImageController {
 
    @PostMapping("/classify")
    public String classifyImage(@RequestParam("file") MultipartFile file) {
        try {
            byte[] imageData = file.getBytes();
            return ImageClassifier.classify(imageData);
        } catch (IOException e) {
            return "画像の読み込みに失敗しました";
        }
    }
}

躓きやすいエラーとその対処法

初心者がつまずきやすい部分を解説します

  • モデルファイルが見つからないエラー
    → 対策:model.pbのパスが正しいか、プロジェクト直下か確認
  • TensorFlowライブラリの依存解決失敗
    → 対策:Maven中央リポジトリのミラー設定、JDKバージョン(11以上)を使用
  • 画像サイズエラー
    → 対策:TensorFlow側の期待するサイズに画像をリサイズして渡す

応用例と活用アイデア

以下のような拡張が可能です:

  • 判定結果をデータベースに保存する
  • 複数画像の一括分類APIを作成する
  • 検出確率のしきい値を設けてフィルタリングする

全体構成と完成形コードまとめ

1
2
3
4
5
src/
├─ ImageClassifier.java
├─ ImageController.java
├─ application.properties
└─ model.pb

テスト方法:

  • POST /api/classify に画像ファイル(file)を送信
  • 結果が文字列で返ってくる(例:「分類結果: 犬」)

まとめ:JavaでもAI画像判定は実現できる

本記事では、JavaとTensorFlowを使ってAI画像判定APIを作成する方法を紹介しました。

学べたこと:

  • JavaからAIモデルを呼び出す方法
  • REST APIで画像分類結果を提供する方法
  • よくあるエラーとその回避方法
  • 実務でも使えるAPI構成の考え方

画像分類は、AIの入り口としても非常におすすめのテーマです。
ぜひこのAPIを元に、より高度な画像認識システムやスマートな業務支援ツールへ発展させてみてください。

タイトルとURLをコピーしました