見出し画像

Cloud Vision APIを使ってObsidianで画像を管理する

この記事はObsidian Advent Calendar 2023の2日目の記事です。
1日目はtadashi-aikawaさんによる「📘もしかしたら世界初かもしれないObsidianアドベントカレンダー開始までの軌跡」でした。

Obsidianはノートアプリであるものの、文章としてノートを書くだけでなく、写真やPDFファイルなどを埋め込むこともできます。
そして、ファイルには階層的なタグをつけて管理できます。

このObsidianを使って文章としてのノートを管理するだけでなく、「画像もうまく管理したい!」と考える私が取り組んでいることを紹介します。

画像管理は難しい

最近はスマートフォンが普及し、手軽に写真を撮影できるようになりました。とても便利になった一方で、大量の写真を撮影したものの、それをどうやって管理するのかは難しいものです。

iOSには「写真」、Androidには「Googleフォト」など標準で写真管理アプリが用意されており、これを使っている人もいるかもしれません。これらも十分に高機能で、位置情報をオンにして撮影すると撮影場所を地図上に表示してくれたり、写真に写っている人の顔でグルーピングしてくれたりします。また、「ラーメン」や「花」などのキーワードを入力して検索する機能もあります。

問題なのは、自分のノートと連携するのが難しいことです。せっかくノートを書いているのに、それと写真アプリは別々のアプリなのです。
もちろん、iOSのメモアプリや、AndroidのGoogle Keepなどには写真も入れられるので、ここに埋め込む方法もありますが、これらのメモアプリはそれほど多くの機能を備えているわけではありません。

Obsidianで画像も管理したい

ここで登場するのが私が好きなObsidianです。毎日のようにさまざまなことを記録している私はObsidianのヘビーユーザーで、本まで書いてしまいました。

そんな私は当然のように、写真をObsidianで管理しようとしたことがありました。以下の記事で書いたように、Map Viewプラグインを使って画像の位置情報で管理しています。

これは現在も続けているのですが、このときにノートに記述しているのは写真を撮影した位置情報だけでした。位置情報は写真のEXIFに記録されているので簡単に取得できますが、位置情報だけではiOSやAndroidの写真アプリのように、キーワードでの検索はできません。

できるなら、その写真で撮影したものをタグとして検索できると便利です。ただし、写真を1枚ずつ見て、そこに写っているものをテキストとして入力して検索できるようにするのは非常に面倒です。

Google Cloud Vision APIとは

そんな中、AIの普及もあり、徐々に精度が上がっているのが画像の物体検出です。R-CNNやYOLO、SSD、DCNなどさまざまな手法が登場し、写真に写っているものを人間よりも正確に認識できるくらいになってきました。

そして、物体検出を手軽に扱えるライブラリとしてGoogleが提供しているCloud Visionがあります。APIとしてプログラムから呼び出すもので、ラベル検出などは毎月最初の1000ユニットまで無料で使えます。

APIとしてプログラムから呼び出せるだけでなく、その動作をちょっと試したいだけであれば、Webブラウザから画像をアップロードするだけでどんな情報を取得できるのかを確認できます。

ここに画像をアップロードすると、たとえば次のような情報を取得できます。

ランチの写真をアップロードした例
川の写真をアップロードした例

このように、写真に写っているものを物体として(Objects)認識することもできますし、タグ(Labels)を出すこともできます。

さらに、画像内の文字を認識(OCR)したり、ランドマークの名前を出してくれたりします。たとえば、次の画像をアップロードすると、見事に城の名前まで推定して出してくれました。

鶴ヶ城の写真をアップロードした例

これを使って、タグやキーワードで検索できるノートをObsidianに作成するのです。

Obsidianのノートにタグをつける

上記で取得した物体やタグ、ランドマークの情報を使って、Obsidianのノートにタグをつけることを考えます。Map Viewの例で作成しているノートに項目を追加して、次のようなタグをつけたノートを作成します。

---
location: [35.000, 135.000]
tags:
  - 写真/ラベル/Food
  - 写真/ラベル/Tableware
---

[![写真](https://thumb.gyazo.com/thumb/200/サムネイルのファイル名.jpg)](https://gyazo.com/写真のファイル名)

このようにノートのフロントマターなどでタグをつけておくと、そのタグでノートを分類できます。もちろん、検索もできます。
iOSの写真アプリや、AndroidのGoogleフォトのようなきめ細かな検索は難しくても、「食べ物の写真を探したい」「水辺の写真を探したい」「曇りの写真を探したい」という目的を満たすには十分です。

Obsidianなら階層的なタグが使えるので、次のようにランドマークの名前は別の階層のタグにすることで管理しやすくなります。

---
location: [35.000, 135.000]
tags:
  - 写真/ランドマーク/Tsuruga-Jo
---

[![写真](https://thumb.gyazo.com/thumb/200/サムネイルのファイル名.jpg)](https://gyazo.com/写真のファイル名)

ラベルでもランドマークでも、出力されるのはまだ英語ですし、精度の面ではもう一歩な感じはしますが、物体検出のプログラムがさらに進化したときに、うまく分類できて欲しい画像を検出できることを期待しています。

将来的には、Obsidianのプラグインとして使えるようになるかも。

この記事が気に入ったらサポートをしてみませんか?