「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を元に、より高度な画像認識システムやスマートな業務支援ツールへ発展させてみてください。