画像類似を用いた Electric Guitar Shop における商品検索の提案

06H074 服部祥太郎

目次

1  はじめに  1

1.1 卒業研究の目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2  語句と仕様ソフト  2

2.1 Electric Guitar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 デジマート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.3 imgSeek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

3  開発したシステムの動作と考察  3

3.1 開発環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.2 EGISS の内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.3 EGISS の動作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.4 考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4  今後の課題とまとめ  12

4.1 今後の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.2 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

付録 A Electric Guitar ・木材用語集 16 A.1 Electric Guitar とは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 A.2 Electric Guitar の構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 A.3 Electric Guitar メーカー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 A.4 代表的な Electric Guitar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 A.5 Electric Guitar の材料となる木材 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

B  ソースコード  24

B.1 dayget.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 B.2 search.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 B.3 weekget.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 B.4 crontab.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

概要

現在インターネットショッピングは右肩上がりに売上を伸ばし、商品の数や種類も多く存在する。 Electric Guitar も例外ではなく、多くの Electric Guitar 専門の Web ショッピングサイトが存在する。点在する Web Electric Guitar ショップをまとめられサイバーモールで、デジマートというものが存在する。デジマートは 30,000 件以上の Electric Guitar が登録されている。絞り込み検索や条件検索をせず、自分の欲しい Electric Guitar に似たものを検索するために本研究を提案する。画像類似検索を用いた商品検索が有効であるか確認するため、類似 Electric Guitar 検索システムを開発し、その動作結果が元画像に類似しているかどうかを検討した。

本研究で製作したシステムを、 EGISS と呼ぶ。画像類似検索には、 imgSeek という GPL のソフトウェアを利用している。

動作結果から、画像類似を用いた検索で効率の良い検索ができた。しかし背景の割合が高い画像の場合では、本システムは有効でないことが考察からわかる。このことからシステム内で動作している imgSeek では、中心にあるものより、全体からみた比率を優先して画像類似検索を行っていることがわかった。そこから、現在の EGISS をより良いものにするためには、 imgSeek を改良することが必要である。しかし画像類似検索自体は、複数の条件検索を入力することよりも効率的であることがわかった。よって画像類似検索を用いた Electric Guitar の商品検索は、ユーザの選択の幅が広がると結論づけた。

1 はじめに

現在ネットショッピングは表 1 のように右肩上がりに市場規模を拡大し [1]、商品の数や種類も多く存在する。 Electric Guitar も例外ではなく、多くの Electric Guitar 専門の Web ショッピングサイトが存在する。点在する Web Electric Guitar ショップをまとめられサイバーモール^{*1}で、デジマート [2]^{*2}や J-Guitar [3]^{*3}といったものが存在する。

年 2006 2007 2008 市場規模 (億円) 43,910 53,440 60,890^{表 1 日本における BtoC E コマース市場規模 (経済産業省調べ)}

本研究では、 Electric Guitar 検索においてユーザに細かい条件検索を行わせることなく、画像データからユーザの欲しいギターに似ている Electric Guitar を検索させる方法を提案する。また実際に私の所有する Acer Aspire One で動作する、類似 Electric Guitar 検索システムを開発し、その動作結果から本当に類似しているかどうかを検討する。

1.1 卒業研究の目的

欲しい Electric Guitar を見つけそれに似たものを検索しようとする際、絞り込み検索や条件検索を行うのが一般的である。

絞り込み検索や条件検索では、入力や選択といったことが必要である。本研究はそういった手間が無い、画像類似を用いた Electric Guitar 検索を提案する。入力や選択を無くし、ユーザの手間を省くことが目的である。

*1 サイバーモールとは、複数のショッピングサイトをまとめたもの。

*2 デジマートとは、株式会社リットーミュージックが運営する楽器専門のサイバーモール。

*3 J-Guitar とは、株式会社ディーシーティープロジェクト運営するコミュニケーションサイト。楽器サーチはサービスの一部。

2 語句と仕様ソフト

2.1 Electric Guitar

Electric Guitar とは、 Pickup という装置で弦の振動を電気信号に変換し、 Electric Guitar Amplifier という装

置で電気信号を音に変換し出力する Guitar である。 Electric Guitar は 1932 年に Rickenbacker [4]^{*4}が Frying

Pan^{*5}という商品化し、それ以降多くのメーカーが製作し今日の Electric Guitar がある。

著名な Electric Guitar メーカーとして Fender [5]^{*6}や Gibson [6]^{*7}などがある。上記 2 社の著名なモデルとし

て、 Telecaster^{*8}や Stratocaster^{*9}や Les Paul^{*10}や ES-175^{*11}などが存在する。

Electric Guitar の詳しい説明と Electric Guitar の構造については、付録 A を参照。

2.2 デジマート

デジマートとは、株式会社リットーミュージックが運営する楽器専門のサイバーモール。現在 290 店舗^{*12}登録

されている。本システムでは “ギター/ベース/弦楽器” の “エレクトリックギター” カテゴリを使用する。このカ

テゴリには Electric Guitar が 32,919 件^{*13}登録されており、楽器専門サイバーモールとしては最大手である。

2.3 imgSeek

imgSeek [7] とは、類似画像検索のできる Image Viewer である。オープンソースソフトウェア^{*14}で C++

と Python で書かれている。最新版は Version0.8.6 で Linux^{*15}のみで動作する。 Version0.8.5 は Microsoft

Windows^{*16}と Linux で動作し、 Version0.8.4 は Mac OS X^{*17}で動作する。

*4 付録 A.3.1 を参照。

*5 付録 A.4.1 を参照。

*6 付録 A.3.2 を参照。

*7 付録 A.3.3 を参照。

*8 付録 A.4.2 を参照。

*9 付録 A.4.3 を参照。

*10 付録 A.4.4 を参照。

*11 付録 A.4.5 を参照。

*12 2009/11/26 現在。

*13 2009/11/26 日現在。

*14 オープンソースソフトウェアとは、ソースコードが無償で公開されていて、誰でも改良と再配布が可能なソフトウェア。

*15 Linux とは、 Linus Benedict Torvalds 氏が 1991 年に公開した Linux カーネルを元に開発した Linux ディストリビューション。

*16 Microsoft Windows とは、 Microsoft Corporation から発売されているオペレーティングシステム。

*17 Apple Inc. から発売されているオペレーティングシステム。

3 開発したシステムの動作と考察

本項では、開発したシステムについて解説をする。今回開発したシステム全体の名前を EGISS とする。 EGISS とは Electric Guitar Image Search System の略

である。

3.1 開発環境

以下が開発環境である。

• ハードウェア – CPU ‥‥ Intel◯^{R} Atom processor N270 1.6GHz – RAM ‥‥ 1GB

– HDD ‥‥ 120GB

– Chipset ‥‥ Mobile Intel◯^{R} 945GSE Express

– GPU ‥‥ Intel◯^{R} Graphics Media Accelerator 950 • OS ‥‥ ubuntu 9.04 [8]

• 画像類似検索ソフト‥‥ imgSeek 0.8.6

• ウェブサーバーソフトウェア‥‥ apache 2.0.63 [9]

• ウェブブラウザ‥‥ Firefox 3.0.15 [10]

• 開発言語‥‥シェルスクリプト (bash)

3.2 EGISS の内容

EGISS は 4 つのシステムから成り立っている。 4 つのシステムを以下に示す。

3.2.1 自動画像収集システム

デジマート上から Electric Guitar の画像を定期的に取得するシステム。シェルスクリプトを利用して、 09:00∼20:00 の 1 時間毎に新しい Electric Guitar のサムネイル画像 100 ファイルを取得する。

デジマートでは 1 日で 300 本ほどの Electric Guitar が追加される。追加のピーク時間の 11:00∼15:00 でも 1 時間で 2,30 本ほど追加である。よって 1 時間毎に 100 ファイルの取得で十分だと推測した。

デジマートからダウンロードした画像には、拡張子.jpg 以下に文字列が存在する。 imgSeek では拡張子が画像ファイル以外のものは判定しないため、リネームの必要がある。よってダウンロード後にリネームする。

3.2.2 類似画像検索出力システム

ユーザが指定したデジマート上に存在する Electric Guitar の類似物を検索するシステム。 imgSeek のコマンドモードを利用し、類似度の高い上位 30 位を探す。出力されたものをテキストデータとして保存し、そのテキストデータを編集し HTML^{*18}として出力させる。本研究では、 ubuntu 9.04 のデフォルトのウェブブラウザである Firefox^{*19}で表示させる。 3.2.3 画像再取得システム

*18 HTML とは、 Web ページを記述するための Markup 言語。 *19 Mozilla Foundation で開発されたウェブブラウザである。

1 週間に 1 度、現在まで取得した Electric Guitar の画像データを削除し、全ての画像データを再取得するシステムを開発した。これはデジマート上から削除された Electric Guitar の情報を表示させないためである。このシステムは毎週土曜日 03:00 に動作する。何故この日時なのかというと、休日の利用者ためで、なおかつサーバ負担の少ない時間帯だからである。

こちらも自動画像収集システムと同じく、ダウンロード後にリネームする。

3.3 EGISS の動作

EGISS の動作を以下に示す。

3.3.1 入力部分ユーザは Terminal 内で入力を行う。入力前の画面を図 1 に示す。

図 1 入力前の画面

入力する内容は、デジマート内のユーザが欲しい Electric Guitar のページの URL である。入力後の画面を図 2 に示す。入力して Enter or Return を押すと、 3.2.2 のシステムが動作しユーザの欲しい Electric Guitar に類似している Electric Guitar を検索する。

図 2 入力後の画面

3.3.2 出力部分

3.2.2 から出力された HTML を Firefox で出力する。類似度上位 30 件までを表示する。 Firefox で出力された画面を図 4 に示す。

図 3 HTML 出力画面

Firefox で出力された Electric Guitar の画像には、その画像に対応するデジマート上の Electric Guitar の URL にリンクしている。クリックすることでその Electric Guitar のページにジャンプすることができる。

例として図 3 の “類似度 61.934670%” の Electric Guitar のリンクにアクセスする。

図 4 リンクされたデジマート URL にアクセス

画像に対応するデジマート上の Electric Guitar の URL にリンクしているしていることが分かる。

3.4 考察

3.4.1 画像類似検索の精度画像類似度の精度を検証した。先ずは Electric Guitar のボディ正面アップを映している画像を検証する。

図 5 ボディ正面アップの Electric Guitar 画像

図 5 から元画像に近い画像が出力されていることがわかり、 Electric Guitar のボディ正面アップの画像では、画像類似検索が有効なことがわかる。

次に、 Electric Guitar の全体を映している画像を検証する。

図 6 全体を映しだしている Electric Guitar 画像

図 6 を見ると、似ている Electric Guitar も存在するが、上位にまったく似ていない Electric Guitar もあることがわかる。

このことから、 imgSeek では背景の割合が高い画像の場合、本来似ているギターよりも背景が似ているものが類似度上位にきていることがわかる。

3.4.2 木材の判定画像類似検索で、木材は判定出来るのか検証した。

図 7 木材の判定

図 7 を見ると、元画像の指板^{*20}が Rosewood^{*21}なのに対し、 2 番目に類似度の高い “類似度 77.177465%” と 3 番目の “類似度 76.769128%” の Electric Guitar の指板は張り Maple^{*22}である。やはり画像類似なので全体の色合いが大きな基準となっていることがわかり、木目の特徴など細かい部分は判定できないことがわかる。

*20 付録 A.2 を参照。 *21 付録 A.5.6 を参照。 *22 張り Maple は付録 A.2 を、 Maple は付録 A.5.1 を参照。

4 今後の課題とまとめ

本項では、今後の課題とまとめについて解説する。

4.1 今後の課題

EGISS の今後の課題は、ユーザインタフェースの充実と、デジマート以外の Electric Guitar サイバーモールへの対応と、 imgSeek を Electric Guitar 向けに改良することである。

4.1.1 ユーザインタフェースの充実

入力もウェブブラウザ上で行えるよう改良する。現在の EGISS は、入力が Terminal 上なので、わざわざ Terminal を起動しなくてはならない。これを出力と同じウェブブラウザ上で行えるよう改良し、ユーザ側で Terminal を起動する手間を省く改良が必要である。

インターネット上やユーザのローカル存在の画像データを選択できるようにする。現在の EGISS はデジマート上の Electric Guitar の画像ファイルしか選択できない。これを改善すべく、デジマート上以外の画像データも選択できるような改良が必要である。

出力する Electric Guitar のギターの件数を、ユーザ側で変更できるよう改良する。現在の EGISS は、類似度上位 30 件を表示している。ユーザ側で変更ができない。これを改善すべく、ユーザの好きな本数で表示させるような改良が必要である。

出力する Electric Guitar の価格を、ユーザ側で指定できるよう改良する。現在の EGISS は、価格に関係なく類似度上位 30 件を表示している。これを改善すべく、ユーザの指定した価格のみを表示させるような改良が必要である。

4.1.2 他のサイバーモールに対応

現在の EGISS は、デジマートの Electric Guitar カテゴリにのみ対応している。デジマート以外に Electric Guitar 専門のサイバーモールで J-Guitar というものが存在する。 Electric Guitar 専門では無いが多くの Electric Guitar の商品を扱う、楽天も存在する。上記 2 つの Web サイトに対応させることで、より多くの Electric Guitar が検索できるようになる。

4.1.3 imgSeek をハッキング

現段階の EGIGG では、 Electric Guitar のボディ正面の画像のみの検索のみ有効である。構造的にはほとんど同一の Electric Guitar があった場合でも、背景の色が違いその割合が高いと、類似度は高くないと判定される。

このことを防ぐためには、 Electric Guitar 撮影のアングルや背景統一か、 imgSeek に背景を無視させ中心にある Electric Guitar のみで判定させる必要がある。しかし、デジマートは多くの Web ショップが集まるサイバーモールであり、前者の画像撮影の統一は非常に難しい。やはり後者の imgSeek の改良が現実的である。 Electric Guitar のみで判定する画像類似検索のシステムの完成が望ましい。完成したシステムがあれば Electric Guitar だけでなく、他の商品検索にも利用できるのではないかと考える。

これらの改良を行うことで、より精度の高い画像類似検索を行うことが出来ると考えた。

4.2 まとめ

画像類似検索は、絞り込み検索や条件検索を必要とせず、手間を省くことができた。しかし、画像類似検索はきまった条件下でないと画像類似検索は有効にならない。

以下の 2 つの点が実現できた場合の仮説を立てる。 1 つ目は、画像のデータベースを持っているショップ運営者側が、この画像類似検索を導入することである。こ

れが実現すれば、現在 EGISS 内で行っている画像ダウンロードの必要がなくなる。 2 つ目は、 imgSeek をハッキングし、 Electric Guitar 部分でのみ判断できるものにする。以上の 2 つが実現できた場合、画像類似検索を用いた Electric Guitar の商品検索が有効活用でき、ユーザの選

択の幅が広がると結論づけた。

謝辞

本論文執筆及び研究作業等、研究室での活動の際以外でもご指導及びご協力頂きました大垣斉講師、藤井信夫教授、水野貴弘先輩、小山翔平先輩、情報安全工学実験室のメンバーの方々、その他見守ってくださった方々に深く感謝いたします

参考文献

[1] 経済産業省 http://www.meti.go.jp/

[2] デジマート http://www.digimart.net/

[3] J-Guitar http://www.j-guitar.com/

[4] Rickenbacker International Corporation http://www.rickenbacker.com/ [5] Fender Musical Instruments Corporation http://www.fender.com/

[6] Gibson Guitar Corporation http://www2.gibson.com/

[7] imgSeek 0.8.6 http://www.imgseek.net/

[8] Ubuntu 9.04 http://www.ubuntulinux.jp/News/ubuntu904/

[9] apache 2.0.63 http://www.apache.org/dist/httpd/Announcement2.0.html [10] Firefox 3.0.15 http://mozilla.jp/firefox/3.0.15/releasenotes/

[11] Electric Guitar http://en.wikipedia.org/wiki/Electric Guitar

[12] Linux コマンド百科事典 http://www.21linux.com/

URI は 2010 年 1 月 17 日現在

付録 A Electric Guitar ・木材用語集

A.1 Electric Guitar とは

Electric Guitar とは、 Pickup という装置で弦の振動を電気信号に変換し、 Electric Guitar Amp という装置で電気信号を音に変換し出力する Guitar である。

大まかに Hollow Body Guitar と Solid Body Guitar 分けられる。違いについては後述。

A.2 Electric Guitar の構造

簡素であるが Electiric Guitar の構造の説明をする。

図 8 Electric Guitar の構造

図 8 の “1” はヘッドと呼ばれる部分である。弦を巻くペグと呼ばれるものが、弦の数だけ付いている。 “2” はネックと呼ばれる部分である。前面に指板^{*23}が貼られている。指板も合わせてネックと呼ばれることも

あれば、指板を含めない木材の部分をネックと呼ぶこともある。本研究では、指板を含めない木材の部分をネック材と呼ぶことにする。

ネックと指板が同じ種類の木材で、一つの木材からできているものが存在する。これを、ワンピースネックと呼ぶ。それに対し、メイプルのネック材にメイプル指板を張ったものを、張りメイプルネックと呼ぶ。

“3” はボディと呼ばれる部分である。ここに電子回路が積まれている。ボディの中身が空洞のもの Hollow Body Guitar、中身が詰まっているものが Solid Body Guitar と呼ばれる。ボディの木材とは違った種類の木材を前面に貼ることがある。

Hollow Body Guitar は、 Full-Acoustic Guitar と Semi-Acoustic Guitar に分けられる。 Full-Acoustic Guitar は、中身がほぼ空洞のものを言う。 Semi-Acoustic Guitar は、ネックに沿って真ん中で区切られ、左右 2 つの空洞が出来ているものを言う。

“Pickup” とは、弦の振動を検知するもの。 Single-coil と Hum-bucking の大きく 2 つに分けられる。図 8 の Electric Guitar では、 Hum-bucking の Pickup が搭載されている。

図 9 Single-coil の Pickup

図 10 Hum-bucking の Pickup

Electric Guitar の大きさの割合からだと非常に小さいため、今回の実験ではほぼ影響はないものと思われる。

*23 フィンガーボードやフレットボードとも呼ぶ。

A.3 Electric Guitar メーカー

本項では、 Electric Guitar を販売している代表的なメーカーについて説明する。

A.3.1 Rickenbacker

Rickenbacer とは 1931 年に創設された楽器メーカーである。正式名称 Rickenbacker International Corporation。 1932 年に Electric Guitar を世界で初めて発売したメーカーである。

A.3.2 Fender

Fender とは Clarence Leonidas Fender が 1945 年に創設した楽器メーカーである。正式名称 Fender Musical Instruments Corporation。

A.3.3 Gibson

Gibson とは、 Orville Henry Gibson が 1902 年に創設した楽器メーカーである。正式名称 Gibson Guitar Corporation。

A.4 代表的な Electric Guitar

本項では、代表的な Electric Guitar について説明する。

A.4.1 Frying Pan

1932 年に Rickenbacer 社から発売された Electric Guitar。細かい分類では Lap Steel Guitar と呼ばれる。 Lap Steel Guitar は、膝の上に乗せて弾くことが特徴である。 A.4.2 Telecster

Telecaster とは、 Fender から発売された Solid Body Guitar である。 1949 年に Esquire という名で発売され、 1950 年には Broadcaster という名で発売された。しかし Gretsch^{*24}の Snare Drum^{*25}に Broadkaster という名称のものが存在したため、翌年 1951 年に Telecaster という名で発売される。

図 11 Fender Telecaster

*24 Gretsch とは、 1883 年に創設した楽器メーカー。正式名称 Gretsch Company。

*25 Snare Drum とは、打楽器の一つである。

A.4.3 Stratocaster Stratocaster とは、 1954 年に Fender 社から発売された Solid Body Guitar である。

図 12 Fender Stratocaster

A.4.4 Les Paul

Les Paul とは、 1952 年に Gibson から発売された Solid Body Guitar である。 Les Paul 氏^{*26}のシグネチャモデル^{*27}である。

図 13 Gibson Les Paul

A.4.5 ES-175

ES-175 とは、 1949 年に Gibson 社から発売された Hollow Body Guitar である。更に、 Hollow Guitar でも Full-Acoustic Guitar に分類される。

*26 Les Paul(1915∼2009) 本名 Lester William Polfuss。

*27 シグネチャモデルとは、人物の名前を冠した商品。

A.5 Electric Guitar の材料となる木材

本項では、 Electric Guitar の材料として使われている木材の中で代表的なものについて解説する。

A.5.1 Maple

カエデ科の落葉広葉樹。 Maple の中にも Hard Maple や Soft Maple や Suger Maple や Black Maple 等々存在するが、 Electric Guitar では主に Hard Maple や Soft Maple が使われる。

Electric Guitar のネックやボディ前面部分に使われる。

A.5.2 Mahogany センダン科の広葉樹。 Electric Guitar のネック材やボディに使われる。

A.5.3 White Ash モクセイ科トネリコ属の広葉樹。 Electric Guitar のボディに使われる。

A.5.4 Alder カバノキ科ハンノキ属の広葉樹。 Electric Guitar のボディに使われる。

A.5.5 Basswood シナノキ科の広葉樹。 Electric Guitar のボディに使われる。

A.5.6 Rosewood

マメ科 Dalbeegia 属の広葉樹。紫檀とも呼ばれる。 Rosewood の中にも Brazilian Rosewood や Indian Rosewood と呼ばれるものが存在する。

Electric Guitar のネック材や指板に使われる。

A.5.7 Ebony カキノキ科カキノキ属の常緑広葉樹。黒檀とも呼ばれる。 Electric Guitar の指板に使われる。

参考文献

[1] Electric Guitar http://en.wikipedia.org/wiki/Electric Guitar

[2] 世界の銘木木材図鑑 http://www.fuchu.or.jp/ kagu/mokuzai/index.htm URI は 2010 年 1 月 17 日現在

B ソースコード

B.1 dayget.sh

自動画像収集システム

#!/bin/sh

# 画像保存ディレクトリに移動する。

cd /home/hattoris/public_html/cgi-bin/digimart_files
# 1 時間に 1 度、 100 件の Electric Guitar の画像を取得。
wget -e robots=off -A*thumb* -U "Mozilla/5.0 [ja]" -nd -c -r \
"http://www.digimart.net/
pub_gk_list.do?c1=1&c2=8&readCount=100&currentPage=1"

# 保存された画像の".jpg"以下に付いている文字列を削除する。

for FILE in ./*
do
    mv $FILE $(echo $FILE | sed -e 's~\.jpg.*~\.jpg~')
done

B.2 search.sh

類似画像検索出力システム

#!/bin/sh

# 画像保存ディレクトリに移動する。

cd /home/hattoris/public_html/cgi-bin/digimart_files

# imgSeek のコマンドモードを利用し、画像をデータベースに登録する。

imgSeekCmd add -s > log.txt

# URL の入力させ、その URL を変数に入れる。

echo "Please Input Digimart Electric Guitar URL."
read URL
# URL から ID を抽出。
echo $URL | sed -e 's~http.*DS~DS~' > url00.txt
sed -e 's~.jpg~~' url00.txt > url01.txt
read ID < url01.txt

# imgSeek のコマンドモードを利用し、類似した画像をテキストに出力。

imgSeekCmd query -r 30 -f "$ID"_thumb.jpg > out00.txt

# html 出力用にテキストを書き換える。

sed -n '15,44p' out00.txt > out01.txt
cut -d '/' -f7 out01.txt > url0.txt
sed -e 's~\_.*\]~~' url0.txt > url1.txt
paste -d@ url1.txt out01.txt > out02.txt
paste -d* url1.txt out02.txt > out03.txt
sed -e 's~^~<a href="http://www.digimart.net/inst_detail.do?instrument_id=~' out03.txt > out04.txt
sed -e 's~*~"><IMG SRC="/home/hattoris/public_html/cgi-bin/digimart_files/~' out04.txt > out05.txt
sed -e 's~@~_thumb.jpg" WIDTH="100" HEIGHT="100">類似度は<font size="5">~' out05.txt > out06.txt
sed -e 's~\: .*~%</font></a><br><br><br>~' out06.txt > out07.txt
sed '1s~^~<html>\n<head>\n<title>'$ID' に似ているギター</title>\n</head>\n<body>\n~' out07.txt >\
 out08.txt
sed '15s~$~\n</body>\n</html>~' out08.txt > out09.txt

# html ファイルとして出力。

sed -e "6s~類似.*%~元のギター<font size="5">"$ID"~" out09.txt > out.html
# Firefox で表示させる。
firefox out.html

# 出力した txt を削除。

rm out*.txt
rm url*.txt

B.3 weekget.sh

画像再取得システム

#!/bin/sh

# 画像保存ディレクトリに移動する。

cd /home/hattoris/public_html/cgi-bin/digimart_files

# 今まで取得した画像ファイルを削除する。

rm *.jpg
# 全て Electric Guitar の画像を取得する。
for i in `seq 1 400`
do
    wget -e robots=off -A*thumb* -U "Mozilla/5.0 [ja]" -nd -c -r \
"http://www.digimart.net/pub_gk_list.do?c1=1&c2=8&readCount=100&currentPage="$i""
done

# 保存された画像の".jpg"以下に付いている文字列を削除する。

for FILE in ./*
do
    mv $FILE $(echo $FILE | sed -e 's~\.jpg.*~\.jpg~')
done

B.4 crontab.txt

Crontab の設定 # 09:00~17:00 の 1 時間 1 度、自動画像収集システムを起動する。

0 9-17 * * * /home/hattoris/sotuken/dayget.sh | /home/hattoris/sotuken/rename.sh

# 毎週金曜 03:00 に、画像再取得システム。

0 3 * * 6 /home/hattoris/sotuken/weekget.sh | /home/hattoris/sotuken/rename.sh