PicDB version2.0.0 とりあえず公開

PicDB version2.0.0

v1から変えた部分は

  • ネット共有機能の廃止
  • AtPictureのDBから既存のタグを抽出するように変更
  • タグの読み仮名を自動生成

の大きく三つ。
本当はAtPictureのDBへ直接書き込もうとしてたんだけど、やるとDBが壊れてAtPictureが落ち、DB破損で二度と読めなくなるという事態が頻発したので諦めました。ということで、AtPicture側へのタグ情報の書き出しはCSVファイルで手動で読み込ませる、という安全そうな方法に変更しました。
基本的に v1.0 と互換性はありません。ご注意下さい。

ライセンス

当ソフトウェアは以下のソフトウェア/ライブラリを利用しています

  • Python
  • BerkeleyDB
  • wxWidgets
  • SKK辞書
  • 属性データベース管理ライブラリ(β版)

当ソフトウェアはGPLバージョン3に基づいて提供されます。また、.dicファイルはSKK辞書(SKK-JISYO.L.unannotated)に基づいて生成されています。ソースコードが欲しい場合は個別にご連絡下さい。※単にファイルサイズの問題で同梱していないだけです

インストール方法

  1. ここからPicDB本体を落として解凍します
    • 10MB以上ある……

アンインストール方法

  1. PicDBを解凍したフォルダを削除します
  2. レジストリは使っていません

PicDBの使い方

PicDBはAtPictureのDBに対し、画像に可能な限り楽にタグ付けをしていくことを目指して作られた補助ツールです。PicDB.exeを起動すると次のような画面になります。以下、PicDBの画像が表示されているウィンドウをビューア、タグを入力する側をタグボックス(デフォルトでは画面右下にあります)と呼称します。

PicDBは以下の使い方を想定しています。
  1. 新規画像は全て特定のフォルダに入れておく
  2. そのフォルダ内の画像へタグ付けする(ココの部分の補助が目的)
  3. 処理が終わったものは順次処理済フォルダに移行していく

少なくとも現バージョンではこの使い方を前提として機能設計がされています。処理済フォルダへのファイルの自動移動等は実装されていません。

使い方(初回起動時)

初回起動時は、次のように開く画像フォルダの位置を聞かれます。次回以降は前回のフォルダを記憶しているので、それをデフォルトとして起動します。また、PicDB.exeに開きたいフォルダをD&Dして起動すると、それをデフォルトとして起動します。

次に、"F9"キーでAtPictureから属性(PicDBではタグと呼称)を抽出し、読み仮名の自動生成を試みます。このとき、処理に失敗する可能性があるため、AtPictureを起動しないでください(起動している場合は終了してください)。抽出するため、AtPictureの場所を指定してください。


抽出に成功すると、自動生成されたタグの読み仮名は.tagsに記述されます。カタカナ、ひらがなで形成されたタグはほぼ問題ないと思いますが、漢字かな混じりは変な結果が生じる可能性があります。出来る限り一度ちゃんと見て、問題ないか確認してください。タグの読み方は次のように記述されます(v1.0と互換性はありません)。

デザイン : dezain
ネタ : neta
写真 : s[hy]ash?in
虹 : (ni[jz]i|kou)

読み仮名はこのように正規表現で記述されます。また、「ー」記号は - で表現され、「・」は省略されます(基本的に記号はタグ名に使わないようにしてください)。最長一致かつ総当たりで読み仮名を推定します(上記の2つめの例「iPod風」は総当たりのせいで普通は読まないような読み方まで生成されている例です)。読み仮名が間違っている・自分好みに直したい場合は、手作業で.tagsファイルの読み仮名の箇所を編集してください。なお、タグ名に" : "や" < "等が含まれているとタグ解析に失敗します。" "(半角スペース)、":"、"<"をそれぞれ単独で使うことは一応可能なはずですが、お薦めはしません。

次に一括でタグ登録を楽に出来るようにするために、自分の使うタグに内包関係を記述します。別に記述しなくても使えますが、タグの数が多い人は書いておいた方が楽になります。この部分はv1.0と互換性があります。内包関係とは、「タチコマ」は「攻殻機動隊」に属し、「攻殻機動隊」は「アニメ」に属し、といったタグ間の関係性を意味します。これを定義しておくと、上記の例であれば「タチコマ」をタグ付けした時点で自動的にそれの上位タグである「攻殻機動隊」「アニメ」が設定される、ということになります。

マリ < エヴァ
タチコマ < 攻殻機動隊

一括でもう少し簡易に書くやり方として、以下の構文もサポートしました。

アニメ > エヴァ , 攻殻機動隊

これで「アニメ」に「エヴァ」と「攻殻機動隊」が含まる、という定義になります。

.tagsの編集が終わったら、PicDBを再起動するか"F5"キーで設定情報の再読込をかけてください(通常は意識する必要はありませんが、.tagsファイルはShift_JISで保存してください)。

使い方(通常時)

タグボックスの位置を動かしたい場合は、タグボックスの左端の部分をつかむことで動かせます。ウィンドウ移動時のマウス解放イベントが捕捉できないので、動かしたら同じ箇所を右クリックして位置情報の確定をしてください

この画像に「壁紙」「攻殻機動隊」タグを付ける場合、タグボックスに「k」を入力するとこの二つのタグが候補として表示されます。表示は使用回数の多いタグほど下に来ます。複数候補のある状態で"Enter"を押すことで最下のタグが選択されます(v1.0のサムネですが機能的には全く同じです)。

"ka"と入れた時点で「壁紙」しか候補がなくなるため、自動的に「壁紙」が選択されます。次に"k"と押すと、残りのタグの中では「攻殻機動隊」しか残っていないため、これが自動的に選択されます。さらに「攻殻機動隊」の上位タグである「アニメ」が選択されます。タグボックス内のテキストボックスに入力文字が無い状態で"Enter"を押すことでタグ情報の設定が確定し、次の画像へと移動します。この時点ではPicDBの保持するDBにのみ情報が書き込まれ、AtPictureへは書き込まれていません。以下、こんな感じです。


タグ情報をAtPictureへ書き込みたい、という場合は"F9"を押してください。CSVファイルで画像情報が出力されます。

このCSVファイルをAtPictureのファイル > 画像情報CSVを読み込む で読み込ませることで、AtPictureのタグ情報へ登録することができます。

また、その場でタグ追加がしたい場合は、タグボックスへ「新しいタグ名」と打ち込んで"Enter"で読み仮名の自動生成と.tagsファイルへの書き込みがなされます。また、「タグ名 < タグ名」と書き込むことで、内包関係もその場で生成することができます。

その他のショートカットキー
  • 次の画像に行きたい場合は"Ctrl + →"
  • 戻りたい場合は"Ctrl + ←"
  • 終了したい場合は"Esc"

at_pictureのタグ付けを分担できるようオンラインで共有するためのツールを作った

週末レスを書き込もうと思ってたら熱出してぶっ倒れてた。拙いブツですが使ってくれている人、どうもありがとう。2chは規制がかかって書き込めないのでこちらで。

総じて

書き込みを見ていて思ったけど、今回意図的に一緒にした

  1. at_pictureへの手作業でのタグ登録を楽にする機能
  2. ネット共有で自動化する機能

の2つは分離しようと思う。
明らかにネット共有がネックになって速度低下や機能障害を引き起こしているので。

まずは今週末くらいに前者を単独で高速化したのを挙げようと思うので、現バージョンはちょっと無視してもらえるとありがたいです。

当該ツールに関する個別レス

画像ファイル属性管理ソフト AtPicture Part 3における書き込みへの返答です。勘違いしてレス返すと自意識過剰(笑)って言われそうなので、当ツールに対してのものと明らかにわかるもののみに限定しています。レスないぞ、という方は個別に指摘頂ければ幸いです。

>>608
早速の使用どうもありがとう。一端ネット共有機能については開発停止するけど、せっかく入れてもらった今回のデータは次回以降に活かせるようにします。

>>609
ウィンドウの移動は実装しました。608氏同様オンラインDBへの協力ありがとう。自動処理はネット機能削除に伴い一端廃止されるのでモーマンタイです。

>>614
NOD32の最新定義ファイル適用状態でチェックされています。ネットへ接続しにいくのが誤判定されていると思われます。

>>619
620氏の説明の通りです。あとちょっとタグ付けを楽にしてくれる感じ。

>>621
うん。確かに基本的に共有される、っていうのに抵抗あるのはすごくよく分かる。P2Pツール的に暗号化してやればちょっとは抵抗減るのかなぁ……。

>>622
623氏の指摘通り、ESCです。すみません書いておくべきでした。

>>623
何か別のソフトで重い処理(典型例:動画のレンダリング)を走らせている、重量級アンチウイルスソフトで最大までセキュリティ確保のためあらゆる機能をフル稼働させている、などがあるとたぶんもたついてうまく動作しないと思います。次バージョンではなんとか改善してみます。

>>624
フルスクリーンは全く想定外でした。すみません。仕様ではなくバグです。

>>626,628
うまく動作してませんね。たぶん623氏に近いところで問題が起きています。次バージョンではなんとか修正を試みます。

>>626
migemoそのものは結構キツいのですが、その気持ちはよくわかるのでもうちょっと何とか出来ないか考えます。

>>639
色々不具合も出ているので、とりあえず現バージョンのは無視して、もしよければ次回以降のバージョンを使って頂ければ幸いです。


at_pictureのタグ付けを分担することが出来ると楽になるはず

説明を色々書くより動作を見た方がわかりやすいと思うので以下参照。

※元画像はここ
この画像に対してat_picture上でタグ付けをしようとすることを想定します。付けたいタグは、「マリ」「エヴァ」「iPod風」「アニメ」「お気に入り」とします。自分が使うタグについては、あらかじめ.tagsファイルに次のように記述しておくとします(起動後に追加するやり方は後述)。

mari : マリ
ipod : iPod
eva : エヴァ
anime : アニメ
kokaku : 攻殻機動隊
kabegami : 壁紙
okini : お気に入り

最初のローマ字は読み仮名として内部的に利用されるだけなので、全部丁寧に書く必要は無いけど、重複している場合は何のエラーも出さずに解釈するので注意が必要です。さらに、「マリ」は「エヴァ」に含まれ、「エヴァ」は「アニメ」に含まれる等のタグ同士の内包関係がある場合、.tagsファイルに次のように記述しておきます。

マリ < エヴァ
エヴァ < アニメ
タチコマ < 攻殻機動隊
攻殻機動隊 < アニメ

picdb.exeを起動すると画面右下あたりにこんな感じのボックスが出るはず。

ここでおもむろに「i」を押すと、上記の定義上、iで始まるタグ名はこれしかないので自動的に「iPod風」が選択されます。

もしここで「k」を押した場合、複数ありうるので次のように表示されます。

この候補順は選択された回数が多いほど下に表示されるようになっており、複数表示されているこの状態で「Enter」を押すと自動的に一番下の候補が選択されます。
「m」を押すと、同様に定義上、「マリ」しか該当しないので「マリ」が選択され、さらに「マリ」に関しては内包関係が定義されているので、マリを内包する「エヴァ」、エヴァを内包する「アニメ」がタグとして自動的に選択されます。これにより、今回であればキーストローク2回で4つのタグを選択できたことになります。

こんな感じ(ちなみに間違えた場合はテキストボックスが空欄状態で「BackSpace」を押すと、最後に選択したタグとその内包関係にあるタグが消えます)。この状態で「Enter」を押すと、at_picture側へタグ情報を書き戻します。

ちなみにこのとき、内部的にはキーボードショートカットをメッセージ送信してクリップボード経由で送りつけているので、パフォーマンスの悪いPCやなにか重い処理をしているとメッセージが届かず失敗することがありえます。もちろん、クリップボードになにか大切なデータがある場合も消えてしまうので要注意。さらに、このタグの書き戻しのタイミングでPicDBのネットワークDBへ「画像のハッシュ」と「付けたタグ」の情報が自動送信されます。
一方、例えば「お気に入り」というタグは個人的なものなので共有する意味がない(or共有したくない)場合は、次のように.tagsへ記述しておくことでネットワークDBへは自動送信されません。

お気に入り -

登録すると、自動的に次の画像に遷移し、その画像のハッシュ情報を取得してタグ情報があるかをネットワーク上へ問い合わせます。

※元画像はここ
ここでは、さっきの画像へタグを付けている間に、この画像へ誰か別の人がタグ付けをしてくれていたと想定します。つまり、ネットワーク上のpicdbに当該画像のハッシュ情報とそれに付与されたタグ情報(ここでは「iPod風」と「タチコマ」)がある場合、picdbは最初からその二つのタグを選択状態にして表示します。ただ、「タチコマ」というタグの読み方は自分の環境では定義されていないため、次のように読み方の定義を要求されます。

「Escape」か「キャンセル」か空白のまま「OK」でそのタグの登録処理は飛ばされます。このとき、こちらでは既にタチコマは読み方の定義はされていなかったものの、「攻殻機動隊」や「アニメ」に内包されている、という定義はあるため、オンライン上のDBのタグ情報にそれらを付与してタグの選択状態を構成します。

この場合、「Enter」を押すだけで「iPod風」「タチコマ」「攻殻機動隊」「アニメ」が登録されることになります。

以上が基本的な処理の流れになります。
以下はその他のポイントについて。

今at_pictureで表示されている情報をpicdbに把握させる場合は、F5を押すことでat_pictureと同期し、当該画像のハッシュ値にひもづくタグ情報を取得します。

一括で自動処理したい場合、空欄状態で「F9」を押すことで、数秒間隔で自動的に画像を遷移し、ネットワーク上のタグ情報をロードする自動モードに入ります(もう一度「F9」を押すことで止まります)。ある程度このツールのユーザが増えてきて、そこそこの確率でタグ情報が取得できて、しかも自分の手持ちの画像枚数が数百枚あったりするとき、寝る前にこれを押しておくと、朝には一定枚数が自動的にタグ付けされている、ということが可能になります。そういう風になると便利だよなぁ、と思って作ったものなので、基本的に誰かが付けたタグ情報は自動的に共有されるような仕組みになっています。少なくとも現時点では鯖側では誰がなんの画像になんのタグを付けたかはログ採ってない(といっても本当にそうなっているかは証明できないからアレだけど)です。

その場でタグ定義を追加したい場合、テキストボックス内に

!yomikata : 読み方

という形式(:の前後に半角スペースを1つ)で入力して「Enter」で登録されます(.tagsファイルにも自動的に追加されます)。タグの内包関係は.tagsファイルに書く必要があります。

課題

  1. at_pictureとのデータのやりとりはクリップボードを介してキーイベントをたたき込んでショートカットでやっているため、画面がチラつくし、パフォーマンスの悪いPCだと正常に動作しない可能性が高い。要するにパフォーマンスが悪い。at_picture側でプロセス間通信あたりを実装してもらえると楽になるけど(DLLを介してやろうと思えば自作はたぶん可能)、やっぱりDLLの仕様がよく把握できなかったので現状ではこんな感じ。
  2. 意図しないタグ付けミスや意図的な嘘タグ登録などへの対策は一切採っていない(イタズラされるほどユーザ増えないだろうと想定)上、無料のレン鯖なのでおおよそ2〜3万枚のタグ情報で容量を使い切ると思う。もしそれなりに有効活用されるようならその時にどうするか考えます。
  3. いちいち読み仮名登録めんどくさいしmigemo実装した方が楽、と思って実装はしたけど無茶苦茶重くてちゃんとキャッシュ機構を作らないと使い物にならないことが分かってあとから意図的に外したので、現状ではmigemo対応はしない予定。

インストール方法

  1. ここから落とす
    1. 3月12,13日あたりで次バージョンを出す予定なので現バージョンの使用はお薦めしません
  2. .tagsをメモ帳かエディタで開いて好きに編集する(文字コードSJIS限定)
  3. picdb.exeを起動する
  4. at_picture.exeを起動する

アンインストール方法

  1. picdb.exeと.tagsと.tags.cache(自動生成されるキャッシュ)を削除する
  2. レジストリは使っていません

at_pictureのタグ付けを分担できるようオンラインで共有するためのツールを作った

at_pictureのタグ付けを分担することが出来ると楽になるはず

説明を色々書くより動作を見た方がわかりやすいと思うので以下参照。

※元画像はここ
この画像に対してat_picture上でタグ付けをしようとすることを想定します。付けたいタグは、「マリ」「エヴァ」「iPod風」「アニメ」「お気に入り」とします。自分が使うタグについては、あらかじめ.tagsファイルに次のように記述しておくとします(起動後に追加するやり方は後述)。

mari : マリ
ipod : iPod
eva : エヴァ
anime : アニメ
kokaku : 攻殻機動隊
kabegami : 壁紙
okini : お気に入り

最初のローマ字は読み仮名として内部的に利用されるだけなので、全部丁寧に書く必要は無いけど、重複している場合は何のエラーも出さずに解釈するので注意が必要です。さらに、「マリ」は「エヴァ」に含まれ、「エヴァ」は「アニメ」に含まれる等のタグ同士の内包関係がある場合、.tagsファイルに次のように記述しておきます。

マリ < エヴァ
エヴァ < アニメ
タチコマ < 攻殻機動隊
攻殻機動隊 < アニメ

picdb.exeを起動すると画面右下あたりにこんな感じのボックスが出るはず。

ここでおもむろに「i」を押すと、上記の定義上、iで始まるタグ名はこれしかないので自動的に「iPod風」が選択されます。

もしここで「k」を押した場合、複数ありうるので次のように表示されます。

この候補順は選択された回数が多いほど下に表示されるようになっており、複数表示されているこの状態で「Enter」を押すと自動的に一番下の候補が選択されます。
「m」を押すと、同様に定義上、「マリ」しか該当しないので「マリ」が選択され、さらに「マリ」に関しては内包関係が定義されているので、マリを内包する「エヴァ」、エヴァを内包する「アニメ」がタグとして自動的に選択されます。これにより、今回であればキーストローク2回で4つのタグを選択できたことになります。

こんな感じ(ちなみに間違えた場合はテキストボックスが空欄状態で「BackSpace」を押すと、最後に選択したタグとその内包関係にあるタグが消えます)。この状態で「Enter」を押すと、at_picture側へタグ情報を書き戻します。

ちなみにこのとき、内部的にはキーボードショートカットをメッセージ送信してクリップボード経由で送りつけているので、パフォーマンスの悪いPCやなにか重い処理をしているとメッセージが届かず失敗することがありえます。もちろん、クリップボードになにか大切なデータがある場合も消えてしまうので要注意。さらに、このタグの書き戻しのタイミングでPicDBのネットワークDBへ「画像のハッシュ」と「付けたタグ」の情報が自動送信されます。
一方、例えば「お気に入り」というタグは個人的なものなので共有する意味がない(or共有したくない)場合は、次のように.tagsへ記述しておくことでネットワークDBへは自動送信されません。

お気に入り -

登録すると、自動的に次の画像に遷移し、その画像のハッシュ情報を取得してタグ情報があるかをネットワーク上へ問い合わせます。

※元画像はここ
ここでは、さっきの画像へタグを付けている間に、この画像へ誰か別の人がタグ付けをしてくれていたと想定します。つまり、ネットワーク上のpicdbに当該画像のハッシュ情報とそれに付与されたタグ情報(ここでは「iPod風」と「タチコマ」)がある場合、picdbは最初からその二つのタグを選択状態にして表示します。ただ、「タチコマ」というタグの読み方は自分の環境では定義されていないため、次のように読み方の定義を要求されます。

「Escape」か「キャンセル」か空白のまま「OK」でそのタグの登録処理は飛ばされます。このとき、こちらでは既にタチコマは読み方の定義はされていなかったものの、「攻殻機動隊」や「アニメ」に内包されている、という定義はあるため、オンライン上のDBのタグ情報にそれらを付与してタグの選択状態を構成します。

この場合、「Enter」を押すだけで「iPod風」「タチコマ」「攻殻機動隊」「アニメ」が登録されることになります。

以上が基本的な処理の流れになります。
以下はその他のポイントについて。

今at_pictureで表示されている情報をpicdbに把握させる場合は、F5を押すことでat_pictureと同期し、当該画像のハッシュ値にひもづくタグ情報を取得します。

一括で自動処理したい場合、空欄状態で「F9」を押すことで、数秒間隔で自動的に画像を遷移し、ネットワーク上のタグ情報をロードする自動モードに入ります(もう一度「F9」を押すことで止まります)。ある程度このツールのユーザが増えてきて、そこそこの確率でタグ情報が取得できて、しかも自分の手持ちの画像枚数が数百枚あったりするとき、寝る前にこれを押しておくと、朝には一定枚数が自動的にタグ付けされている、ということが可能になります。そういう風になると便利だよなぁ、と思って作ったものなので、基本的に誰かが付けたタグ情報は自動的に共有されるような仕組みになっています。少なくとも現時点では鯖側では誰がなんの画像になんのタグを付けたかはログ採ってない(といっても本当にそうなっているかは証明できないからアレだけど)です。

その場でタグ定義を追加したい場合、テキストボックス内に

!yomikata : 読み方

という形式(:の前後に半角スペースを1つ)で入力して「Enter」で登録されます(.tagsファイルにも自動的に追加されます)。タグの内包関係は.tagsファイルに書く必要があります。

課題

  1. at_pictureとのデータのやりとりはクリップボードを介してキーイベントをたたき込んでショートカットでやっているため、画面がチラつくし、パフォーマンスの悪いPCだと正常に動作しない可能性が高い。要するにパフォーマンスが悪い。at_picture側でプロセス間通信あたりを実装してもらえると楽になるけど(DLLを介してやろうと思えば自作はたぶん可能)、やっぱりDLLの仕様がよく把握できなかったので現状ではこんな感じ。
  2. 意図しないタグ付けミスや意図的な嘘タグ登録などへの対策は一切採っていない(イタズラされるほどユーザ増えないだろうと想定)上、無料のレン鯖なのでおおよそ2〜3万枚のタグ情報で容量を使い切ると思う。もしそれなりに有効活用されるようならその時にどうするか考えます。
  3. いちいち読み仮名登録めんどくさいしmigemo実装した方が楽、と思って実装はしたけど無茶苦茶重くてちゃんとキャッシュ機構を作らないと使い物にならないことが分かってあとから意図的に外したので、現状ではmigemo対応はしない予定。

インストール方法

  1. ここから落とす
  2. .tagsをメモ帳かエディタで開いて好きに編集する(文字コードSJIS限定)
  3. picdb.exeを起動する
  4. at_picture.exeを起動する

アンインストール方法

  1. picdb.exeと.tagsと.tags.cache(自動生成されるキャッシュ)を削除する
  2. レジストリは使っていません

【TagFS 0.1.0】Windows上でタグファイルシステムを実現してみる

最初に

α版です。何が起きても泣かない。

なにこれ

一言で言えば、Windowsファイルシステム上でタグ付けを擬似的に行います。

具体的には、例えば以下の画像があるとします。

photo by Simon Pais-Thomas

これをローカルディスクに保存する際、どこに保存するべきか、といえば、"三次元"とか"雑誌"とか"flickr"といったフォルダが思い当たります。本当はそのいずれのフォルダにも保存したいですが、Windowsファイルシステム上でそんなことをやっていたらディスクがいくらあっても足りません。ということで、とりあえずどこかにこの画像を保存しておき、TagFSに対してこの画像が"三次元"、"雑誌"、"flickr"にタグ付けしてやります。

TagFSはディスクとしてOSからは扱われるので、TagFSがマウントしているドライブ(たとえばTドライブ)を開くと、"三次元"、"雑誌"、"flickr"というフォルダが出てきます。

とりあえず"三次元"を開くと、さっきのファイルがあります。"雑誌"を開いても同じファイルがありますし、"flickr"でも同様です。仮想的に見せているだけで、実態としてのファイルは1つしかありません。なので、ディスク容量はファイル1個分だけです。

インストール方法

  1. Dokanをインストールする
    • ここからDokanライブラリを落としてインストールしてください。0.4.2.1238 x86を落とせばいいかと。
  2. TagFSを落としてくる

アンインストール方法

  1. TagFSを消す。TagFSは特にレジストリ等を利用していないため、さくっとフォルダ毎削除してください。
  2. Dokanを「プログラムの追加と削除」からアンインストールする

タグ登録方法

AtPictureのタグデータのインポート
  1. AtPictureからCSVデータで画像データをエクスポートします。エクスポートしたファイル名をlist.csvという名前でTagFSと同じフォルダ内に保存します。
    • AtPictureからCSV抜き出しの方法については、手元の0.1.20.4だと、「編集」→「すべての登録画像をリストアップ」をしたあとで「ファイル」→「画像情報CSVを保存」で出来る気がします。CSVのフォーマットとして、ファイルパス、ハッシュ値、空データ列、タグ1、タグ2といった状態になっていることを前提にしています。
  2. import.exeを起動します。あとは勝手にやります。
    • 現状では書庫内データは独立したファイルとして扱えません。
個別登録
  1. 同梱されているinsert.exeでタグ付けが出来ます。
    • 構文は次の通り:insert.exe FILEPATH TAGNAME

起動方法

  1. tagfs.exeを起動します。引数はドライブレターです。
    • Tドライブで起動したいなら:tagfs.exe t
    • Qドライブで起動したいなら:tagfs.exe q
    • みたいな感じ。
  2. コンソールを落とさないでください(最小化は可)。落とすとTagFSも落ちます。

終了方法

  1. TagFSを起動させたコンソール上でCtrl+Cを押してください。
  2. 使用中のファイルがあるとなかなか終了してくれません。
  3. 下手すると1分とかかかるケースがありますが、下手に無理矢理落とすとタグDBが壊れる危険があります。我慢強く待つことをお勧めします。

注意

  • ファイル名の先頭に数字が勝手にくっついてますが、これは取り外せません。理由は別のフォルダに存在する同名ファイルがあった場合に区別できなくなるからです。
  • ファイルへの書き込みはできません。実装が間に合ってないだけなのでやれば実装できます。
  • パフォーマンスに問題があるため、巨大なファイルを登録するのはお薦めしません。本当は動画ファイル等の管理にも使えるようなー、と思ってやってみましたが、読み込みにやたら時間がかかるので実用性は低いです(このへんはRubyのファイルアクセス速度に起因している気がしています)。
  • ドライブ直下に対する全ファイル検索はやめた方が無難です。見かけ上莫大なファイル数を持っているため、ファイル数にもよりますが、たぶんいつまでたっても検索が終わりません。
  • 例えば「二次元」というタグを持つファイルが10万個あった場合、TagFS上で「二次元」フォルダを開くと10万個のファイルがリストアップされることになります。TagFSとしては問題ないのですが、ファイラが耐えられません。エクスプローラはもちろん、およそ大抵のファイラがハングアップします(通常、一つのフォルダに数万ファイルが含まれていることはありえない)。くわえてファイラの挙動として、リストアップされた10万個のファイルに対してそのファイルサイズ、属性等を一斉に取得しようとします。さらにエクスプローラの挙動として、ツリー構造把握のために全タグに対してファイル数がいくつあるのかを検査しようとするため、数万個のファイルが登録されているタグがあると死にます。

ライセンス

下記のライブラリのおかげでTagFSはできています。多謝多謝。

  1. TagFSはDokanライブラリを利用しています。Dokanライブラリはここで公開されています。
  2. TagFSはQDBMライブラリを利用しています。QDBMはここで公開されています。

バージョンアップ

cprof 0.4.2

what's this?

画像整理をするにあたり、重複画像の排除、タグ登録作業の自動化(AtPicture連携等)を目的としたツール。CUI

AtPictureはこちら。
http://artistic-imitation.hp.infoseek.co.jp/

変更点

  1. 色成分の度合いで判定するように変更(類似度合いを%指定)
  2. 類似判定アルゴリズムをv0.3.1から更に変更。
    • 全体を特定色(白とか肌色とか)が占める場合に必然的に誤判定していたので、支配色がある場合は支配色を除いて類似判定を行うように変更。
  3. ある程度類似している場合は配色の分布度合いの類似度でもチェックするように変更。

予定している機能

  1. 類似画像検索(0.3.1で実装)
  2. 画像群からパターン抽出(0.5くらいで実装予定)
  3. AtPicture連携での自動タグ付け(これが出来て1.0)

類似画像判定について

ほぼ同じ色なもの

画質が違う、縦横が違う、変なトリミングがされていて画像サイズが違う、という事態にある程度まで対応します。
具体例として、以下を同一とみなします。
画像出典:http://www.flickr.com/photos/bukutgirl/206733063/



色調が違うが同じもの

色調の違うものもある程度までは認識します(v0.4.2で実装)
具体例として、以下を類似しているとみなします。
画像出典?:http://anitra.jp/


グレースケール

グレースケールの画像判定は諦めます。

使い方

http://matrix.s18.xrea.com/post/cprof_0.4.2.zip
上記からzipを落としてきて解凍。cprof.exe と report.exe が出てくるはず。
cprof.exe はCUIなのでダブルクリックしても使えません。
コマンドプロンプトから実行してください。

cprof [DIRECTORY_PATH]

で処理をします(-rオプションでサブフォルダも再帰検索します)。
処理が終わるとreport.txtを吐き出します。
類似判定がなされたものをリスト化して出しているだけです。
おまけでreport.exeがついてますが、report.txtがある状態でreport.exeを起動するとreport.txtを元にしてhtmlファイルを吐きます。ビューワ作るのがめんどかったのでブラウザに任せました。どんな画像を同一判定したかを確認できます。

類似度合いを指定する

cprof t90 [DIRECTORY_PATH]

で類似度合いを指定できます。t90は90%以上似ている、という条件を意味します。デフォルトではt80にしてあります。

色々調整してみる

cprof -h
でオプション一覧が出ます。

バージョンアップ(v0.3.1)。

cprof 0.3.1

what's this?

画像整理をするにあたり、重複画像の排除、タグ登録作業の自動化(AtPicture連携等)を目的としたツール。CUI

AtPictureはこちら。
http://artistic-imitation.hp.infoseek.co.jp/

変更点

  1. 色成分の度合いで判定するように変更(類似度合いを%指定)
  2. 類似判定アルゴリズムを変更。0.1.0に比べると若干マシになったハズ。

予定している機能

  1. 類似画像検索(0.3.1で実装)
  2. 画像群からパターン抽出(0.5くらいで実装予定)
  3. AtPicture連携での自動タグ付け(これが出来て1.0)

類似画像判定について

画質が違う、縦横が違う、変なトリミングがされていて画像サイズが違う、という事態にある程度まで対応します。
具体例として、以下を同一とみなします。
画像出典:http://www.flickr.com/photos/bukutgirl/206733063/


一方で、色調の違うものは同一視しません。
「形状」ではなく「色成分」で判定しているため、色成分が大きく変動するようなケースには対応できません。ということで、現状ではグレースケールの画像判定は一際せずに諦めます。

使い方

http://matrix.s18.xrea.com/post/cprof_0.3.1.zip
上記からzipを落としてきて解凍。cprof.exe と report.exe が出てくるはず。
cprof.exe はCUIなのでダブルクリックしても使えません。
コマンドプロンプトから実行してください。

cprof [DIRECTORY_PATH]

で処理をします(-rオプションでサブフォルダも再帰検索します)。
処理が終わるとreport.txtを吐き出します。
類似判定がなされたものをリスト化して出しているだけです。
おまけでreport.exeがついてますが、report.txtがある状態でreport.exeを起動するとreport.txtを元にしてhtmlファイルを吐きます。ビューワ作るのがめんどかったのでブラウザに任せました。どんな画像を同一判定したかを確認できます。

類似度合いを指定する

cprof t90 [DIRECTORY_PATH]

で類似度合いを指定できます。t90は90%以上似ている、という条件を意味します。デフォルトではt80にしてあります。

色々調整してみる

cprof -h
でオプション一覧が出ます。

とりあえずアルファ版。

なにこれ?

AtPictureで画像整理をするにあたり、もう少し手作業を減らすべく、タグ登録作業を自動化できたらいいよね、ってことで企画。
他ツールとの連携をするためだとCUIがベストですが、類似画像検索でCUIで、しかも単独で機能するものが調べた限りいまいち見あたらなかったのでその部分から自作。道のりは長い。

AtPictureはこちら。
http://artistic-imitation.hp.infoseek.co.jp/

機能が足りていないけど一応アルファ版ってことで。

予定している機能
  1. 類似画像検索(α版で一応可能)
  2. 画像群からパターン抽出(ベータ版で一応可能:未リリース)
  3. AtPicture連携での自動タグ付け(未着手)

類似画像判定機能について

デフォルトのモードでは以下が similar として認識されます。それぞれファイルサイズが異なり、内容も微妙に異なりますが、カテゴリとしては同一とみなします。
出典:http://www.asahi-net.or.jp/~JW7S-WTNB/gedou/



しかしながら、以下は similar として認識しません。

オプションをいじくると similar として認識するようになります。

使い方

http://matrix.s18.xrea.com/post/cprof.zip
上記からcprof.zipをDLして解凍。
CUIなんでダブルクリックしても黒い画面が一瞬出て終わるだけです。

cprof.exe [DIRECOTRY_PATH]

で、指定したディレクトリのファイルから類似してそうなヤツを探しに行きます。
処理が終了するとreport.txtを吐き出します。
ただ単に「これ、似てるファイルっぽい」ってリストを吐くだけです。
加工も何もしてません。

動作環境

Windows XP HOMEでのみチェック。

処理速度

平均すると、およそ1ファイルあたり200msecくらい見込んでおくといいかも。

処理精度

ぶっちゃけ、かなり低いので期待しないように。
全然無関係なものがデフォルトでは出過ぎる場合は、

cprof.exe -S [DIRECOTRY_PATH]

ってやると少し改善されるはずです。
ただし、上記のオプションを付けると、上の「まさに外道」の例でいうと

これが similar から外れてしまいます。

逆に、もっとゆるくしてでも類似してそうなヤツを探したい、という場合は、

cprof.exe -t4 [DIRECOTRY_PATH]

とかやるとだいぶゆるくなるはず。
これだと上記で認識しない、といっていた

これも similar として認識するようになります。

Q&A

  1. 日本語が使えない?

使えるはず。手元の環境では使えました。
cprof C:\tmp\ああああ
は動いたので。

  1. サブフォルダの再帰調査がしたい

cprof -r [DIRECTORY_PATH]
でサブフォルダを再帰的に探します。

最後に

まず画像の特徴抽出が一定程度の精度で出来るようにした上で、グループでの特徴抽出をして、それから自動タグ付けに挑みたいと思いますんで、適当にコメント頂ければ幸いです。