# Fake News
###### tags:`NCTU Project`
---
### 2020/09/23
## 會議記錄與分工
* 以影像(受訪人的比對)為主要判別方式
* 爬新聞影片, 以單則(約三分鐘)之新聞為主
* 將影片前處理(Sampling), 大約$1 frame/s$
* 建立受訪人臉Database, 以現有已train好的model處理
* 尋找臉部偵測模型
* 靜
* 研究是否可以用pytube sample frame, 而不要存整部影片
* 峰
* 決定要爬的欄位,分析youtube影片的頁面的html,並將資訊寫進pandas的dataframe中,最後可以存成一個csv檔
* 華
* 取得影片的url列表,例如怎麼爬一個頻道的列表。所以可能要決定爬哪一個頻道,或是怎麼爬特定主題的新聞,或是下關鍵字之後再用時間跟長度作限制來爬列表
* 柔
### 爬蟲資料格式(csv)
* ID(url)
* Title
* Author
* Length
* Hashtags
* Upload_date
* Description
| ID | Title | Author | Length | Hashtags | Upload_date| Description |
| -------- | -------- | -------- | -------- | -------- | ---------- | ----------- |
| f6MrNLCyxW8 | 縣市競爭力首奪冠! 新竹市跨越"台北障礙" | TVBS NEWS | 79 | ['新竹', '台北', '林志堅', '新竹', '台北', '林志堅'] | 2020-09-28 | #新竹#台北#林志堅\n\n●訂閱【TVBSNEWS】最新資訊馬上接收👉https://tv... |
### YouTube影片路徑
```
Data/2020-09-30/Title0.mp4
Data/2020-09-30/吃安眠藥後開車撞死人! 孝女慘死輪下.mp4
Data/2020-10-01/嘉義「共匪餅」登香港TVB引爭議 店家錯愕:是暱稱.mp4
...
```
---
### 2020/09/30
## 會議記錄與分工
* csv部分增加Description
* 柔
* FaceNet + Adaptive Thereshold, OpenCV + dlib 最新版本比較
* 靜, 華
* 直接存影片, 不Sampling(圖檔太大)
* 兩個csv(爬蟲, face recognition)
## 進度報告
### 柔:
* 撰寫爬蟲,輸入一個Youtube playlist,擷取所有影片的資訊(id,title,author,length),並下載影片。尚未處理Hashtag與description。
### 靜:
* 研究face recognition模型,目前找到的模型是2015 google facenet
---
### 2020/10/7
## 會議記錄與分工
* 支線:影片相似度比對(Dynamic time warping)
* 華
* 未來需要前端介面
* 建立database
* 柔
* facenet跑起來
* 靜
* facenet有無find tune功能
## 進度報告
### 華:
* facenet與dlib比較
* [Comparison of face detection](https://www.kaggle.com/timesler/comparison-of-face-detection-packages)
* [Face detection algorithms comparison](http://datahacker.rs/017-face-detection-algorithms-comparison/)
### 柔:
* 完成爬蟲,包含新增hashtags、description欄位、解決鎖ip問題、處理exception (欄位格式不同、連線異常),調查主流新聞媒體YouTube頻道的播放清單。
### 靜:
* FaceNet: A Unified Embedding for Face Recognition and Clustering </br> https://arxiv.org/pdf/1503.03832.pdf
* Data-specific Adaptive Threshold for Face Recognition and Authentication </br> https://arxiv.org/pdf/1810.11160.pdf
* 瞭解這兩篇paper的network架構
---
### 2020/10/14
## 會議記錄與分工
* 提升爬蟲更新效率
* 以關鍵字搜尋相關新聞
* 柔
* 使用faceNet擷取影片frame中出現的人臉
* 決定以什麼樣的方式建立face與person的table
* 靜
* 進行更影片相似度比對的實驗,以了解model的能力
* 華
## 進度報告
### 柔:
* Database : MySQL
* ER Model

* 轉移資料、改寫爬蟲
### 華:
* [ICCV_2019_ViSiL: Fine-grained Spatio-Temporal Video Similarity Learning](https://openaccess.thecvf.com/content_ICCV_2019/papers/Kordopatis-Zilos_ViSiL_Fine-Grained_Spatio-Temporal_Video_Similarity_Learning_ICCV_2019_paper.pdf)
* [github](https://github.com/MKLab-ITI/visil)
* [demo](https://drive.google.com/drive/folders/1HGaCni74lcgESHs6U3S_Q45B2iQAFvF1?usp=sharing)
* 
---
### 2020/10/21
## 會議記錄與分工
* ViSiL投影片
* 華
* 資料視覺化, 相似度矩陣
* 定時爬蟲
* 柔
* 找label face data的方法
* 靜
## 進度報告
### 柔:
* 可使用關鍵字進行爬蟲
### 華:
* Gold Sample: 300 * 300 1hr
* Ouputdata整理
* Same video similarity
* Avg: 0.96
* Max: 1.0
* Min: 0.796
* Min video: 1288-159
* [Video](https://drive.google.com/drive/folders/1uWGevMymtFrDh6gRcRtlWLEgQWAMddko?usp=sharing)
* threshold?除了自己以外找相似度前K名?
### 靜:
* 找到所有人臉的embedding,用DBSCAN分群,不同的臉被分在同一群,相同的臉分到不同群
---
### 2020/10/28
## 會議記錄與分工
* 利用t-SNE降維的結果,製作互動介面,幫助label人臉的作業
* 柔
* 釐清finetune faceNet時,input的細節與整體流程
* 靜
* How ViSiL model transfer triplet loss (distance) to similarity output
* 前處理介面(方便自動化使用以銜接已有之系統)
## 進度報告:
### 柔
* 完成YouTube爬蟲,透過windows排程,於每日23:58執行更新的batch程式
* 將人臉的embedding,透過t-SNE降維後視覺化


### 華:
* Paper Study
* 
* Spatial: frame to frame(Tensor Dot + Chamfer Similarity)
* Temporal: video to video(Chamfer Similarity)
* Triplet Loss
---
### 2020/11/03
## 會議紀錄與分工
* Trace visil code
* 華
* Labeling介面修改
* 新增欄位enbedding、label到face table
* 以下拉式清單的方式讓使用者label data
* 進行database的測試
* 柔 or 靜
## 進度報告:
### 柔
* 撰寫Labeling介面
* 使用Flask + D3.js + mysql.connector
* 測試階段,尚未結合database
* 縮放(zoom)與選取(brush)整合與移除清單項目功尚未完成

### 華:
* use hard tanh activation function to evaluate output
* video to video similarity to loss function
* 
* loss function
* 
* 
* evaluate
* Near-Duplicate Video Retrieval
* Fine-grained Incident Video Retrieval
* Event Video Retrieval
* Action Video Retrieval
---
### 2020/11/11
## 會議紀錄與分工
* 增加刪除label功能
* Labeling介面整合
* 允許外部存取介面
* 柔
## 進度報告:
### 柔
* 完成前處理程式
* 修改data檔案結構
```
# data
|__video
| |__<video_upload_date>
| |__<video_url>.mp4
|
|__face
| |__<video_upload_date>
| |__<video_url>
| |__<video_id>_<face_frame>_<face_no>.jpg
|
|__labeled_face
|__<face_label>
|__<video_id>_<face_frame>_<face_no>.jpg
```
* Face table欄位新增:face_embedding、face_label、face_no
* 撰寫Labeling介面
* 縮放(zoom)與選取(brush)整合,但選取有錯位問題
* 可使用影片上傳時間過濾顯示的face
* 可移除選取清單的項目
* 與Database串聯
* Labeled face image移動

### 華:
* 發現錯誤影片
---
### 2020/11/18
## 會議記錄與分工
## 進度報告:
### 柔
* 可刪除label
* 介面整合完成
* 可由[http://140.113.210.9:5000](http://140.113.210.9:5000)連至介面
### 華:
* Preprocessing -> visil -> Outputprocessing
* Preprocessing: 完成錯誤處理
* Outputprocessing: 留下相似度正的並排序
* trace code
* Code非training code為使用train好的model的API
---
### 2020/11/25
## 會議紀錄與分工
* 語音相似度?
* 先尋找僅有文字與聲音的影片有多少
* 影片相似度結果視覺化
* Visil CPU/GPU 確認
## 進度報告:
### 靜:
* 標記用google image抓下來的圖片
### 柔:
* 增加mouseover事件
### 華:
* Experiment
* Queries:TempVideo (881)
* Database:Gold Sample (299)
* Cost: 3hr
* Ouput: Some similarity videos
* CPU/GPU ??
* The same videos have 0.75 similarity at least
---
### 2020/12/02
## 會議紀錄與分工
* model fine-tune (fix layer or not)
* plot vaildation acc curve
* sample label data
* try clustring
* how to choose repersatitive feature
## 進度報告:
### 柔
* 增加顯示新聞縮圖功能

### 華:
* Demo網頁雛形[http://140.113.210.7:5000]
* 
### 靜
* fine-tune model
* (train 0.98 val 0.90)


紅色:陳時中 藍色: 蔣萬安 (但主要還是看accuracy)

---
### 2020/12/09
## 會議記錄與分工
* visil site
* User upload video to server
* Server response results
## 進度報告:
### 柔
* 標label (2020/08/24-11/10)
* 1,129部影片
* 101個政治人物
* 15,078張label
### 華:
* 網頁影片顯示完成
### 靜:
- 檢查有標記錯誤的data
- 爬更多的data
- fine-tune (20 epochs)
- WeightedRandomSampler
- 根據每個class的數量給不同的weight,weight = 1/class_num
- weight作為每個class的data被sample到的機率
- 更新所有的參數
- Train accuracy: 1.0000
- Validation accurazy: 0.9826
- 只更新最後兩層的參數
- Train accuracy: 0.9887
- Validation accurazy: 0.9650
- 只更新最後一層的參數
- Train accuracy: 0.9853
- Validation accurazy: 0.9607
- fine-tune
- update all layers
- acc

- fps

- loss

- update last layer
- acc

- fps

- loss

---
### 2020/12/16
## 會議記錄與分工
* visil
* 希望可以讓比對過程即時回傳
## 進度報告:
### 柔
* 標label (2020/08/24-12/01)
* 1,152部影片
* 137個政治人物
* 25,340張label
### 華:
* visil
* 使用者可上傳影片至server
* server將送進visil比對
* 使用者可透過選單察看結果
* (尚未解決)
* 上傳完後跳轉網頁造成server執行command不完整
* 執行進度顯示?
---
### 2020/12/23
## 會議記錄與分工
## 進度報告:
### 柔
* 標label (2020/08/24-12/21)
* 1,183部影片
* 141個政治人物
* 26,649張label
### 華:
* (這周去處理羽球計畫書)
---
### 2020/12/30
## 期末考
---
### 2021/01/06
## 會議記錄與分工
* face
* Use triplet loss finetune
* Use head pose estimation to filter the face data
* visil
* 確認單個frame, video存了多少feature
* 改變存檔格式(binary? npz?)
* 確認比對相似度速度(1:300 / 150 min, 300:300 / 5 min)
* 是否用全部feature
## 進度報告:
### 柔:
* Read faceNet paper
### 華:
* visil
* 將golden sample feature先存下來
* 但讀檔還是慢(27G)(約6分鐘)
* 計算相似度還是需要約5分鐘
* GPU問題尚未解決(已與玉米討論中)
---
### 2021/01/13
## 會議記錄與分工
* face
* 重新檢視計劃書
* visil
* 串成能demo的模樣
* 想辦法再加速
## 進度報告
### 柔:
* Head Pose Estimation
* [FSA-Net](https://www.csie.ntu.edu.tw/~cyy/publications/papers/Yang2019FSA.pdf)
* [shamangary/FSA-Net](https://github.com/shamangary/FSA-Net#for-lazy-people-just-like-me)
* [omasaht/headpose-fsanet-pytorch](https://github.com/omasaht/headpose-fsanet-pytorch)
* 使用omasaht的FSA-Net來測試


### 華:
* visil
* feature size: sec(per frame) * 9 * 3840
* ex: 180s video has 180 * 9 * 3840
* data
* json to binary(per video per file)
* 6 min to 5 s
* cal simularity
* 6 min to 6 s
* extract query video feature
* 6 s
---
### 2021/01/20
## 會議記錄與分工
* 本周開會取消
## 進度報告
### 華:
* visil
* 流程串起
* Server空的大概30秒
* 有其他 process 大概 1min
### 2021/01/27
## 會議記錄與分工
* face
* triplet loss
* visil
* 錄製 demo 影片?0
## 進度報告
### 柔:
* 重新閱讀假新聞計畫書,釐清系統功能
* 新聞蒐集
* 撰寫爬蟲
* 資料庫
* MySQL
* 新聞資料表
* 新聞關鍵影格擷取 (避免儲存高度相似資料)
* 人臉資料表 (過度資料表)
* 人臉偵測
* MTCNN
* Embedding擷取
* FaceNet
* Pose estimation
* FSA-Net
* 人物資料表
* 代表性embedding
* 公眾人物辨識 (系統自己學)
* 言論資料表
* 語音轉文字
* 文章摘要
* 人物關係表
* 前處理
* 擷取新聞中出現的人物 (增加人物比對效率)
* 使用者介面
* 人臉Labeling
* 新聞人物串聯
* 人臉偵測
* 選取人物
* 人臉驗證、辨識 (與人物資料庫比對)
* 輔助人臉辨識 (當系統辨識信心分數時)
* 顯示人物所參與過之新聞
* 新聞內容辨識 (新聞內容是否屬於相同事件)
* 演員警告 (非公眾人物卻同時參與不同新聞事件)
* 半自動公眾人物辨識
* 公眾人物名言錄
* 以時間軸視覺化
* 參與新聞日期
* 人物言論
* 新聞來源
* 公眾人物關係網路 (幫助民眾了解公眾人物之間的關係)
* 選擇公眾人物
* 選擇時間區間
* 顯示關係圖
* 同時出現在同一影格
* 同時出現在同則一新聞
* (定義可表現的關係)
* 使用 finetuned model 擷取 face embedding

* 新增 head pose feature 欄位至資料庫
* 增加 pose threshould 至 lebaling 介面

### 華:
* visil
* preload model and read data
* 1:30秒影片大約15秒回傳結果

### 靜:
* hesd pose estimation + finetune model
* 實驗
* 訓練
* all layer
* last linear layer and logit layer
* threshold
* 40, 30, 20
* 測試
* test set
* test set + head pose estimation(threshold 20)
* 每一組都獨立訓練五次
* validation accuracy最高的model會存下來



### 2021/02/02
## 會議記錄與分工
## 進度報告
### 柔:
* 使用 DBSCAN 分群
* 閱讀arcface paper
* 嘗試使用arcface 產生embedding
### 2021/02/24
## 會議記錄與分工
* Fake news
* 調整embedding維度(256、128),再進行clustering
* 視覺化用triplet loss finetune後的結果
* Dimesion reduction
* 對paper中提到的其他dataset做實驗
* 跑學長的[程式](https://github.com/jxcodetw/Parametric-DR?fbclid=IwAR3hdlwaduI6jo1vcFEmWsziIj5jWWf4Qx3F9k70faMSQMqLJuO3kJtYDa4),先試MNIST的實驗
* Unity toolkit
* 看能不能寫程式 (彈性程度)
* 提出整理報告
## 進度報告
### 柔:
* [Deep Learning Multidimensional Projections](https://arxiv.org/pdf/1902.07958v1.pdf)
* 閱讀paper
* 進行MNIST實驗

* 使用mean shift分群
### 靜:
* finetune model (triplet loss)
### 2021/03/03
## 會議記錄與分工
* Dimesion reduction
* 檢查TSNE的實驗參數
* IMDB不做、做CIFAR10就好
* 實作Neighborhood Hit
* 用學長的code跑實驗2
* Fake news
* 使用finetune後的model擷取embedding
* 將clustering.py整進UI
* Unity ML
* 試更多例子(網球、足球)
* 用成Demo影片
## 進度報告
### 柔:
* Dimesion reduction
* Facilitate the Parametric Dimension Reduction by Gradient Clipping
* 閱讀paper
* 進行batch size、network capacity實驗
* Deep Learning Multidimensional Projections
* MNIST、Fashion MNIST實驗
* 處理Cats vs Dogs Dataset (feature extraction)
* Fake news
* clustering result UI
### 2021/03/10
## 會議記錄與分工
* Dimesion reduction
* 換 feature extraction model (keras to pythorch)
* Fake news
* 實作比對 UI
* 實驗多種比對方法
* Unity ML
* 嘗試使用 GPU 在 server training
## 進度報告
### 柔:
* Dimesion reduction
* 實作Neighborhood Hit
* 實驗 2 比較
* Fake news
* 使用finetune後的model擷取embedding
* 使用整進UI
### 2021/03/17
## 會議記錄與分工
* Dimesion reduction
* 測試[GitHub code](https://github.com/mespadoto/proj-quant-eval/tree/master/code/01_data_collection)
* 進行實驗
* 比較方法AE、PCA、UMAP、TSNE、DLMP
* Fake news
* 開發新聞人臉比較UI
* 流程構想:
* 前處理
* 為每個新聞的臉分群
* 找出每個出現人物代表性的embedding (離平均最近的臉)
* UI
* 使用者選擇觀看影片
* 系統框出影片中的人臉
* 使用者選擇特定人臉
* 比對代表性embedding
* 顯示相關新聞(依相似度排序)
* Unity ML
* 嘗試使用 GPU 在 server training
## 進度報告
### 柔:
* 閱讀 Towards A Quantitative Survey of Dimension Reduction Techniques
* 下載實驗所需的 18 個 dataset
* 測試[GitHub code](https://github.com/mespadoto/proj-quant-eval/tree/master/code/01_data_collection)(還在debug中)