ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
IIIF絵巻物をAI動画で動かす:Video Annotationという新しいアプローチ

IIIF絵巻物をAI動画で動かす:Video Annotationという新しいアプローチ

はじめに IIIF(International Image Interoperability Framework)は、デジタルアーカイブの画像を相互運用可能な形で公開するための国際標準です。世界中の図書館・博物館が採用しており、高解像度画像の深層ズームや、異なる機関のコレクションを横断的に閲覧することを可能にしています。 本記事では、IIIF画像の一部領域にAI生成動画を重ねて表示する「IIIF Animated Viewer」を開発した過程を紹介します。題材は東京大学が公開する「百鬼夜行図」――妖怪たちの行列を描いた絵巻物です。 静止画の妖怪たちが、ゆらゆらと動き出す。そんな体験を、IIIF標準の枠組みの中で実現しました。 狙い 1. 絵巻物に「動き」を与える 絵巻物は本来、巻きながら読む動的なメディアです。右から左へ進む行列、風にはためく衣、揺れる炎――静止画でありながら動きを内包しています。AI動画生成でその潜在的な動きを顕在化させることで、作品の新しい鑑賞体験を提供できるのではないか、という着想がありました。 2. IIIF標準に準拠する 独自フォーマットではなく、IIIF Presentation API 3.0のマニフェストとして動画情報を記述します。これにより、他のIIIFビューアとの互換性を保ちつつ、既存のIIIFエコシステムに乗る形で動画アノテーションを提供できます。 3. 汎用的なパイプラインにする 百鬼夜行図だけでなく、他のIIIF資料にも適用可能な仕組みを目指しました。マニフェストのメタデータと全体画像からコンテキストを自動生成し、個別領域のプロンプト生成に反映するアーキテクチャにしています。 デモ デモは GitHub Pages で公開しています。 コレクション一覧ページ。IIIFコレクションからマニフェスト一覧を読み込み、サムネイル付きで表示する。 ビューア全体表示。百鬼夜行図の全体像がOpenSeadragonで表示され、下部に再生ボタンがある。 ズームすると個々の妖怪が確認でき、動画オーバーレイが元画像の上に重なって表示される。 システム構成 docs/ … GitHub Pages公開ディレクトリ index.html … コレクション一覧ページ viewer.html … OpenSeadragon + 動画オーバーレイビューア collection.json … IIIF Collection manifest.json … IIIF Manifest(動画アノテーション含む) runs/run_002/ … 生成動画ファイル scripts/ pipeline.py … 一括生成パイプライン process_raw.py … Veo生成動画のトリミング+manifest更新 workspace/ anno.json … 領域アノテーション(19件) context.txt … 自動生成コンテキスト runs/ … 中間データ(クロップ画像、プロンプト等) IIIFマニフェストでの動画アノテーション 従来のIIIFアノテーション IIIF Presentation API 3.0では、Canvasに対するアノテーションとして画像を配置します。 ...

mdx.jpのオブジェクトストレージとCantaloupe Image Serverを使ってIIIF画像を配信する

mdx.jpのオブジェクトストレージとCantaloupe Image Serverを使ってIIIF画像を配信する

概要 mdx.jpのオブジェクトストレージとIIIFイメージサーバの一つであるCantaloupe Image Serverを使ってIIIF画像を配信する方法に関する備忘録です。 背景 以下の記事で、mdx.jpのオブジェクトストレージを使った画像の配信方法について紹介しました。 また以下の記事で、Cantaloupe Image Serverで、Amazon S3に格納した画像を配信する方法について紹介しました。 これらを組み合わせることにより、デジタルアーカイブにおけるIIIF画像配信コストの課題の解決を目指します。 方法 以下の記事で紹介したDocker版Cantaloupeを使用します。 以下のリポジトリから、ソースコードをダウンロードいただけます。 https://github.com/nakamura196/docker_cantaloupe_s3 同梱されている.env.sampleを.envファイルにリネームし、設定を変更します。 # aws s3 CANTALOUPE_S3SOURCE_ENDPOINT= # mdx.jp # CANTALOUPE_S3SOURCE_ENDPOINT=https://s3ds.mdx.jp CANTALOUPE_S3SOURCE_ACCESS_KEY_ID= CANTALOUPE_S3SOURCE_SECRET_KEY= CANTALOUPE_S3SOURCE_REGION= CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME= ポイントはCANTALOUPE_S3SOURCE_ENDPOINTです。ここに、https://s3ds.mdx.jpを与えて、取得したACCESS_KEY_IDやSECRET_KEY、作成したBUCKET_NAMEやREGIONを設定します。 デモ 冒頭の記事でも使用した、いらすとやさんの画像を利用します。 https://www.irasutoya.com/2016/09/blog-post_810.html 以下、上記でアップロードした同じ画像ファイルを、Cantaloupeを使って配信している例です。 info.json https://cantaloupe.aws.ldas.jp/iiif/3/baby_asia_boy.png/info.json グレー化: full/max/0/gray.jpg https://cantaloupe.aws.ldas.jp/iiif/3/baby_asia_boy.png/full/max/0/gray.jpg なお、Cantaloupeを使って画像配信を行う場合には、上記の記事で実施したACLの設定(EveryoneにRead権限を与える)は不要です。デフォルトの設定を使用することで、オブジェクトストレージ上の画像ファイルへの直接アクセスは不可としつつ、Cantaloupeを介したアクセスのみを許可できるかと思います。 以下の記事で紹介したようなCantaloupe側のAccess Control設定を組み合わせることで、アクセス制御を実現することになるかと思います。 まとめ Amazon S3に格納した画像をIIIF画像として配信する方法として、以下の方法もあります。これが、Amazon S3以外のオブジェクトストレージにも対応しているのか、今後調査してみたいと思います。 IIIF画像の配信にあたり、参考になりましたら幸いです。

mdxのオブジェクトストレージを使用する(Cyberduckの利用)

mdxのオブジェクトストレージを使用する(Cyberduckの利用)

概要 mdxのオブジェクトストレージを使用する機会がありましたので、備忘録です。 https://mdx.jp/ 料金 2024年度の料金は以下のようになっています。 https://mdx.jp/guide/charge 1GBあたり、0.01ポイント(円)/日となっており、おおよそ1GBあたり、0.3円/月となっています。 申請方法 & s3cmdを用いた使い方 以下の公式チュートリアル動画が参考になりました。 https://www.youtube.com/watch?v=IN_4NS9hO2Y Cyberduckを使う 上記の動画ではコマンドラインツールによるファイル操作方法が紹介されています。 ここでは、Cyberduckを使用して、GUIを使ってファイル操作を行います。 AWS S3に対するCyberduckの操作方法を以下の記事で紹介しています。以下の方法を参考に、mdxのオブジェクトストレージに接続してみます。 接続設定 「新規接続」から接続設定を行います。 「Amazon S3」を選択して、サーバに「s3ds.mdx.jp」を入力します。 そして、発行された「アクセスキーID」および「シークレットアクセスキー」を入力します。 バケットの作成 右クリック > 「新規フォルダ」でバケットを作成できます。 ファイルのアップロード 以下のいらすとやさんの画像を使用します。 https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNuMuIaXnIW5QJXkLiV1ojUeUiIwNQF1O0lp2LgG2LGJUbIU8j4bFAyLyKq3BiYp53p0Yc8AtMsEykJAQgEx4SJyFvKY4OyNeDBFopPb4lnV7_wtZNkr91qwj6-m-8s-sl1aadYMhrpuoI/s800/baby_asia_boy.png 「satoru196」フォルダにドラッグ&ドロップでアップロードすることができます。 上述した公式チュートリアルでも言及されていますが、このままでは以下のURLにアクセスしても、表示ができません。 https://s3ds.mdx.jp/satoru196/baby_asia_boy.png 以下のようなエラーコードが表示されます。 <Error> <script/> <Code>AccessDenied</Code> <Message>Access Denied</Message> <RequestId>...</RequestId> <HostId>00000000000000000</HostId> </Error> ACLの変更 ファイルを右クリックして、「情報」をクリックします。 以下のように、Everyoneを選択して、 READ権限を付与します。 この結果、以下のURLから画像を閲覧することができます。 https://s3ds.mdx.jp/satoru196/baby_asia_boy.png まとめ mdxのオブジェクトストレージを活用することで、様々な用途がありますが、例えばメディアを安価に公開することができそうです。特に、デジタルアーカイブにおけるメディアの公開元として、有力なインフラになり得るかと思います。 mdxのs3互換のオブジェクトストレージの利用にあたり、参考になりましたら幸いです。

Omeka ClassicとOmeka S: 機能と違いの比較(GPT-4による解説)

Omeka ClassicとOmeka S: 機能と違いの比較(GPT-4による解説)

Omeka ClassicとOmeka S: 機能と違いの比較(GPT-4による解説) 対象ユーザー: Omeka Classic: 主に個人や小規模な組織がデジタルコレクションを公開する目的。 Omeka S: 中から大規模な組織や複数のプロジェクトを同時に扱うことができるように設計。 サイト管理: Omeka Classic: 1つのインスタンスで1つのウェブサイトを作成。 Omeka S: 1つのインスタンスで複数のウェブサイトを作成・管理。 データ共有: Omeka Classic: 基本的には独立したサイトを作成。 Omeka S: データの再利用や共有を容易にするため、リンクトデータとセマンティックウェブ技術に対応。 拡張機能: Omeka Classic: プラグインをサポート。 Omeka S: モジュールをサポート。※Omeka ClassicのプラグインはOmeka Sのモジュールと互換性がない。 コミュニティサポート: Omeka Classic: 豊富なサポート資料やオンラインコミュニティが存在。 Omeka S: 比較的新しいプラットフォームで、まだそれほど多くの資料やサポートがないが、急速に成長中。 選択をする際には、プロジェクトの規模やニーズ、技術的なスキル、利用可能なリソースなどを考慮して、どちらのプラットフォームが適切かを判断することが重要です。この解説はGPT-4によって作成されました。 質問一覧 Omeka ClassicとOmeka Sの違いを教えてください。 上記の説明をマークダウン形式に変換してください。 上記の記事にタイトルをつけてください。 GPT-4を用いたことを追加してください。 私が行った質問の一覧をマークダウンで作成してください。 続き zenn.devに投稿するにあたり、複数のトピックを提案してください。 zenn.devへの投稿にあたり、以下のようなトピックを提案します。 Omekaプラットフォーム入門: Omeka ClassicとOmeka Sの基本概念やインストール方法を紹介。 Omeka ClassicとOmeka Sの拡張機能比較: 両プラットフォームで利用できるプラグインとモジュールの比較と使い方。 Omekaを利用したデジタルアーカイブ構築: Omeka ClassicまたはOmeka Sを用いてデジタルアーカイブを作成する方法。 Omeka ClassicからOmeka Sへの移行ガイド: データの移行や再設定が必要な部分について説明。 リンクトデータとセマンティックウェブの活用: Omeka Sでリンクトデータやセマンティックウェブ技術を活用する方法とメリット。 デジタルヒューマニティーズとOmeka: デジタルヒューマニティーズ分野でのOmekaの活用事例や可能性について説明。 Omekaプロジェクトのベストプラクティス: 成功したOmekaプロジェクトの共通点やベストプラクティスについて解説。 オープンソース文化遺産管理ソフトウェアの比較: Omeka以外のオープンソース文化遺産管理ソフトウェア(例: CollectiveAccess, DSpace)との比較。 より技術ブログに適した端的なキーワードを最大5つ教えてください。 技術ブログに適した端的なキーワードは以下の通りです。 ...

Amazon Lightsailを用いたOmeka Sサイトの構築(独自ドメイン+SSL化を含む)

Amazon Lightsailを用いたOmeka Sサイトの構築(独自ドメイン+SSL化を含む)

更新履歴 2022/09/08 スクリプトの記述を最新化しました。 概要 Amazon Lightsailは以下のような説明がなされています。 Amazon Lightsail は、コンテナなどのクラウドリソースを予測可能な低価格で簡単に管理できる、使いやすい仮想プライベートサーバー (VPS) です。 今回は、このAmazon Lightsailを用いたOmeka Sの構築方法を紹介します。合わせて、データベースの公開にあたり一般的に求められる「独自ドメイン」「SSL」設定についても扱います。 Amazon Lightsail インスタンスの作成 以下のページにアクセスします。 https://lightsail.aws.amazon.com/ls/webapp/home/instances そして、以下の「Create Instance」ボタンをクリックします。 「Select a blueprint」において、「LAMP (PHP 7)」を選択します。 「Choose your instance plan」において、インスタンスプランを選択します。今回は最も低価格のプランを選びました。 起動したら、以下のインスタンスのページにアクセスして、「Connect using SSH」ボタンを押します。 以下の画面が表示されます。 Linux ip-172-26-5-202 4.19.0-19-cloud-amd64 #1 SMP Debian 4.19.232-1 (2022-03-07) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. ___ _ _ _ | _ |_) |_ _ _ __ _ _ __ (_) | _ \ | _| ' \/ _` | ' \| | |___/_|\__|_|_|\__,_|_|_|_|_| *** Welcome to the LAMP packaged by Bitnami 7.4.28-14 *** *** Documentation: https://docs.bitnami.com/aws/infrastructure/lamp/ *** *** https://docs.bitnami.com/aws/ *** *** Bitnami Forums: https://community.bitnami.com/ *** bitnami@ip-172-26-5-202:~$ インスタンス内での作業 ファイルの移動 まず、必要なファイルのダウンロードや移動を行います。 ...

【FOSSメモ】CollectiveAccess

【FOSSメモ】CollectiveAccess

以下、GitHubのREADME.mdの一部和訳です。 github.com CollectiveAccessについて CollectiveAccessは、博物館、アーカイブ、および研究のコンテキストで複雑なデジタルおよび物理コレクションを管理、説明、および発見するためのフレームワークを提供するWebベースのアプリケーションスイートです。これは2つのアプリケーションで構成されています。Providenceは、CollectiveAccessの「バックエンド」カタログコンポーネントです。高度に構成可能であり、さまざまなメタデータ標準、データ型、およびメディア形式をサポートします。Pawtucket2は、CollectiveAccessの汎用パブリックアクセス公開ツールです。プロビデンスで管理されているデータを中心にWebサイトを作成する簡単な方法を提供します。(Pawtucket2の詳細については、https://github.com/collectiveaccess/pawtucket2をご覧ください) CollectiveAccessは、オープンソースのGNU PublicLicenseバージョン3で無料で入手できます。

【Omeka S モジュール紹介】Item Sets Tree

【Omeka S モジュール紹介】Item Sets Tree

概要 Item Sets Treeはアイテムセットの階層構造を設定できるモジュールです。 本モジュールの使い方についてご紹介します。 omeka.org 概要 インストール データ 機能紹介 親アイテムセットの設定 階層構造の確認 各アイテムセットのアイテム一覧画面における子孫のアイテムの表示 サイトでの表示 まとめ インストール モジュールのインストール後、以下の設定画面が表示されます。こちらはあるアイテムセットのアイテムを表示した際、その子孫のアイテムセットのアイテムも表示するかを指定するオプションです。後ほど違いを確認します。 データ 今回は「いらすとや」で公開されている画像を使用します。 www.irasutoya.com 「いらすとや」では「人物」>「赤ちゃん」>「子守唄のイラスト」といった形で階層構造を持っています。そこで、「人物」と「赤ちゃん」をアイテムセットとして、「子守唄のイラスト」や「タオルを使ってうつ伏せになる赤ちゃんのイラスト」などをアイテムとして扱います。 Omeka Sの画面では以下の通りです。 アイテムセットの一覧画面 アイテムセット「赤ちゃん」のアイテム一覧画面 アイテムセットとして「人物」「赤ちゃん」があり、アイテムセット「赤ちゃん」の中に、2つのイラストが格納されています。 機能紹介 親アイテムセットの設定 本モジュールをインストールすることにより、各アイテムセットの編集画面に「Item Sets Tree」というタブが表示されます。こちらで、親とするアイテムセットを指定することができます。 階層構造の確認 画面サブのメニューの「モジュール」 > 「Item Sets Tree」から、設定したアイテムセットの階層構造を確認できます。違いをわかりやすくするために、アイテムセット「人物」に加えて、「イベント」「祝日・行事」も追加しています。 各アイテムセットのアイテム一覧画面における子孫のアイテムの表示 上のインストールのところで述べた「Item sets include descendants」を有効化すると、各アイテムセットのアイテム一覧画面において、子孫のアイテムを表示することができます。 以下の例で示されたアイテムは、アイテムセット「人物」に含まれていませんが、「人物」の子アイテムセット「赤ちゃん」を介して表示されています。 サイトでの表示 アイテムセットの階層構造をサイトで表示する方法として、カスタムリンクを追加する方法と、サイトページにItem Sets Treeのブロックを埋め込む方法の2種類があります。 前者は、以下のナビゲーションメニューから追加できます。特にカスタマイズ等を行わない場合には、この方法が簡単です。 後者の場合は、サイトページの編集画面において、画面右部の「新規ブロックを追加」パネルから、Item Sets Treeを追加します。この方法の場合、ページのタイトル変更や、各アイテムセットの説明、そのアイテムセットに含まれるアイテム数を表示するかなどを設定できます。 後者の方法で作成したサイトページの例は以下です。 https://diyhistory.org/nakamura196/s/main/page/item-sets-tree まとめ 以上、アイテムセットの階層構造を設定できるItem Sets Treeモジュールについて説明しました。階層構造を持ったコレクションの管理などにおいて、参考になりましたら幸いです。

【機能開発】Omeka SのIIIF ServerモジュールにおけるImage APIを使用しない設定の追加

【機能開発】Omeka SのIIIF ServerモジュールにおけるImage APIを使用しない設定の追加

概要 Omeka SのIIIF Serverモジュールについて、Image APIを使用しない設定を追加する機能開発を行いました。これにより、レンタルサーバなどのリソースが限られた環境において、IIIFマニフェストなどの配信が容易となります。デジタルアーカイブシステムの持続性と利活用性の向上にむけて、本機能がお役にたてば幸いです。 背景 Omeka SのIIIF Serverモジュールは、Omeka Sに登録されたメタデータから、IIIFマニフェストファイルなどを生成するモジュールです。Omekaの様々なモジュールを開発されているDaniel-KM氏が主に開発されています。 github.com 画像については、Image Serverが必要となります。Awesome IIIFに挙げられているようなIIIF ServerをOmeka Sとは別に導入するか、Omeka SのImage Serverモジュールを使用することができます。後者については、Omeka Sのみで実現することができるため、LAMP環境が構築されたレンタルサーバを利用して、IIIF準拠の画像やマニフェストファイルなどの配信が可能となります。レンタルサーバはCPUやメモリといったリソースが限定されますが、メンテナンスコストが低い点が利点として挙げられます。 一方、レンタルサーバなどのリソースが限られた環境に、上述のOmeka SのImage Serverモジュールを導入するには課題があります。Image Serverモジュールが動的にタイル画像を配信する際、この処理に時間がかかり、タイル画像の表示が遅れる事象が確認されました。((なお、事前にタイル画像を生成するオプションも提供されています。これにより、リクエストがある度にタイル画像を生成する処理は不要となりますが、ディスク使用量の増加といったデメリットもあります。)) 解決策 IIIFマニフェストにおいて、必ずしもIIIF Image APIに準拠する必要はなく、単純にJPEG画像等を参照することもできます。((なお、これにより画像の動的なリサイズや回転、切り出し等ができなくなるため、機能が限定されるデメリットもあります。)) www.kanzaki.com そこで、レンタルサーバなどのリソースが限られた環境において、Omeka Sを用いたIIIFマニフェストの配信を行うための新たなオプションとして、このImage APIを使用せずに、Omeka Sに登録されたJPEG画像等をそのまま使用する設定をIIIF Serverモジュールに追加しました。以下のversion 3.6.4.3から本機能が利用できます。 github.com 具体的には、IIIF Serverモジュールの以下の設定画面で有効化できます。 本モジュールは、東京大学工学・情報理工学図書館の工学史料キュレーションデータベースで使用されています。 curation.library.t.u-tokyo.ac.jp 先述した通り、本設定の有効化により、IIIFで利用できる機能が一部制限されるため、最善の手段ということではありませんが、リソースが限られたサーバ上でのIIIFマニフェストの配信手段のオプションとして、本機能がお役にたてば幸いです。