「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 に依存ライブラリを追加
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow-core-platform</artifactId>
<version>0.4.0</version>
</dependency>
画像分類コード(ImageClassifier.java)
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
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を作成する
- 検出確率のしきい値を設けてフィルタリングする
全体構成と完成形コードまとめ
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を元に、より高度な画像認識システムやスマートな業務支援ツールへ発展させてみてください。