透過few shot learning 來打造生物識別(人臉、聲紋、手寫…)模型!

Photo by Green Chameleon on Unsplash

由於疫情,近期都很少出門宅在家,就來記錄一下最近有用到的技術吧~

一般的分類問題往往都是屬於類別不多且每個類別資料量很多任務,比如MNIST 手寫資料集或 imagenet 的影像分類問題。但在生物識別的task 上我們往往沒辦法收集到那麼多資料,比如說我要建立一個人臉識別的模型,我應該不太可能跟每個我要識別的人都收集大量的照片,況且世界上的人那麽多,我也不大可能收集所有人的照片來建立分類模型。

Few shot learning 算是 meta-learning 的其中一塊,核心概念是讓模型學會學習(learn to learn)。這樣說有點懸,我們可以把它理解成: few shot learning 是要讓模型 …


圖片來源

Machine learning 在結構化、影像、文字等類型的資料有許多發展外,以圖學(Graph)為基礎的社群網路資料(如 FB等社群網站互相follow的關係、電子信箱信件往來關係、論文間互相cite...等) 也是目前正在興起的一個方向,在推薦系統或用戶屬性分類以及文章引用建議等 有不少用途。

graph data 樣本間往往都存在著相關性,這違反了傳統 ML的 i.i.d.假設,使得演算法無法有效的利用此特徵來做預測。
最近讀了一些些相關的文章和教學,用這篇文章來稍為記錄一下。

Outline:
1. graph
2. networkX
3. DeepWalk
4. Graph Convolutional Network
5. GCN on Cora dataset

Graph

社群網路分析基本上是 …


Image super-resolution (SR) techniques reconstruct a higher-resolution image from the observed lower-resolution images. An intuitive method for this topic is interpolation, for which texture detail in the reconstructed images is typically absent.

Super-Resolution Generative Adversarial Network, or SRGAN, is a generative adversarial network (GAN) for image super-resolution that is more appealing to human perspective.

Brief review of GAN

GAN is comprised of two neural networks, Generator and Discriminator. GAN learns a probability distribution of a dataset by pitting these two neural networks against each other.

The structure is shown in below:


Photo by Farsai Chaikulngamdee on Unsplash

影像分類、物件偵測等電腦視覺技術,隨著ImageNet、COCO數據集的挑戰發展出許多達到人類判斷水準的類神經網路。
而行為識別是個比影像的物件偵測難度更高的一個領域,他需要透過理解一段 video 做出預測,比一般影像(二維度空間)還要多了時間的維度。近年來儘管有些發展,但尚無法到達人類的理解層次。

如同 ImageNet,行為辨識也有個 benchmark: ActivityNet,是個動作辨識相關之競賽,首次舉辦於CVPR2016年,他共有六種task的挑戰:


在深度學習的領域裡,Computer Vision(CV)和Natural Language Process(NLP)為最熱絡的兩個領域。CV 玩了一段時間也想來碰一下NLP,就以基本的文本分類來踏入NLP 的世界吧~~

圖片來源

在深度學習還沒發展起來前,大概是透過詞頻或TF-IDF來萃取文章特徵,然後套用像SVM 等的ML演算法。隨著 RNN 的發展使得NLP獲得許多突破,直到前幾年Transformer, BERT 的出現又往前跨出一大步。網路上有很多資源在講 RNN/LSTM 及BERT 再加上李宏毅老師已經講的非常完美了,因此此篇文章只會稍微帶過方法,focus 在記錄以 pytorch 實現 LSTM and BERT。

初學NLP,網路上東看西看學來的,若有理解錯誤還請指教。

Outline:
1 …


Photo by Timo Volz on Unsplash

最近有緣碰到了人流計算的題目,便著手看了一些有關物件追蹤的東西。此篇簡單的介紹基本的追蹤概念及方法到經典的 deep sort 以及接近 real-time tracking的 Jointly Detector and Embedding model(JDE)。

What is Multiple Object Tracking?

物件追蹤包含兩個部分: 物件偵測(Object detection)以及追蹤器(tracker)。
物件偵測在眾多算法百家爭鳴下, 其準確度已經高到一個境界,舉凡YOLO, SSD, Retinanet, CenterNet, …都是很好的選擇,它的功用就是要抓到image 內哪裡(bounding box regression)有哪種物件(classification)。
而追蹤器要做的事呢基本上就是判斷前後frame 抓到的obje …


機器學習模型從regression到 decision tree, SVM 再到 gradient boosting, Neural network,模型能力越來越強但也越來越難解,只能當作一個黑盒子使用。
如何解釋機器學習模型的預測結果一直是一個值得探討的問題,工作上也常被老闆challenge為何做出這樣的預測,要是預測錯了怎麼解釋?
大概在兩年前開始聽過LIME(Local Interpretable Model-agnostic Explanations)這個概念,最近有緣再碰到,便利用機會把它看過一遍並且實做看看。

Why we need explanation?

可能有些人認為,我會一些feature importance的方法像 stepwise, random forest, lasso等,不就可以知道模型主要是根據那些特 …


讓沒有python 的電腦也能執行你的程式!

Photo by Safar Safarov on Unsplash

python 有很多不同的版本,更別說有一堆package了,當你寫了一支python code 想在很多地方部屬使用,去一台一台電腦安裝相關環境實在太費時,這時我們可以透過 pyinstaller 將執行這支程式相關的所有東西給打包成一個.exe執行檔,讓其他電腦可以直接執行!

簡介

執行pyinstaller 後他會先分析你的code,看有哪些需要的module、library、interpreter,然後蒐集相關的資源,最後全部包起來生成exe檔。

這邊提醒一下:
1. 引入套件時盡量使用 from …import …,如果直接使用import的話會把整個包都打包進去,而無謂的增加工具的大小。
2. pyinstaller 打包後的exe 只能在與打包時相同的作業系統下執行,在windows 下打包的無法在linux使用,另外 64位元的電腦下打包也無法在 32位元上使用(但反過來似乎可以)。

安裝&使用

安裝 install PyInstaller from PyPI

pip install pyinstaller

相關參數

-h :help
-F :將程式打包成單一執行檔(適合較簡易的代碼或只有單一.py檔)
-D :打包多個文件,exe檔及依賴的東西會一起放置在dist資料夾內(適合框架形式的程式)

基本上我只有用到這幾個參數~其他更多參數可以參考這篇
若你的程式屬於框架型的,有很多子程式及依賴模組,建議使用-D,若使用-F 則會產生一個容量很大的exe檔,且開啟時速度很緩慢。

Example

比如我寫了一個小工具計算 1到 user input的正整數的總和的程式並命名為 my_sum.py :


Face recognition includes two parts: face detection and face classification.
Given a picture we need to find out that is there face inside this picture? where are the faces located in this picture? Then we classify who does this face look like.

1. Face detection

https://becominghuman.ai/face-detection-models-and-softwares-42b562a8e151

As I know, there are two major methods in this topic: Haarcascade and MTCNN.
Haarcascade consists of haar feature, adaboost, cascade classifier.
MTCNN is base on neural network, which can do face detection and face alignment.

In my experience, MTCNN is slightly slower than haarcascade but have higher accuracy. …


build your voice assistant with python

Photo by Tobias Keller on Unsplash

語音助理是個可以對你用聲音所下達的指令做出回應的一個工具,現在最紅的大概是Siri(Apple)、Alexa(Amazon)、Google assistance(GOOGLE)、CORTANA(Microsoft),這幾家大廠各自都在自己的產品上使用自家開發的語音助理。
在網路上看到有人對這幾家的語音助理詢問各種問題,並根據回答進行評分。結果似乎大部分都是指出siri是比較笨拙,而google assistance 最聰明!!

CW Lin

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store