アンティークコインなどをスマホのカメラで真贋を判断するアプリをフラッターでプログラミングする方法
アンティークコインとは主に、欧米などの古銭です。もっと古いコインは古代コインと呼ばれています。これらは当たれば利益は大きいですが、本物か偽物かの真贋を判定する歴史学というのは、データが少ないので難しいです。
人気がまだ増えていない今こそ投資する機会かもしれない
今は日米の安定して人気な銀貨などよりも、ユーロ統一で注目されていない欧州諸国の旧硬貨などがお買い得かもしれませんが、こういう外国の商品はデータが少ないので難しいところです。
日米の人気な銀貨などはスーパーコピーという、見た目では分からないレプリカ(参考品や偽物)もあります。しかしレプリカでも真贋判定の目利きになる参考品として、数千円ぐらいまでなら役に立つと思います。
中国コインも偽物が多くて有名です。大金な投資ほど鑑定という保証料も多くなるのは、しょうがないと思います。有名な鑑定会社にスラブという鑑定済みを証明するプラスチック箱入りにするには、手数料で数千円です。
厳密には大学の研究所などで年代を測定する炭素法(放射性炭素年代測定法)などで、成分分析などをしないと分からないと思います。ただし目安にはなると思います。古物商なども最近はアプリで判断しています。
最近は有料の真贋判断アプリがGoogle Playなどで販売されています。真贋を判断するアプリは、これから述べる手順で作成できます。
まずはプロトタイプを作り支援者を増やす
よく紙やプレゼンテーションソフトで紙芝居なスライドなどを作る人がいますが、それよりは機能はしなくても、時短でもHTMLでホームページを作ったり、アプリを作った方が手間の無駄も無く、お金は持っているけど・知識が無い支援者も増やしやすいです。
また知識が少ししか無いクライアントは、白紙からオリジナルのプログラミングを求めますが、まずはフレームワークなどでプロトタイプ(試作品)を作ってしまった方が早いです。多くのユーザーはプログラミング技術ではなく、見た目であるデザインなどに心をひかれます。
フレームワークをフラッターを選んだのは「簡単そうなので」ですが、AIと連携しますのでPythonも使うかもしれません。では必要なエレメント(要素)などを述べます。
必要なエレメント
古銭などの画像を撮影: カメラを使用してコインの画像を取得します。
画像処理: コインの特徴を抽出し、データベースと比較します。
データベース: 真贋判断のための基準データ(特徴量やパターン)を保持します。
AIモデル: 機械学習を使用して、真贋を自動判定します。
実装のステップ
1. プロジェクトの初期設定
flutter create coin_authentication_app
cd coin_authentication_app
2. 必要なパッケージを追加
dependencies:
camera: ^0.12.0
image_picker: ^0.8.7
tflite_flutter: ^0.9.0
provider: ^6.0.5
3. カメラ機能の実装
import 'package:camera/camera.dart';
import 'package:flutter/material.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final cameras = await availableCameras();
final firstCamera = cameras.first;
runApp(MaterialApp(home: CameraScreen(camera: firstCamera)));
}
class CameraScreen extends StatelessWidget {
final CameraDescription camera;
const CameraScreen({required this.camera});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('古銭認識')),
body: CameraPreview(CameraController(camera, ResolutionPreset.high)),
);
}
}
4. 画像の特徴抽出とAIモデルの組み込み
事前にTensorFlowでトレーニングしたモデルを `tflite` フォーマットで保存します。
モデルを `assets/model.tflite` に配置。
import 'package:tflite_flutter/tflite_flutter.dart';
Future<String> classifyCoin(String imagePath) async {
final interpreter = await Interpreter.fromAsset('model.tflite');
// 画像を前処理してAIモデルに渡す(詳細はモデルに依存)
var output = List.filled(1, 0).reshape([1, 1]);
interpreter.run(imagePath, output);
return output[0] == 1 ? "真作" : "偽物";
}
5. ユーザーインターフェース
撮影ボタンを押したら画像を撮影し、AIに渡して結果を表示する画面を作成します。
注意点
データセット: 信頼性の高い古銭画像データセットを収集してAIモデルをトレーニングする必要があります。
精度の向上: モデルの精度を高めるため、特徴量エンジニアリングやデータ増強を行う。
ユーザー体験: 判定結果を視覚的にわかりやすく表示し、結果の根拠も説明できるように設計します。
このフレームワークを基に進めることで、真贋判定アプリを開発できます。