# 專題內容描述以及大概 ## 實驗設計模型 * model1: 目的: 分辨身分 架構: 上面是擷取身分特徵的encoder(運用cnn1d+Flatten)下面接一個classifier(幾層dense) 圖示: * model2: 目的: 分辨動作 架構: 上面是擷取動作特徵的encoder(運用cnn1d+Flatten)下面接一個classifier(幾層dense) 圖示: * model2.5: 目前: model1+disentangling * model3: 目的: 分辨動作及身分 架構: 上面是擷取動作和身分的encoder,下面分別接著兩個classifier(一個辨識身分一個動作) 圖示: ![](https://i.imgur.com/kx6gBPJ.png) * model4: (冠傑寫的那個 目的: 分辨動作及身分,但簡化層數和參數數量 架構: 跟model3 87%像,就差在classifier只有一層,然後encoder沒有最下面那個分開的feature dense,classifier 是直接跟倒數第二層連接 圖示: * model5: 目的: 分辨身分及動作(改良自model3) 架構: 最上面是擷取動作及身分的通用型encoder(即model3之encoder),下面再分別接著兩個特別的encoder,一個是動作encoder一個為身分encoder,兩個encoder下各自在加classifier藉以分辨動作及身分 圖示: * ![](https://i.imgur.com/NRdIdFc.png) * * model6: 目的: 分辨身分及動作(改良自model4)並加上disentangling藉以將去除掉不想要的特徵,進而改善分辨的效果並更具通用性 架構: 基本上承製model4,但多加兩個discriminator去除掉不想要的特徵(像是若想要分辨身分,則希望能夠去除掉動作特徵) 圖示: ![](https://i.imgur.com/z35PHkL.png) ## model1 和 model2 ### 起初的想法(model1和model2) 如果以model2辨認動作為例,想說辨認動作應該不是一件難事,因為不同的動作理論上來說會差很多,也就是說動作特徵會特別明顯,明顯到就算是不同的人做也會很好辨認,所以我們認為應該不用特別去在意身分的特徵,因為那占比不重,不太會影響到結果 希望建立出來的模型能夠generalize,不只是單單辨認看過的資料 ### 架構圖 #### model 1 ![](https://i.imgur.com/msjcdPH.png) #### model 2 ![](https://i.imgur.com/GGYGr2h.png) ### 實驗結果 #### model1實驗結果 資料三七分 ![](https://i.imgur.com/QWDobyy.png) ![](https://i.imgur.com/NjWy2MY.png) ![](https://i.imgur.com/jZjWrDb.png) 只train四個動作,test第五個動作 ![](https://i.imgur.com/zNmXpXP.png) ![](https://i.imgur.com/FxZOCjC.png) ![](https://i.imgur.com/MsesD9T.png) #### model2實驗結果 ![](https://i.imgur.com/OzrTy4h.png) ![](https://i.imgur.com/fEKkCK5.png) ![](https://i.imgur.com/ceG5HMD.png) 只train三個人,test第四個人 ![](https://i.imgur.com/9UZQ3Tk.png) ![](https://i.imgur.com/XpxyqVT.png) ![](https://i.imgur.com/EW8LSo7.png) 結果圖 結果整理 與上述想法之差異問題 ### 實驗結果之想法 從三七分資料的實驗結果辨認正確率來看,確實如同我們起初的想法,正確率非常的高,但是發現當我們把encoder出來的feature用tsne降維顯示出來,會發現其實並沒有達到我們理想的結果,因為其實在同一大團中,還是可以看出裡面有些分明,所以我們猜想,或許當我們換個資料,讓測試資料是訓練資料中沒有看過的,理論上結果應該要會不好,於是就設計了下個實驗,用直接拿掉某個人或某個動作當測試資料,剩下的那些當訓練資料,出來的結果如預期,並不是太好,於是我們打算在利用disentangling去除掉不想要的特徵,希望能夠使一塊一塊地現象消失,這樣或許才能使沒有看過的資料也能夠一般化 ### 實驗結果之猜想 因為我們看model1,2化出來的tsne圖發現那個一塊一塊的問題,代表說,其實pure cnn是無法這麼有效的去除不想要的特徵,還有殘留另一種特徵,因此想說,那不如我們固定好encoder,再去練一個新的classifier用來分辨殘留的特徵,但是結果是train不起來,訓練了3000次,train Acc還停留在0.5,0.6徘徊,這說明,雖然有殘留但不足夠到能夠訓練起來,於是就想說,既然單純cnn無法消除不要的特徵,那就有兩種方法 1. 既然打不贏,那就加入 2. 就是要消除 ### 改善問題之新的方法 #### 消除他 加上disentangling model1.5 ![](https://i.imgur.com/ms1oHdM.png) 加上disentangling model2.5 ![](https://i.imgur.com/WwGclmG.png) model1.5 & 2.5 ### model1.5結果 | 用action label來區分顏色 | 用identity來區分顏色 | | -------- | -------- | | ![](https://i.imgur.com/xcMVvVL.png) | ![](https://i.imgur.com/8GGBjay.png) | #### 既然打不贏,那就加入 model 3~6 ## model3 model4 (這個可能取一個就好,因為兩個本質上是一樣的) ### model3 結果 * 以encoder倒數第二層之dense 出來之 feature(混和動作及身分特徵) | 以action label來分顏色 | 以identity來分顏色 | | -------- | -------- | | ![](https://i.imgur.com/MClaxve.png)| ![](https://i.imgur.com/oRM9ZNG.png)| * encoder 出來之feature | action feature| identity feature| | -------- | -------- | | ![](https://i.imgur.com/s9JEIPQ.png)| ![](https://i.imgur.com/lhXWw07.png)| ### model4 結果 | action labels| identity labels| | -------- | -------- | | ![](https://i.imgur.com/44GVdaI.png)| ![](https://i.imgur.com/ROG9PHg.png)| ### model3,4結果之結果 確實encoder抓到了既包含動作又包含身分的特徵,導致分成了20個一塊一塊的問題,而且更加明顯,一般化問題依舊沒有達成 ### model3 4結果之猜想 因為encoder是共用的包含了兩種特徵,那想說再訓練個專屬化的encoder從共用特徵中再來抓取想要的特徵,所以設計了model5 ## model5 ### 實驗結果 #### model5之結果 * feature representer 出來之 feature(動作及身分特徵) | 以action label來分顏色 | 以identity來分顏色 | | -------- | -------- | * encoder 出來之feature | action encoder| identity encoder| | -------- | -------- | | ![](https://i.imgur.com/wLtVecR.png)| ![](https://i.imgur.com/b4hc4gZ.png)| ### model5結果之想法 跟model3比起來,確實比去掉了一部份的不想要的特徵,但是效果並沒有到預期的那樣融成一塊,如同model1,2那樣(三七分的情況)的結果 ### model5結果之猜想 就想用跟model1.5,2.5一樣的disentangling網路來去除掉不想要的特徵 ## model 6 #### model6之結果 37資料 * encoder 出來之feature | action encoder| identity encoder| | -------- | -------- | | ![](https://i.imgur.com/NcXuFOe.png)| ![](https://i.imgur.com/WFjtV6r.png)| #### model6結果之想法 #### model6結果之猜想