バックナンバー

[ --.--.-- ] スポンサーサイト

[ 2011.09.29 ] cvGoodFeaturesToTrack

[ 2011.09.26 ] Data Mining / Behaviorism

[ 2011.09.22 ] 列挙型

[ 2011.09.20 ] cvFindFundamentalMatとRANSAC

[ 2011.09.11 ] CVPR

[ 2011.09.07 ] Optical Flow Class

[ 2011.09.06 ] Homography

[ 2011.09.06 ] Multiple View

[ 2011.09.06 ] [SSII2011]金出武雄先生特別講演

[ 2011.09.06 ] PRMU特別講演IBM Research Watson

[ 2011.09.06 ] Coda

[ 2011.09.06 ] 自分なりの人脈の作り方

[ 2011.09.06 ] FIND特徴量

[ 2011.09.06 ] 他分野への論文誌投稿

[ 2011.09.06 ] アフォーダンス

[ 2011.09.06 ] 視線推定技術

[ 2011.09.06 ] 適合率,再現率,F値

[ 2011.09.06 ] ボロノイ図

[ 2011.09.06 ] Evernote

[ 2011.09.06 ] 映像監視サーベイその2

[ 2011.09.06 ] 映像監視サーベイその1

[ 2011.09.06 ] 処理時間の計測

[ 2011.09.06 ] 研究者としての英語学習

[ 2011.09.06 ] fatal error LNK1000: Internal error during IncrBuildImage

[ 2011.09.06 ] 技術英語

[ 2011.09.06 ] local time

[ 2011.09.06 ] ViEW2010

[ 2011.09.06 ] ref class

[ 2011.09.06 ] 第15回パターン計測シンポジウム

[ 2011.09.06 ] IT Text 人工知能

»次のページ

--.--.-- --:-- | EDIT
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Category: スポンサー広告
Permanent Link | Comment(-) | Trackback(-) | PageTop↑
2011.09.29 05:37 | EDIT
特徴点の数がもっと欲しいと感じたため,OpenCVに実装されている,cvGoodFeaturesToTrackの実験用クラスを作ってみました.

下が,作ってみたクラスになります.


FeaturePoint.h



#ifndef _FEATUREPOINT
#define _FEATUREPOINT

/* OpenCV include */

#define IMAGE_SIZE_X 640
#define IMAGE_SIZE_Y 480

/* Feature Point Class */
class FeaturePoint
{
public:
 FeaturePoint(void);
 ~FeaturePoint(void);

 // Feature point extraction
 void FeaturePointExtraction(IplImage *src, int method);

private:
 int i; // Iteration

 //-------------------------------
 // For cvGoodFeaturesToTrack
 //-------------------------------
 int corner_count; // corner count
 IplImage *gray; // Grayscale image
 IplImage *eigen, *temp; // Eigen & temp image
 CvPoint2D32f *corners; // corner

};

#endif




FeaturePoint.cpp



#include "FeaturePoint.h"

/**
Constructor of FeaturePoint class.
Set corner count and create image memory.

@param --
@return --
*/
FeaturePoint::FeaturePoint(void)
{

 // number of corner
 corner_count = 100;

 // image create
 gray = cvCreateImage(cvSize(IMAGE_SIZE_X, IMAGE_SIZE_Y), 8, 1);
 eigen = cvCreateImage(cvSize(IMAGE_SIZE_X, IMAGE_SIZE_Y), IPL_DEPTH_32F, 1);
 temp = cvCreateImage(cvSize(IMAGE_SIZE_X, IMAGE_SIZE_Y), IPL_DEPTH_32F, 1);
 corners = (CvPoint2D32f *)cvAlloc(corner_count * sizeof(CvPoint2D32f));

}

/**
Destructor of FeaturePoint class.
Release image memory.

@param --
@return --
*/
FeaturePoint::~FeaturePoint(void)
{

 cvReleaseImage(&gray);
 cvReleaseImage(&eigen);
 cvReleaseImage(&temp);

}

/**
The function of GoodFeaturesToTrack.
if(method==1) Harris operator
else Eigen method

@param src : input image (grayscale or color) to calculate feature points
@param method : method (1:harris operator other:eigen method)
@return --
*/
void FeaturePoint::FeaturePointExtraction(IplImage *src, int method)
{

 if(src->nChannels == 3) // color image
 cvCvtColor(src, gray, CV_BGR2GRAY);
 else if(src->nChannels == 1) // grayscale image
 cvCopy(src, gray);

 // feature points extraction
 cvGoodFeaturesToTrack(gray, eigen, temp, corners, &corner_count, 0.05, 3, NULL, 3, method, 0.01);

 // sub pixel estimation
 cvFindCornerSubPix(gray, corners, corner_count, cvSize(3, 3), cvSize(-1, -1), cvTermCriteria(CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.03));

 // draw feature points
 for(i=0; i < corner_count; i++){
  if(src->nChannels)
   cvCircle(src, cvPointFrom32f(corners[i]), 3, CV_RGB(255,0,0), 2, 8, 0);
  else if(src->nChannels == 1)
   cvCircle(src, cvPointFrom32f(corners[i]), 3, cvScalar(255), 2, 8, 0);
 }

}




ここで,特徴点取得用の関数FeaturePointExtractionは、入力画像srcと特徴点取得手法の指定methodを入力とします.

srcはグレースケール,カラーどちらでも大丈夫で,methodは1の時にHarris Operatorを,それ以外の時に最大固有値手法により特徴点を求めます.

画像を渡すとその画像srcに描画してしまうため,違う画像に描画したいという時には,引数を増やして,そちらに書き換えるようにしてください.

それから,OpenCVリファレンスにある,
cvGoodFeaturesToTrack( const CvArr* image, CvArr* eig_image, CvArr* temp_image, CvPoint2D32f* corners, int* corner_count, double quality_level, double min_distance,const CvArr* mask=NULL, int block_size=3, int use_harris=0, double k=0.04 );

の6,7番目にあるquality_level(最大・最小の固有値に乗ずる定数(検出される画像コーナの許容最低品質を指定する))とmin_distance(出力される画像コーナー間の許容最低距離(ユークリッド距離を用いる))の値を下げると,特徴点の抽出閾値が甘くなるため,特徴点数が増えます.

下は,閾値を変えて実験をした結果です.

quality_level = 0.1 min_distance = 15
goodfeatures_01_15

quality_level = 0.05 min_distance = 5
goodfeatures_005_5

下のほうが特徴点数が増えているのが分かります.

ただ,あまり増やしすぎると,特徴点取得の質が落ちてしまう?ような気がします.

丁度いいところを見極める必要がありそうですね.

参考
OpenCV コーナーの検出

スポンサーサイト
2011.09.26 15:15 | EDIT
先週,先々週と,研究に関連するであろう2冊の書籍を購入致しました.

一つ目は,データマイニング本.

Ian H. Witten,Eibe Frank, Mark A. Hall, Data Mining: Practical Machine Learning Tools and Techniques, Third Edition (The Morgan Kaufmann Series in Data Management Systems)

datamining_practical

データマイニングの基礎理論から応用場面,機械学習の方法や,そのアルゴリズム・実装までカバーしている本です.

この一冊であわよくば研究への応用が効くのか?と思い購入しました.

この本も8月に苦労した,"Multiple View Geometry"に近い量があるので,またまた読み進めるの大変そうですが...

ちなみに実装はWEKAというJavaベースの言語をもとに説明されているようです.

Javaは大学3年生の時に勉強していましたが,授業で取り組んだ程度なので,また新しく知識の習得が必要な気が.

そんなに大変ではないと思っていますが.

検索すると,すぐにWEKAのページが見つかりました.

WEKA The University of Waikato

データマイニングを何に使うのか,ここで詳しく述べませんが,人物の行動履歴なんか作ってそれをもっと上手くヒューマンセンシングに使えたらいいかということを考えています.



もう一つは,Behaviorismの本.

日本語でいうと,行動学?でいいんですかね?

タイトルはこちら.

John Watson, Behaviorism

Behaviorism_watson

Behaviorismは,人間の行動について取り扱う,心理学分野の一種です.

この本にも,Behaviorismとは何か?から始まり,人間の心と体の仕組み,そしてそれらが行動にもたらす影響などについて記述されているようです.

人の行動を理解する上で,行動がどのように始まるのか,そしてその仕組みを学ぶことは意義があると感じたので購入しました.

こちらはまだ頼んだばかりで届いていませんが,届くのが楽しみです.


タスクが一気に増えますが,違う分野の勉強.

新しい刺激を得ることができるので,凄く楽しみです.

2011.09.22 12:46 | EDIT
現在は,人物の行動理解をやっております.

複数の行動を管理するときに,列挙体を使ってみました.

久しぶりに列挙体を使ってみたので記録に残します.

ちなみに,行動理解のデータセットに,Weizmann Action Dataset を使っているので,行動のタグはそこから来ています.

列挙型の例:
enum ACTION{ BEND, JACK, JUMP, PJUMP, RUN, SIDE, SKIP, WALK, WAVEONE, WAVETWO };

このようにすれば,数字を意味のある行動に対応付け出来るので便利です.先頭から,0,1,2...と整数が割り振られます.

分かりやすくして,ミスを減らすのが目的です.

が,その他にもある関数内のみで使いたい時など,有効範囲を決めることが出来る点が有効であるとのことです.

数字の割り振りも自由に出来て,

enum ACTION{ BEND = 1, JACK, JUMP, PJUMP, RUN, SIDE, SKIP, WALK, WAVEONE, WAVETWO };

とすれば1から始まりますし,列挙型の途中で数字を変えても構いません.

使い方を覚えれば何かと便利かもしれませんね.次は忘れないようにしなければ!


参考ページ

C/C++ Enum

2011.09.20 06:48 | EDIT
cvFindFundamentalMatのリファレンスを見てみると,以下のようになっています.

int cvFindFundamentalMat(
 const CvMat* points1,
 const CvMat* points2,
 CvMat* fundamental_matrix,
 int method=CV_FM_RANSAC,
 double param1=1.,
 double param2=0.99,
 CvMat* status=NULL);

ここで,最後のstatusはmethodがRANSACかLMedsの時にオプションで見られます.

(status以外の説明は他の資料を参照してください)

これは,入力した点の数と同じ要素数の出力配列です.Outliers(外れ値)の場合には"0"を,Inliers(正解値)の場合には"1"を返してくれます.

Fundamental行列を取得する時に,対応がどうなっているのか,またはRANSACの結果だけ見たいという時にも使える関数です.

この関数は,以下のように使えます.


サンプル



CvMat *Point1 = cvCreateMat(2, point_count, CV_64FC1);
CvMat *Point2 = cvCreateMat(2, point_count, CV_64FC1);
CvMat *F = cvCreateMat(3, 3, 64FC1);
CvMat *status = cvCreateMat(1, point_count, CV_8UC1);

/* 対応点を求めて格納 */

cvFindFundamentalMat(Point1, Point2, F, CV_FM_RANSAC, 1.00, 0.99, status);

for(int i=0; i if(status->data.ptr[j] == 1)
  { /* Inlier processing */ ]



2011.09.11 06:29 | EDIT
CVPRのことについて,少し書いてみようと思います.

CVPRは,コンピュータビジョンのトップカンファレンスで,毎年世界中からいろんな手法が投稿されてきます.

その中でも採択されるのは約20%という狭き門です.

世界から送られてくる論文の中でも,厳選された研究しか通らない,まさに最難関です.

僕もこの1ヶ月半の間に成果が出れば投稿する権利を教授からもらえます.

投稿するまでも難関,投稿してからも難関,というわけですね.

でも,目指すだけなら誰でも出来るので,どこまで出来るか,挑戦してみたい気持ちはあります.

さて,CVPRですが,日本の先生方もレポートをして下さっているそうです.

ざっと調べて,入手できたのはCVPR2006とCVPR2011でした.

かなり詳しく書いてあるので,とても参考になりました.

CVPR2006 Report

CVPR2011 Report
2011.09.07 05:29 | EDIT
人物のAction Recognitionをするときに,結構な論文がOptical Flow(オプティカルフロー)を使っていたので,ちょっとクラスにしてみました.

実装したのは,PyramidLKとLK,2種類の手法です.

もちろんまだまだ拡張していくのですが,最初のものを残していく意味でも,書いておきます.

実装環境はVisula Studio 2008 ProfessionalとOpenCVです.

CalculateOpticalFlow.h


class CalculateOpticalFlow
{
public:
 CalculateOpticalFlow(void);
 ~CalculateOpticalFlow(void);

 void CalculatePyrLK(IplImage *src1, IplImage *src2, IplImage *display);

 void CalculateLK(IplImage *src1, IplImage *src2, IplImage *display);

private:

 // Pyramid Lucas-Kanade
 char *status;
 int i, j, corner_count;
 CvPoint2D32f *corners1, *corners2;
 IplImage *eig_img, *temp_img;
 IplImage *prev_pyramid, *curr_pyramid;

 // Lucas-Kanade
 int dx, dy, rows, cols;
 CvMat *velx, *vely;

 CvTermCriteria criteria; // Common overship
 

};



CalculateOpticalFlow.cpp


CalculateOpticalFlow::CalculateOpticalFlow(void)
{
 corner_count = 150;

 // Structure of Pyramid Lucas-Kanade
 // IMG_SIZE_X : x image size
 // IMG_SIZE_Y : y image size
 eig_img = cvCreateImage(cvSize(IMG_SIZE_X,IMG_SIZE_Y), IPL_DEPTH_32F, 1);
 temp_img = cvCreateImage(cvSize(IMG_SIZE_X,IMG_SIZE_Y), IPL_DEPTH_32F, 1);
 corners1 = (CvPoint2D32f *)cvAlloc(corner_count * sizeof(CvPoint2D32f));
 corners2 = (CvPoint2D32f *)cvAlloc(corner_count * sizeof(CvPoint2D32f));
 prev_pyramid = cvCreateImage(cvSize(IMG_SIZE_X+8, IMG_SIZE_Y/3), IPL_DEPTH_8U, 1);
 curr_pyramid = cvCreateImage(cvSize(IMG_SIZE_X+8, IMG_SIZE_Y/3), IPL_DEPTH_8U, 1);
 status = (char *)cvAlloc(corner_count);

 // Structure of Lucas-Kanade
 cols = IMG_SIZE_X;
 rows = IMG_SIZE_Y;
 velx = cvCreateMat(rows, cols, CV_32FC1);
 vely = cvCreateMat(rows, cols, CV_32FC1);
 cvSetZero(velx);
 cvSetZero(vely);

 criteria = cvTermCriteria(CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 64, 0.01);


}

CalculateOpticalFlow::~CalculateOpticalFlow(void)
{

 cvReleaseImage(&eig_img);
 cvReleaseImage(&temp_img);
 cvReleaseImage(&prev_pyramid);
 cvReleaseImage(&curr_pyramid);

 cvReleaseMat(&velx);
 cvReleaseMat(&vely);
}

// src1 & src2 : source two image to calculate optical flow
// display : drawing line
void CalculateOpticalFlow::CalculatePyrLK(IplImage *src1, IplImage *src2, IplImage *display)
{

 cvGoodFeaturesToTrack(src1, eig_img, temp_img, corners1, &corner_count, 0.0001, 5, NULL);

 cvCalcOpticalFlowPyrLK(src1, src2, prev_pyramid, curr_pyramid, corners1, corners2, corner_count, cvSize(10, 10), 4, status, NULL, criteria, 0);

 for(i = 0; i < corner_count; i++)
  if(status[i])
   cvLine(display, cvPointFrom32f(corners1[i]), cvPointFrom32f(corners2[i]), CV_RGB(255, 0, 0), 1, CV_AA, 0);

}

// src1 & src2 : source two image to calculate optical flow
// display : drawing line
void CalculateOpticalFlow::CalculateLK(IplImage *src1, IplImage *src2, IplImage *display)
{

 cvCalcOpticalFlowLK(src1, src2, cvSize(15, 15), velx, vely);

 for(i = 0; i < cols; i+=5){
  for(j = 0; j < rows; j+=5){

   dx = (int) cvGetReal2D(velx, j, i);
   dy = (int) cvGetReal2D(vely, j, i);
   cvLine(display, cvPoint(i, j), cvPoint(i+dx, j+dy), CV_RGB(255, 0, 0), 1, CV_AA, 0);
  }
 }

}

- スペース認識のため,全角のスペースを使用しております.コーディングの際は半角に直してからご使用ください.




クラスの宣言は,CalculateOpticalFlow COF;というように行い,

関数を使う場合にはCOF.CalculatePyrLK(---);という書き方をします.

さらに拡張しないと,行動の理解までにはならないので,僕はまだまだ頑張ります.

参考
OpenCV sample code オプティカルフロー
2011.09.06 14:49 | EDIT
Homographyは3×3の行列で,2つの平面間の射影を実現する変換です.

二つの画像の同じ平面から最低4点の対応があれば行列が求まります.

この変換は以下のように示されます.

x' = H * x
x' : 変換後の座標 [x1' x2' x3']^T H : 変換行列,Homography x : 変換前の座標 [x1 x2 x3]^T

plane

そして図のようにHomographyは画像間の点を一点に決定します.

Homographyの使い方は,一つの画像の点が求まればもう一つの点が求まるということ,それから,画像の統合を可能にします.

下はそれを示した図です.

soccer_homography

こちらは点の変換です.

入力画像の一点を指定すると,もう一方の画像の一点に射影されています.

hartley_zisserman_homography

こちらは平面から平面に射影しています.

原理は全く同じで,画像中全部の一点を変換しているだけです.

また,OpenCVで求めたHomographyを使って点→点の対応を自分で計算する場合,x3'がスケールファクターになっているので,x=x1'/x3' y=x2'/x3'となります.

僕もこれで点がずれていてちょっと苦労しました.

そのずれが倍数のずれであることに気づいて修正できましたが.

参考にしたページも載せておきます.

参考
射影変換


2011.09.06 08:33 | EDIT
今回は "Multiple View"の勉強方法をアメリカの友達に聞きました.

多分だいたい同じだと思うのですが,参考までに.

まず,以下の内容のメモをもらいました.

①Roger Tsai, Calibration

②Multiple View Geometry by Hartley and Zisserman
Chapter on calibration, fundamental matrix

まずは,この分野ではとっても有名な研究者,Roger Tsaiの論文を読め,ということでした.昨日言われて,夜に読んでみましたが,内容が濃くて半分しか読めませんでした.今日もトライしています.

また,こちらもとても有名な研究者が書いた本で,Multiple View Geometryという本です.前々から少しだけ読んではいたのですが,内容が分からない上に,とてもページ数が多いんです.(英語版で672ページあります)

なので,どこに絞ったらいいのか全然わかりませんでした.

しかし,そうは言っていられないのが今回.覚えないと研究が進みそうにないです.気合い入れて頑張ります.


参考

- Roger Tsai "A Versatile Camera Calibration Techniaue for High-Accuracy 3D Machine Vision Metrology Using Off-the-shelf TV Cameras and Lenses"

- Multiple View Geometry
2011.09.06 08:30 | EDIT
素人のように考え,玄人として実行する

- ”面白くて役に立つ”研究開発のすすめ-


今日の内容:方法の方法論(メタ研究)について話したい

Moment of Fame

いっときの有名(自慢話として聞いてください!)

- スーパーボウル:アイビジョン(33台のカメラを使って映画マトリクスのように撮影する)
- スーパーボウルの放送に出演した唯一の大学教授
- 映画Surrogatesに出ている



技術開発者の仕事と希望は?

-「良い研究や開発をすること」
- では,「良い研究や開発をすること」とは?
- 故アランニューウェル先生のお話(3つの教訓)

"Good science responds to real phenomena or real problems.
Good science is in the details.
Good science makes a difference."

- 成功するアイディアは,もとは案外,単純・素直なものである
- 邪魔になるものは「知っている」と思う心,”専門的”「知識」
- しかし,実行には専門的な知識と技がいる

(原因に関わる余裕を持てる人でないとうまくいかない,経験がないといけない)

そこで,”素人発想,玄人実行”である

発想する

ー身の回りからヒントを得る
ー飛躍した?推論,いい加減な?論理で考えてしまう

- 飛躍的な発想の例:ウェゲナー「大陸移動説」

答えから考えた:アフリカと南アメリカの地図を重ねて大陸が動いたんじゃないか?という仮説

(研究での例)
Compressed Sensing
いいカメラを作って,実環境を撮像する,そしてデコードしてさらに像をつくる
カメラから撮像する行程を省けばいいのではないか?


シナリオを作る

- 何がどうしてどうなって
- どこでどんな封に役に立つ
- 大きく,自由に,楽しく考える


[研究での例]

- VIRTUAL REALITYにより,

REAL REALITYを実験しようとしてきた
しかし,逆を考える(リアルワールドがスタートではないか?)
リアルスタートで実験をすればいいのではないか?

- 静止物体の3次元復元

自由の女神を復元しようとした

- ビデオレートのステレオマシーン(今度は動く物体でやってみよう)

カメラだらけの部屋を作った(NBAをコートの中でみよう!というスローガン)

- アフガニスタン全体をカメラを使って監視しよう

バルーンにカメラを付けて飛ばす,というアイディア(アフガニスタンはだめだから,国境から飛ばすと考えた)
無理であるか?→監視カメラは街中いっぱいある

- リアルタイム顔認識

金出先生→オバマ大統領 の表情に合成
Visual Communication Lab (Planned):自由に表情や性別を設定できる?→新しい心理学の分野ができる?

Motion Cloning:人物のキャプチャを別の人物で置き換える

それをリアルタイムで認識したらいい

発展させる(1)

- 解ける(解けて意味のある)問題を構想する
- 問題全体を解こうとすると問題がある
- 特定な問題にフォーカスすると解けて素晴らしい
- 役に立つ問題がないものは行けない
- 意味の無いものをやっている人もいる


研究での例

- Water Drop Display (3Dディスプレイ)

水滴を落として光を照射する
→反対を考える
雨を狙って照射する→逆に言えば,雨を避けて照射できない?(車のライトを見やすくする)


発展させる(2)

極端に,反対に,突き詰めて考える

- それが本当なら,多い方が良い→無限に,少ない方が良い→ゼロにする
- それで動かないなら間違っている?
- 人類は10×10の画像をすべて見たことが無い?(金出の定理?)


研究での例

- Hallucination

解像度 高から低は簡単,しかし,低から高は難しい
Hallucinationという考え方で復元できる
これができると,低解像度のカメラから銀行強盗の手配写真ができる→幻覚は証拠にならない(アメリカの弁護士より)


例題を解く,「解けない例題」を考える

- フォン・ノイマンの逸話
- オイラーの話
オイラーは例題を解いて公式を作っていた
オイラーは3つ例題を解いただけで公式を作った
ただし,例はよく考えて作る・使う
「論理学者,数学者,物理学者,工学者」の話(書籍より)


発展させる(3)

- 人に話す

アイディアを強固にする

研究での例

- 細胞トラッキング

人が追跡できるなんて,すごくない,細胞のトラッキング(再生医療)ができたらすごい規模だと言ってあげようと言われた
細胞の追跡により細胞分裂の機能が得られる
→メッカに集まった人を追跡する(40万人)
流れの中で違う方向に動いている人がわかる


研究価値

-「新しい」ことが価値ではない
世の中に新しいことより古いことのほうが多い

- うまくいって,役に立つことが価値

- 役に立つ研究を卑下しない
本当の基礎研究ほど役に立つものはない

- 本当に動く者が人を納得させる
いい研究だね,といったら納得していない,本当に納得していたら,それいくら?ときく


(再び)「良い」研究や開発とは?

イノベーションは現実問題から始まる
人の研究に差をつける
誰が最初かは大事でない,だれが先にそこへ到達したかが大事なんだ

最後に,一つ好きな言葉を...

"問題はあなたが解いてくれるのを待っている"

故アラン・ニューウェル教授


質問

-「素人が考えて,玄人が実行する」 ではどうか?

素人と玄人が集まっていくのはどうか? プロジェクトリーダーがよく考えた人であれば成功する
あまりうまくいった例はない

- 研究がうまくいくにはどうすればいいか?

多くの人でやるとうまくいかない
10人でやるよりは5人×2に分けて競合させる

(参考文献)
素人のように考え,玄人として実行するー問題解決のためのメタ技術, 金出武雄, PHP研究所
2011.09.06 08:21 | EDIT
金山 博様(IBM基礎研究所)IBM基礎研究所 個人ページ

watsonに携わった日本人は2人しかいない.そのうちの一人.


[特別講演]質問応答システムWatsonのクイズ番組における対戦
PRMUページ

IBMグランドチャレンジ(成功するかどうかわからないことをやるプログラム)の一環でやった.
ディープ・ブルーもそのプログラムだった.
2011年2月,クイズチャンピオンに勝ってしまった.
IBM基礎研究所は世界9拠点

そのうちアメリカ,イスラエル,中国,日本から人を集めた.


watsonの基礎知識

Jeopardyに参加させるためにIBM Researchが開発した質問応答システム

ー テキストで受け取り,その内容から答えの候補を出す,そして答えをマッチしてボタンを押す
ー 一定以上の確信を持った場合にボタンを押す
ー 聞くこと,見ることはやっていない(音声認識,画像認識)

Jeopardyについて

ー 平日の夕方に行われている
ー 幅広い分野から出題
ー 答えの種類が決まっている,という前提条件がある
ー Jeopardyのゲーム構成詳しくはこちら


対戦の模様
ー 幅広い分野への対応:膨大なカテゴリの中からの検索を一気にやらなきゃいけない
ー 問題文とカテゴリの解釈:問題文で何を問うているか
ー 高い正解率:実際の対戦時の正解率
ー 確信度の推定:分からないときにはボタンを押さない
ー 応答速度:問題文を読み終わるまでの2,3秒の勝負
ー ゲームの戦略:パネルの選び方,ボタンを押す閾値の設定,賭け金の設定
ゲームを行う上での戦略も多かった


技術の補足
ー 複雑な質問文から答えを適切に選び出す技術:単純ではない(質問文をGoogleで調べても答えは得られない)
ー 代名詞が何を指しているか?を推定
ー 答えの内容を解析した

処理の流れ(上から下)
ー 問われている内容の解析
ー 解答候補の生成
ー 回答の根拠探し
ー スコアリング
ー 同義語の融合(裏で知識データベースを使用)
ー 解答+確信度のリストから閾値以上の一番高い確信度を持つ答えを解答する


マッチング
キーワードのマッチングだけではだめ
→意味を考慮したマッチングをする(いろんな観点から意味付けして投票していく)


人間の成績にどうやって近づけたか?

データベースの拡張,文脈の関係を入れた,意味を考えた,などなど.

その結果,人間のレベルに近づいていった.

2880台コアを使用することで,2〜3秒の解答時間を実現した.



適用できる(しやすい)質問応答タスク

仮説が列挙できること
数値計算で決定的にとけないような複雑な問題であること
機械を発見する基となる文書や数値データが大量に使える
100%の正答率は期待できない

→人間を補助する形で使用する


医療の分野での使用

どんな病気か,ということを割り出している

ー 医学の知識を放り込んでいる
ー 見落としてしまわないように,コンピュータの候補を見て判断する(医師の誤りを補正- する働きになるのではないか?)


まとめ

クイズ番組において,人間の能力を上回った

ー 大量のテキスト情報を用いて適切に解答する
ー 情報アクセスの方法,ハードウェア・ソフトウェアについて
ー 人間とは異なるアプローチ

グランドチャレンジは,研究を進歩させる

ー 目標に向かって技術を同定する
ー 達成度の可視化が重要

応用の可能性

ー 医療分野での応用
ー 今後様々な分野でチャレンジしていきたい
2011.09.06 08:19 | EDIT
 MacでJavascriptの環境を整えようと考えたら,Coda(Mac専用のWebソフト)というソフトがよいということを知りました.

CodaはJavascriptだけの編集だけではないですが,私はJavascriptを試してみました.

VMWare Fusion をセットアップすれば,複数ブラウザでの確認もできるそうです.
参考

- VMWARE FUSION上のINTERNET EXPLORERでプレビューする

- ダウンロードサイト
パニック・ジャパン -Coda- Mac OS X用シングルウインドウWeb構築環境

2011.09.06 08:16 | EDIT
 自分が大学院に入学してから頑張って自分なりに考えた人脈の作り方を紹介致します.
参考までにご覧ください.

- 名刺を作る

 名刺を渡せば,向こうからも名刺を必ず頂けます.持っていない場合も,名前と連絡先を書いてもらうなどして教えてもらいましょう.後日もう一度連絡できればベターです.

- 自分から挨拶しにいく

 人から覚えてもらうためには何回も顔を合わせることが大事です.学会や勉強会などで見かけたら,自分から話しかけると良いと思います.勇気が必要ですが,慣れれば何でも無くなります.

- 学会で質問する,さらに発表が終わってからも話を聞きにいく

 質問をすることは大事です.いつも質問をするわけではないですが,面白いと思った研究,または自分と同じような研究をしている人に対してはできるだけ質問をしています.さらに,発表が終わってから個人的に話を聞きに行きます.名刺を交換したり,その後のつながりを作れるという点では良い方法だと思います.

- 先生から紹介して頂く

 初めの頃はよくわからなかったので,先生の知り合いを紹介してもらってました.学会などの懇親会には必ず参加して,紹介してもらってました.

- とにかく目立つ

 自己紹介や受賞したときなど,コメントするときに何か目立つことを言うと,覚えてもらえることもあります.ただ,不用意な発言をすると危険な場合もあるので,よく考えてやりましょう.また,学会にいつもいて顔を覚えてもらうことも効果的だと思います.

- 研究室同士の懇親会を企画する

 学会で知り合った方の研究室との懇親会を企画すると多くの人を覚えます.まず相手研究室の幹事のかたは間違いなく覚えますし,懇親会をしているうちに研究室の多くの人と知り合いになれるチャンスがあります.
2011.09.06 08:14 | EDIT
 2011年5月18日に,自動車技術会春季大会に参加してきました.

 そこで,豊田中央研究所の方が発表されていた,FIND特徴量について報告します.
詳細は以下より.

[研究目的]

- 歩行者を検出する

さらに,歩行者の移動方向を推定→横断中の歩行者は危険であると判断
    歩道を歩いている歩行者は安全なので無視する


[FIND特徴量] : HOG特徴量の改良

- HOGのおさらい

HOGはセル内のエッジ勾配特徴量を記述している
一定領域の形状を記述できる
しかし,類似した物体に対しては誤検出してしまう
→頑健な検出精度を持つ特徴量が必要

- HOGからの改良点

特徴量の取得まで行ってから調和平均により記述する
セルの二つの特徴同士を調和平均により新しく記述する
要素間の相関関係を特徴量化可能
対象の輪郭形状をより精緻に表現

- 実験の結果,FIND特徴はHOGやCoHOGよりも高い精度を誇る


- しかし,計算コスト,見え方の変化が問題視

→そこで,カスケード識別器を用いる
3段構造を取り,
最初の段では高速だが粗く,後段に行くほど処理は遅いが精密に識別する
最終ステップでは探索点が数十点となる

- 学習方法としては,歩行者の向き別に学習し識別器を組み合わせている


[実験]

- 精度検証

向き別の学習,カスケード構造をした方が効果的

- 処理速度

カスケード構造有 250ms/frame
       無 30 s/frame


参考文献
後藤邦博,城殿清澄,木村好克,内藤貴志,"FIND特徴を用いたカスケード型識別器による歩行者検出および向き推定"自動車技術会春季大会学術講演前刷集,No.11-11 pp.17-20,2011.5

2011.09.06 08:12 | EDIT
 現在,他分野の論文誌(自動車安全の論文誌)へ投稿すべく,奮闘しております.

 共同研究先の方々と話をさせて頂く中で感じたことは,

- コンピュータビジョンの専門用語は通じない

 機械学習,エッジ検出,二値化,さらには特徴量も分かりやすく説明してほしいと言われました.自分の分野以外の論文に投稿する際には,他分野の技術者に見てもらう方が絶対良いと思いました.分からない単語ばかり並べると減点の対象になり,ほぼ高確率で論文誌にはリジェクトされます.気をつけましょう!(と自分に言い聞かせ)

- 図で説明する

 言ってもわからないなら,図で説明してしまえというわけです.何を言いたいのかを,図だけを見ただけで分かるように,そして補足するように言葉を補えば,それだけでいいということを言われました.

- 目的をしっかりと記す

 コンピュータビジョンではシステムとしてのアウトプットはみんな知っていても,他分野には通じないことも多いです.その研究が何に使えるのかをしっかりと記しましょう.


 今回,自動車分野の論文誌に投稿するために学ばせて頂きましたが,自分の分野においてもこれは言えるのではないかと思い,反省しました.確かに,図の大切さを思い知りましたし,分かりやすい言葉を選ぶ,というのは同業者に説明する場合にも言えるはず.

 ここで,僕の知り合いの偉い先生が,

「論文にも,愛が必要だ」


と仰っていたのを思い出しました.相手のことを思いやって論文を書くことが大事なんですね!
2011.09.06 08:10 | EDIT
 アフォーダンスとは,環境が動物に提供する「価値」のことです.その環境-物体,物質,場所,事象,他の動物,人工物など-を人間が認識し何らかのインタラクションを行うことで,価値を生み出します.

以下に,アフォーダンスについての説明を記述します.

- アフォーダンスは人間の能力や体格などによっても変化するものである.

例:人間がある柵(バーのようなもの)を乗り越えるか,くぐるか?

- 環境の中の情報は無限にある.よって,それを探索する知覚システムの動作も変化し続け,どのような環境と接触してきたかによってまったく個性的であり,無限に分化する可能性を持つ.知覚を蓄えるのではなく,身体の振る舞いをより複雑に,洗練されたものにしてゆくことが発達することの意味である.

- 人とモノの間に何かしらの価値があり,モノの意味や使われる場所,人の状態などによってもアフォーダンスは変化する.


アフォーダンスについては,今後も調査していく予定です.


参考文献

- アフォーダンス-新しい認知の理論,佐々木正人,岩波書店

- 川村久美子,アフォーダンス理論がもたらす革命,武蔵工業大学環境情報学部情報メディアセンタージャーナル,第2号,2001.4
2011.09.06 08:07 | EDIT
 コンピュータビジョン分やにおいて視線推定は,人がどこに注意しているかを知る上で重要な情報となります.広告のどこを最初に見てどのような順番で見ているのかや個人毎に異なる好みも分かるようになります.また,視線は人の心理状態を映す鏡となる場合もあります.集中していない時にはぼーっとして,同じところばかり見ていたり,興奮や緊張から視線が飛んでいたりしてどこを見ているか分からない場合などが考えられます.コンピュータが人間のことを理解するための大事な情報を取得するためにも,ロバストな視線推定が必要になるでしょう.

[視線推定に使われる技術]
頭部位置推定,顔検出:人物の頭/顔の形状をあらかじめ機械に学習させ識別器を用いて検出する手法,頭部/顔を楕円近似するなどモデルとして持っておき画像の中でそれらしい物体を頭と見なす手法などが挙げられます.

顔器官検出,視線推定:顔を検出した後に,目・鼻・口などから得られる特徴点を追っていくActive Appearance Model (AAM)などが代表的な例です.これにより目の位置を捉えたら白目/黒目の位置からどの方向を向いているのかを推定しています.どの方向を見ているかは,今のところ一般的にはあらかじめ目の状態と向きを対応づける処理(キャリブレーション)が行われています.

以下に参考となる動画像のリンクを載せておきます.

見てみると,正面顔はもちろん,斜めを見ている場合でも視線の推定ができています.

参考動画(youtube)
Gaze Tracking

GazeLib: a real-time low-cost gaze tracking library

Real Time Face Tracking with pose estimation - OPENCV

Accurate eye center localisation for low-cost eye tracking

Accurate Eye Center Location and Tracking

Webcam-based Visual Gaze Estimation

Low-cost Remote Eyetracking

Gaze Tracking with web cam


2011.09.06 08:02 | EDIT
 物体検出の実験においてよく用いられる指標に,適合率,再現率,F値というものがあります.今まではDET curveやROC curveについて調べてきましたが,今回は適合率,再現率,F値について調べてみました.

適合率(precision)・・・システムの正解率
(適合率) = (正解数) / (検出の総数)

再現率(recall)・・・正解のうち,どれだけ検出できているか
(再現率) = (検出の正解数) / (正解の総数)

F値・・・適合率,再現率の調和平均
(F値) = {2 × (適合率) × (再現率)} / {(適合率) + (再現率)}

2011.09.06 08:01 | EDIT
 ボロノイ図は,ある点が他のどの点に一番近いかによって二等分線を引いてできる図です.ボロノイ図のプログラムを見つけたので紹介します.Shane O'SullivanさんのVoronoi Resourcesのページに「VoronoiDiagramGenerator.h」「VoronoiDiagramGenerator.cpp」「voronoi_main.cpp」の3つのファイルが提供されています.VoronoiDiagramGeneratorという名前のクラスとメイン文という構成になっています.メイン文で座標を入力してボロノイ図を得ています.分割しているラインを出力としているようです.

下記はアレンジして入力した点も加えた結果となります.

出力結果

(-22.000000, -9.000000)
(-17.000000, 31.000000)
(4.000000, 13.000000)
(22.000000, -5.000000)
(28.000000, 6.000000)

GOT Line (8.454546,-100.000000)->(0.166667,-8.833333)
GOT Line (14.970589,5.970588)->(100.000000,-40.409092)
GOT Line (33.131584,68.236847)->(50.777779,100.000000)
GOT Line (-100.000000,21.062500)->(-16.274193,10.596774)
GOT Line (14.970589,5.970589)->(33.131580,68.236847)
GOT Line (-16.274195,10.596774)->(33.131584,68.236847)
GOT Line (0.166666,-8.833333)->(-16.274195,10.596774)
GOT Line (0.166667,-8.833333)->(14.970589,5.970589)

参考
Voronoi Resources
2011.09.06 07:59 | EDIT
研究アイディア,サーベイ,ミーティングメモやToDoリストなどを現在はEvernoteで管理しています.MacやWindows,Androidなどで同期できるので,何か思いついたらどこでも書き込んでいます.もちろんどこでも確認できるので,ちょっとした時間にEvernoteを使うことが多くなりました.

Evernoteへのリンク

Evernote
2011.09.06 07:58 | EDIT
 サーベイ論文まとめの続きです.

個人認識:モデルベース,統計モデル,物理的パラメータ,時系列モーション,歩行動作統合型


モデルベース:歩行や走行動作をモデルとし,特徴はハフ変換やテンプレートマッチング

統計モデル:歩行動作の固有空間を構成,時系列のモーション解析,シルエットを分割する

物理的パラメータ:縦横サイズ,歩幅のリズムやサイズ,3次元に拡張して各部位毎のラベリング/距離補正/カメラキャリブレーション/影の除去

時系列モーション:3次元データから時系列の分布を求める

歩行動作統合型:バイオメトリクスと歩行動作を組み合わせる

複数カメラの統合:オクルージョンは違う視点から解決する


物体のマッチング→カメラ間の位置を合わせる(geometry-based method),
カメラ間において特徴マッチングを行う(recognition-based method)

オクルージョン対策→複数カメラ間で一番切り分けやすいカメラを選ぶ,物体全体の速度を求め3次元空間上で分離,ベイズ識別でセグメンテーションしカメラ間を統合しカルマンフィルタにより追跡

今後の課題:更なるオクルージョンへの対策,2次元・3次元追跡の統合,3次元モデリング,映像監視と個人認識との組み合わせ,行動理解,異常行動検出,映像の修復,行動の言語記述,複数センサの統合,遠隔監視


参考文献
Weiming Hu, Tieniu Tan, Liang Wang, Steve Maybank,"A Survey on Visual Surveillance of Object Motion and Behaviors", Systems, Man, and Cybernetics, Part C: Applications and Reviews, Vol.34, No.3, pp.334-352, 2004
2011.09.06 07:53 | EDIT
 映像監視のサーベイ論文[A Survey on Visual Surveillance of Object Motion and Behaviors]を読みながらとったメモを載せます.2004年に出ているので,2011年現在の最新論文は書かれていません.

バイオメトリクス,特徴量自動取得,顔認識,個人認識,自動車検出,カメラ間のネットワークについて書いている

監視では複数のカメラからリアルタイムで検出・追跡・行動理解・識別をして統合する

背景のモデリング:ガウス推定,パラメータ推定,カルマンフィルタによる明るさのモデル化,Mixed Gaussian Model,Wallflower algorithm(pixel level, region level, frame level),色や勾配情報から適応的背景モデルを生成

セグメンテーション:背景差分,フレーム間差分,Optical flow

物体の識別:領域のアスペクト比から人/車/人の群/それ以外を判断(形状ベース),シルエットの形状パラメータから人とそれ以外に分類(形状ベース),動物体の周期性(モーションベース),動きから人間と車両の切り分け(モーションベース)

物体追跡:特徴点,直線,領域,Kalman,Condensation,Bayesian Network,geodesic methodなど統計的な追跡.追跡は,「領域ベース」「動的輪郭ベース」「特徴ベース」「モデルベース」の4つに分類できる.

モデルベース:人体モデルを構成する,モーションモデル,予測・探索の戦略

人体モデル→人体の各パーツ毎にモデルを分割,2次元輪郭,円柱・円錐・球・超平面,スケルトンまたは肌などから構成した階層モデル

モーションモデル→HMM, Minimum Description Length(MDL), Finite-State Machine(FSM), Multivariate Principal Component Analysis(MPCA), 階層的PCA

予測・探索の戦略→動きや統計的なモデル,カルマンフィルタ,Condensationなど

行動理解:Dynamic time warping(DTW)(会話認識に使われているテンプレートベースの動的プログラミングアルゴリズム),Finite-State Machine (FSM)(状態推定関数), HMM, Time-delay Neural Network


参考文献
Weiming Hu, Tieniu Tan, Liang Wang, Steve Maybank,"A Survey on Visual Surveillance of Object Motion and Behaviors", Systems, Man, and Cybernetics, Part C: Applications and Reviews, Vol.34, No.3, pp.334-352, 2004
2011.09.06 07:50 | EDIT
 僕は,プログラムの処理時間を計測する際に,GetTickCountを使います.GetTickCountはウインドウを起動してから経過した時間を返す関数です.返り値の単位はミリ秒です.ただし,返す値の精度がミリ秒単位の32ビット整数なので,約49.7日でオーバーフローしてしまうそうなので,長いこと起動しているマシンでの計測は注意が必要です.

 以下,サンプルプログラムです.


DWORD start_time;

// 開始時のタイムを取得
start_time = GetTickCount();

/***************************/
/* 計測したい部分を記述 */
/***************************/

// タイムを計測
printf("processing time: %d\n", GetTickCount() - start_time);


2011.09.06 07:49 | EDIT
最近,英語力向上のために奮闘中です.僕の取り組みとしては,

- 国際会議の論文を読む
- 研究ノートは(できるだけ)英語で書く
- CDによるヒアリングや洋楽を聞く
- プログラムのコメントを(できるだけ)英語で記述する


英語ヒアリングを開始してからもう4ヶ月になりますが,少しずつ変わってきたという意識はあります.
続けることでもっと英語力を伸ばしていきたいと思います.

2011.09.06 07:48 | EDIT
 Microsoft Visual Studio 2008を実行したときに発生するエラー,"fatal error LNK1000: Internal error during IncrBuildImage"の直し方.

 このエラーを修正するためのプログラムが,Microsoft社から提供されているみたいです.タイトル:KB948127をインストールしたらその後実行した際のエラーはなくなりました.

 以下,関連リンクです.

参考
KB948127
2011.09.06 07:46 | EDIT
 昨日まで国際学会の論文書いてました.論文書くために調べた英語を以下に載せます.

control : 機器を制御する
automobile ; 自動車
brake : ブレーキ
lowering : 低減
traffic accident : 交通事故
surveillance : 監視
comprehend : 把握する
acquisition, taking : 取得
quality : 質
driving, operation : 運転
appraise : 資産・能力などを評価する
by : ~によって,~を用いて,~に従って,~の近く
temporal sequence : 時系列
from : ~から
restriction : 制限
room inside : 室内
foreground : 前景
variance : 変化
verification : 照合
talk back : 反応する
goal, object, view : 目的
uniquely : 一意的に
decide, resolve : 決定する
elbow : 肘
restriction, limitation : 制約
improvement : 改良
at a time, at the same time : 同時に
reduce : 少なくする
with or without : 有無
describe : 表現する
line break : 改行
remaining time : 残り時間
evaluate : 評価する
scanning : 走査する
This is when~ : ~するのはこのときである
comparison : 比較
barometer : 指標
mutual : お互いの
in order to : のために
peak : (過程の)頂点
in the beginning, first(ly) : 初めに
use (for) : 利用する
furthermore, besides, moreover, and more : さらに
overlap : 重なり
prediction : 予測
as for, about : ~に関しては
in, on, at, regarding : ~において
actualize : 現実化する,実現する
so as to, in order to : ~するために
according to, by, due to, because of : ~に因り
consequently : その結果
bring into : もたらす
decrease : 減らす
inadequate : 不十分な
monocular : 単眼
2011.09.06 07:43 | EDIT
 time.hをインクルードすれば,現在時刻を獲得できます.
 time_t型の変数に格納されているデータを時間に変換して,tm構造体に格納します.年月日時分秒などのデータを使うことが出来ます.

時刻を表示するサンプルは以下の通り


//time.h, stdio.hをinclude

time_t timer; // 時間の格納元
struct tm *ts; // time structure

// 日本時間(localtime)に変換
time(&timer);
ts = localtime(&timer);

//年月日、時刻を表示
printf("%d/%d/%d %02d:%02d::%02d \n",
ts->tm_year+1900,
ts->tm_mon+1,
ts->tm_mday,
ts->tm_hour,
ts->tm_min,
ts->tm_sec);


2011.09.06 07:39 | EDIT
 12/9-10に行われた,ViEW2010のスタッフ,発表,聴講をしてきました.

ViEW2010page


 国内ではかなり大きなワークショップということで,新しい手法や異分野の手法を使っていて勉強になる研究,実利用のために力を入れている研究などありました.

 一日目はHCI(講演者の暦本純一先生は人間と技術との整合という意味でHuman Computer Integrationと呼んでいた)の基調公演から始まり、人物検出や外観検査の研究が発表されているという印象でした.

 特別公演では岐阜大学名誉教授の山本和彦先生が「分野を貫く技と研究者魂」なるテーマで講演されていました.山本先生は,人間は簡単な特徴で外界を認識していると仰っていて,画像認識をする際には識別器ではなくて特徴量をしっかり考えないといけないと話していました.さらに,"画像をぼかすと見えてくるものがある"ということを前々から主張していて,文字認識なんかでも真面目に1ピクセルずつ比較していると位置ずれに非常に弱くなってしまいますが,ぼかして比較すると位置ずれを解消できるという理論を提案しています.さらに,ぼかすことで解像度を低くして,処理も高速にできるという仕組みです.今回は山本先生の講演が非常に印象に残りました.

 ViEW2010ではアルゴリズムコンテスト受賞者の発表もありました.今回は「細胞のトラッキング」が課題で,局所的な輝度の変化や細胞の大きさや形状の変化,遮蔽などを含む画像から特定の細胞のみを追跡するという難しさがありました.
 基本的には,前処理→二値化→追跡 という流れで処理されていました.面白いと思った研究は,位置毎に閾値を変える適応的二値化処理をした上で,前フレームからの大きさ,位置などの評価関数の結果で対応付けるという流れで細胞を追跡していました.

 二日目の最初には,「マルチコア時代の車載画像認識システム」というテーマで,東芝の研究開発センターの方が発表していました.講演では東芝が考案したCoHOG (Co-occurrence Histograms of Oriented Gradients)と呼ばれる検出手法,車載ハードViscontiの説明がありました.直接質問に行ったところ,研究所にはソフトとハードに詳しい人がいて,両方の面を理解しながら実用化のために日々研究をしていること,CoHOGの特徴次元数を減らすために努力していると話して下さいました.
2011.09.06 07:38 | EDIT
 refという修飾子をつけてクラスを宣言することで,ガベージコレクションの対象クラスとなります.ガベージコレクションでは,動的に確保したメモリ領域を解放してくれる機能を持ちます.ref class では gcnew を使えば delete をする必要がないため,メモリリークや二重に delete をしてしまうなどがなくメモリの管理がしやすいと言えます.

//ref classを定義
ref class A
{
}
//ref classを使用する
int main()
{
 //ref classを宣言
 A^ aClass = gcnew A;

 return 0;
}
2011.09.06 07:37 | EDIT
 表題の研究会に行ってきました.地元の茨城県で開催されたので凄く楽しみにしていました.会場のデュープレックスセミナーホテルは受験の勉強合宿やその他勉強会,合宿所としても使われるそうです。学会の詳しい情報は以下の通り.

学会:第15回パターン計測シンポジウム(第83回パターン計測部会研究会) ~世界に羽ばたくパターン計測~
主催:計測自動制御学会 計測部門
日時:2010年12月3日(金)~4日(土)
会場:デュープレックスセミナーホテル(茨城県守谷市)
URLはここ


研究会のメモが残っている研究について話します.
(完全な主観や誤り,勘違いがあるかと思いますので,ご了承ください。)

・3次元形状計測に基づく通過者の匿名識別
 一般家庭で使うことを想定し,数人単位の識別を体型比較により実現しています.3次元計測スキャナを通過する人物から身長とウエスト,2つのパラメータを抽出し,人体計測データベースと比較することで識別をしていました.スキャナから得られる情報は時系列毎に量子化した形状データで,これらを時系列上に重ね合わせることで人物の特徴としています.複数人が同時にスキャナを通過する場面においてはラベリングにより重心を分離可能とのことでした.


・周辺視野における気づきに関する考察
 中心視野と周辺視野の役割の違いから,効果的な情報提示方法があるのではないかという検討をしていた研究でした.
 視野について中心禍が一番視力があり,中心から2度角度がずれると視力は半分になると言われています.しかし,中心視野と周辺視野では特徴が異なり,視覚刺激に対する反応が違うといいます.その違いから,それぞれの視野に提示すべき情報があるのではないかを検討していました.その中で,敏感な反応が必要な時には周辺視野に情報を与えるといいみたいです.
 実験はライトを点灯してからの反応時間を計測していました.ライトの位置は正面から少しずつ角度をおいて設置しています.そのとき,中心から20度前後ずらした位置が有効ということでした.これは,瞬時に反射する際に必要な桿体が中心窩には無く,10~20°付近で密度が高くなっていることから言える反応であることを示していました.


 その他にも細胞の検出に関する研究や口の形状を認識する研究など,有用性のある研究は多くありました.
 また,夜の懇親会においても大学や研究室の文化,学会の先生のお話についてや教員になる大変さなどについて他大学の学生や先生とお話しする機会があり,楽しく実りのある研究会になりました.知り合いも増え,今後につながる1泊2日になりました.
2011.09.06 07:35 | EDIT
「ITテキスト 人工知能 本位田真一,松本一教,宮原哲浩,永井保夫」

ittext


目次
第1章 人工知能の歴史と今後

第2章 探索による問題解決

第3章 知識表現と推論の基礎

第4章 知識表現と利用の応用技術

第5章 データマイニング

第6章 知識モデリングと知識流通

第7章 Web上で活躍するこれからのAI

 人工知能とは何か,や過去・現在の研究分野(といっても前に出版されているので,どうなのかはわかりませんが...)といった導入から始まり,基礎知識として探索アルゴリズムや論理学,知識の表現方法を学びます.実際の研究事例の紹介としては,データマイニングと知識モデリング,セマンティックWebについて触れています.

 人工知能とはどういう分野なのかや,基礎知識を得るための一冊であると感じました.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。