2008年12月31日 星期三

[進度]測資處理進度

11/20: face_info, face_desc, face_desc_reduce, cloth_desc, background_desc (done)
11/21: face_info, face_desc, face_desc_reduce, cloth_desc, background_desc (done)
11/27: 正在跑face_info(需要13 hrs)
12/01: face_info, face_desc, face_desc_reduce, cloth_desc, background_desc (done)
12/02: face_info, face_desc, face_desc_reduce, cloth_desc, background_desc (done)
12/03: face_info, face_desc, face_desc_reduce, cloth_desc, background_desc (done)

2008年12月29日 星期一

[進度] Clustering (Cont.)

以臉為單位

只分成"有1~2face"跟"沒有或太多face"兩群

對"有1~2face"這群做K_means

feature = shot + cloth

嘗試了k = 15~27

其中只有k = 20,25兩組結果不錯

其它都至少會有兩個以上cluster會有混雜的情形


然後大概看一下,很少有"兩個人的相同shot"被分在不同cluster的情形(還是有)

接著可能要把cloth feature換用face feature試試看?


2008的倒數第二天了...

2008年12月28日 星期日

[進度] Clustering

目前由FindAllFace找出一集中所有shot的featrure(跑一次好像要13小時~"~)

以及找出每個shot中代表臉/最對稱臉的cloth feature


由於直接對所有shot做K means效果好像沒那麼好

所以採取"先分類再K means"的方式

並打算以cloth feature作為輔助

目前都先以12/01的<康熙來了>前500個shot做測試


第一種分類方式是由face的scale來分成三群(<25,>25,no face/too many faces)

但是結果並沒有很好,而且有可能造成相同鏡頭但是臉scale有差的被分到不同群

總之結果沒有想像中的好


第二種分類方式是由face的數量來分成三群(1,2,0/>3)

第一群的結果一直都沒有很好,僅僅在k=17~20之間會得到"還可以接受"的結果(至少都有兩cluster會發生錯誤),猜測是因為有很多只抓到一張臉的情況實際上都不只一張

第二群的結果還不錯,k=5,6,9,10都可以得到不錯的結果(一個左右的cluster錯誤),但k>=9會發生單個cluster內容是差不多shot沒錯,但可能出現有兩個cluster的shot其實是應該擺在一起的狀況


本來要用衣服做輔助,將衣服feature接在shot feature後面再跑K_means

但是在第一種分類方式,臉數不同會造成freature長度不相同,所以沒辦法

第二種分類方式仍不確定


昨天有想到個想法是說,把現在"以shot為單位"的做法

改成"以face為單位",就是feature = shot feature + face feature + cloth feature

然後有detect到的face全部去做K_means

相同shot的話shot feature會相同,所以理論上會被分在一起

但是相同shot中不同人,也會因face feature + cloth feature而有影響力

不知道可行度如何,待實驗


應該要再想想跟實驗看看吧...

還有要想跨年要去哪邊 :)

2008年12月24日 星期三

[進度] K-means

Gina想到說用K-means來對shot做clustering

把相同攝影機/鏡頭角度的shot都找出來(相同角度找到的應該都會是同一個人)


http://www.mathworks.com/matlabcentral/fileexchange/19344

從這個網站找到別人寫好的matlab code,直接拿來用

嘗試把一整集每個shot取一張key frame的feature points(16 bin*3 colorspace*4 block)

丟進去做clustering

出來的結果(base on 我手邊幾個frame用觀察得到的ground truth,沒有全部)

在K = 30的時候其實已經算準了(btw,我容忍度頗高,看文字檔覺得差不多了,可是還是等看實際shot再說)


應該再配合上利用shot中face的scale先簡單做個分類

再拿來做clustering,會得到更加準確的結果


Merry Christmas :)

2008年12月17日 星期三

一個shot中代表的臉

找可以用來代表這個shot的臉

之前已經利用face detection找出各frame的臉,並利用臉中心的距離分辨出哪些是屬於同一個人的臉

把出現次數過少的當作是error排除,只留下出現次數多(超過一半frame數)的臉

接著要從這些臉中找出"一張"代表用的臉

既然是要代表用的,那應該找"盡量正面"的臉

正面=>臉的對稱性高

所以把detect到的face分為左右兩半做比較


嘗試了兩個做法:

一是比對左右臉的histogram,另一是把臉灰階化之後對稱的pixel相減

用在只有一個人臉部特寫,有臉部轉動的shot中

效果都不是很好~"~


想別的方法中

shot間的clustering

1.
在特寫一個人的鏡頭中,global histogram的變異仍然很大(0.4~1.03)

如果鏡頭中有兩個人,則global histogram的變異很小(0.33~0.55)

所以用global histogram來做shot間的clustering這個方法

可能只適用於遠一點的鏡頭

如果是特寫,就要把臉、衣服、背景都拿進來做加強

另外,特寫時臉的scale會很大

2.
a. 同一個人的特寫
b. 這個人與其他人一起入鏡的鏡頭

a.與b.用global histogram的效果也有限(0.62~1.04)

3.
沒有相同的人的效果不錯(0.99~1.27)



conclusion
:
global histogram適用於
a. 把沒有相同的人出現的shots分開........................3.
b. 把有相同的人出現的遠shots放在一起................1.

global histogram不適用於
a. 同一個人出現的特寫..............................................1.
b. 同一個人的特寫以及與別人一起出現的鏡頭......2.

2008年12月16日 星期二

schedule

12/14: shot => episode
1. 字幕拿掉
2. 用scale測試臉的中心點
3. 衣服的部份拿掉字幕
4. background要輸出, 直接扣掉臉, 不拿掉skin pixels
5. clustering: 分辨掌鏡模式
a. 不同shots間的比對用到的Features: global histogram, (face, cloth, background)
b. 不同clusters間的比對用到的Features: face, (cloth, background) (同一個人可能出現在兩種不同掌鏡模式)
6. 整理測資

12/21: episode => program
1. 每集之間的比對: 以close-ups鏡頭的cluster取出key-face, cloth以及background不再列入考量, 因此key-face要取的很好
2. (UI)

12/28: testing
1. (UI)
2. 蒐集不同節目有相同來賓的測資

1/4: final version
powerpoint, oral presentation, 最後測試

2008年12月13日 星期六

[問題] Find Face

現在先把影片切成shot,然後在shot中找face

理論上只要把每個frame丟進去做face detection,然後將得到的結果

利用相鄰frame中同一face的中心距離不會太遠的特性,來判斷是不是同一個face

然後在看這個face出現的frame占整個shot的長度(目前是設50%,我覺得可以再調降?)

來判斷這些face是否可代表這個shot(誤判為face的出現次數應該不多)


可是,這樣會變成,"側臉或face detection無法detect出來的臉"被忽略掉

之前的想法是,只要影片中detect到一張face,就往前後範圍去比對,然後找到這張臉出現的片段

(這個片段其實在大部分的情況就是一個shot,例外情況是攝影機移動,造成這張臉消失在鏡頭內)

可是要是detect到的不是face,然後往前後找,不管用什麼方式(histogram、取下面可能是衣服的部分、或trace等方法),一樣會找到一整段錯誤的片段

(ex:將某段背景區塊誤判為face,但該區塊變動度很小,不管用上面哪個方法我覺得最後都會抓到整段shot,可是事實上這不是face)


[簡單總結]:

一張或多張臉可以清楚被detect(即使在shot中有移動或稍微側面) => 可以被找出來,並代表這段shot

偶爾出現的false positive => 可以被忽略掉,不會被當成這段shot中出現的臉

整段shot都側臉,偶爾才被detect到的face => 有問題= =a

2008年12月6日 星期六

[guess] 解析度對face的影響

目前準備拿來當training data的影片解析度有兩種,600*480跟32x*24x

在想有沒有可能會因為解析度而對結果產生影響

[原因]:

不論解析度如何,face detection都可以把face找出來

可是現在除了找face之外,還要丟出face的feature points(eyes * 4,nose*3,mouth*2)

如果是同一張臉,會不會因為在不同影片的解析度不同,取到的這9個points有差異(取在臉的不同位置上)

造成normalize後跟query image比較的時候,會有解析度高會被辨認出來,而解析度低的被當成是別人的情況


會這樣猜是主要還是用臉來辨認是不是同一個人

但我其實不確定會不會有上面講的影響,影響多大,不過如果加入衣服或背景當作輔助應該可以修正回來

總之是先做了之後再視結果調整

先把猜測記錄下來^^

2008年12月4日 星期四

New Topic

今天跟winston討論之後,決定修改一下題目的方向。

把video的部份擴大為"談話性節目",而不是原本只focus在模仿秀裡面。

根據觀察,在談話性節目中,通常在敘述一件事情時,鏡頭都會集中在某個人身上,而在這些frames中,應該可以取到正面,根據正面的臉再取出local features作為face descriptor.

另外,我們打算用以下幾項特性作為加強的部份:
1. cloth: 同一集節目,通常會穿同一件衣服
2. 髮型: 同上
3. 背景: 通常是坐在同一個位置上,所以取臉附近的背景作為判斷

2008年12月3日 星期三

[observation] 節目流程

通常"一集"的角色結構大概是:

主持人:會有一個主要負責每段開頭跟把講話機會交給其他人的人

主角A:會坐在中間,通常是時事名人,畫面也很多,講話有優先權(?)

配角群:左右各一組,講話的時候鏡頭容易被帶走去拍別人的反應

小咖群:通常被放在旁邊小舞台,會被排特定講話時間,一集出現個兩三次而已,出現時間集中


流程的話:

開場:主持人介紹各個來賓,每個人會有比較連續的鏡頭

<廣告>

段落一:主持人開場之後就會給大家討論今天主題

小咖一(?):給小咖講個話

單元劇一:特定主題單元劇,角色比較固定
<廣告>

段落二:同段落一

小咖二(?):同小咖一

單元劇二:跟單元劇一不同主題的單元劇

<廣告>

段落三:同段落一二

小咖三:同小咖一二

<廣告>

結尾:主持人會先講話,然後交給其中一個角色做結尾


相同單元劇出現的角色都相同,所以比較好辨識;

小咖出現段落比較集中,但偶爾還是會穿插拍其它人反應或互動;

難度最高的應該是斷落的討論中,因為一個人在講話,可能中間為了要拍其他人反應,而有很多跳來跳去的鏡頭

ex:(A speaking) A (10sec) -> B (3sec) -> C (3sec) -> A (5sec) -> C (3sec) -> D(3sec) ...

如果先切成shot的話可能會造成畫面變得很零碎,所以後來我們討論的結果是,以每段節目作為單位,看被query人物的出現頻率/時間,來決定是否將這段歸類到該角色有參與演出

(可以避免掉都沒有講話,只是出來陪笑的無意義畫面;可是其實我覺得這邊還有值得討論的地方)


另一個想法是提高開場那段的weight,因為會讓各角色自我介紹,"連續出現時間"理論上會比節目後面長,可以利用這點


大概就是這樣...

--

我絕對沒有很有研究ˊˋ

流程

video
=> frames
=> cut by ads.
=> parts * about 15 mins *
=> face detection within a part * openCV *
(=> face tracking within a part * KLT * )
=> local feature extraction for each face * paper *
=> distance matrix * paper *
=> score = appearing time + visual similarity
=> output

Observation

1. shot很短,很多shot只是在捕捉其他表演者的表情
=>不以shot為單位,以進入廣告時為切割點

2.通常會加上手勢、口頭禪、聲音特色等來加強模仿效果

3.模仿同一個人,通常衣服、髮型不會改變
=>可以拿來當判斷的依據,但是weight會比face的部分低

2008年12月2日 星期二

Who am I ? - Actors in Impersonation Shows




There might be 2 parts in our final project.

part I.

input:
query image: 被模仿的對象

output:
把在同一集節目當中的模仿片段接成一段video
不同集的節目以不同的title標示出來,讓user可以選擇想看哪一段video

ex.
input: 陳菊


output: 白雲模仿的陳菊
(這裡先以image代替video)


part II.

input:
query image: 專門模仿別人的表演者

output:
針對這位表演者曾經模仿過的每一個對象分別找出shots來接成一段video

ex.
input: 郭子乾

output:被郭子乾模仿的人
(這裡先以images代替videos)

2008年11月14日 星期五

[MMAI] Project Topic 補充

1.
user input: a image and a keyword
limitation: landmark

2.
把keyword放到flickr做搜尋之後會回傳大量的圖(可能是以tag作為搜尋的基礎)
接著根據input image來過濾照片
目的是要找出拍攝角度相似的照片

3.
在過濾之後
我們再把這些從相同角度拍出來的landmark根據以下兩個軸做分類
時間軸一: midnight(dawn), morning, afternoon, and evening
時間軸二:spring, summer, fall, and winter
用這兩個時間軸將所有得到的照片分成多個clusters

4.
利用不同的clusters中的照片的共同特性來編輯input image
這部分可能由學長來做

[MMAI] 備用Idea

1.以文找圖

 輸入tag,找到跟這個tag相關的圖片,以及如何增加準確度

2.以圖找文

 輸入image,跟資料庫內的image做比對,選出相似的,以這些圖的tag作為query image的tag

3.實際應用

 將上面兩項實際應用在網路拍賣上

4.背景分離

 如何將一張"有主角/目標物"的圖片的背景分離,以減少query時背景造成的noise

5.產生face

 隨機從資料庫中選圖讓使用者打分數,利用這些分數 找出資料庫中/產生出 使用者最尬意的臉
 (不過要有這個資料庫是個大工程...~"~)

以上是討論中出現的其它idea

(有漏掉什麼還麻煩Gina補充一下)

[MMAI] Project Topic(暫定)

 對很多相同角度拍攝的landmark照片們做cluster

 分類出這個地標在一天中不同時間及不同季節的照片

2008年11月13日 星期四

MMAI Final Project

要開始決定題目了,歡迎大家給予意見 :)