Computer Vision Jobs at Taiwan


Where is NEMO ?

[image source]

Keep hunting jobs


文章的主軸是想要談談在台灣關於image processing/computer vision的工作, 因為覺得自己無論是在所學, 以及進入業界被分配的工作上, 都處上一個很尷尬的位置上, 所以也一直處在hunting job的狀態中, 不過老實說, 也真的不大好找.

After graduation


碩士畢業後, 似乎普遍有一個迷思, 就是選擇working at ic-design company學得會比系統廠來的多, Hmmm, 這點現在想來還是好存疑, 一來覺得, 十幾年前台灣的ic-design公司真的猶如雨後春筍般的爆出來, 相關的半導體廠等等造就了台灣的硬實力. 所以造成很多ic-design廠累積了厚實的資本, 在給予新人起薪上普遍比系統廠高. 所以到底是學得比較多, 還是賺得比較多? 想來想去還是沒有什麼結論, 但也因為真的是因為薪水, 我選擇了ic-design為第一份工作.

Team內的responsibilities


Image Signal Processing pipeline (ISP pipeline)

基本上這個類別就是處理, 當光進入到鏡頭後, 投射到image sensor之後
所有的影像處理過程. 因為raw data是呈bayer pattern, ISP pipeline必須要將之重組成RGB signal, 這中間需要用到的知識就是那本digital image processing的集大成, 諸如, color-interpolation, de-noising, filtering, de-aliasing, gamma correction, dynamic range compression, auto-exposure auto-white-balance (color constancy)…etc. 每個步驟一定會跟前後者有關係, 所以pipeline的optimization, 哪一個順序在前在後, 都會是需要實驗的. 所以一般會有一個資深的工程師掌管整個架構的優化, 然後下面的蝗蟲們針對個別component做優化.

在ic-design內所設計的演算法, 要非常注重:

  1. 計算單元: 除法是很可怕的一個東西, 一般會避免使用, 否則硬體最後的gate count會非常高, 影響到老闆最在意的cost.
  2. 計算規則性: 牽涉到硬體架構, pipeline間的計算loading愈balanced愈好.
  3. memory使用量: 大部份指line buffer限制, 這點讓演算法變得很難設計,以前在學校的時候都不知道這是一個concern. 舉例來說, 3x3的sober filter需要用到額外2條line buffers, 若是要設計5x5 filter, 則需要用額外用4條, 考慮現在video resolution都是full hd, 一條line就是有1920*N這麼多的代價,所以無法讓你一次看太遠的line.

Video Compression (H.264, AVC, VP8, MJPEG, etc.)

歹勢, 這個area不是我主要負責的, 但基本上也有以上1.~3.的concerns. 我剛進去時, team主力是H.264, 但一方面滿積極的在study VP8 (from google) & AVC (from China). 我要走時, 開始有人在study SVC and HEVC等等. 最多最多的問題是出在rate control身上, 無論是H.264 or MJPEG, 因為不同的應用之下, rate control就會不一樣, 有些是這一秒就只能用多少頻寬(過了就沒了), 有一個是total 10秒可以讓你用多少頻寬. 所以optimization的條件就會不一樣.

Computer Vision

終於回到comfort zone XD 我們team負責過face detection/tracking, motion detection, video stitching, video stabilization, lens distortion correction, balabala…

我們team CV的background可以說是非常薄落, 所以始終停留在software development階段, 我離開前, 有幸看到motion detection & video stabilization被硬體化, 但都是“simplified”過的版本.

剛進去時, 其實我的發揮空間很自由, 所以我一直朝tracking-by-detection的方向去玩, (小聲: 因為我對machine learning比較有興趣) 也就是文章的開頭那個finding nemo的paper, 那群eth的人推出了一系列online boosting的方法, 從supervised到semi-supervised balabala… 扯遠了.

如果問我, 那到底需要什麼knowhow, 我會說 a. statistical inference (Bayes theory尤為有用) b. feature extraction (corner detection, FAST, etc…) c. feature description (LBP, MSER, SIFT, SURF, BRIEF, BRISK, FREAK, etc.) d. regression techniques (with different regularizers, robust regression, etc.) 在裡面, 其實regression用的非常多, 不限於computer vision的topic, ISP上面我看同事也一直用, 如果可以, 可以study一些諸如, l1/l2-norm的差別, 或是其他如logistic regression, 會讓你跟別人不一樣. 不然你會看到千篇一律的l2-norm linear regression, 然後再來會聽到許多complaints關於l2-norm regression非常容易受noise影響的事… e. learning concepts (e.g. curse of dimensionality, model selection, regularization, over/under-fitting, etc.)

覺得, 自己在找CV的相關工作沒有很順, 一來是很多公司是處理瑕疵檢測, 然後有一些可能是偏medical image processing (few), 或是車用電子, 再來就是做相機的. 二來是這些公司大多是ic-design, 所以在設計演算法時, 你就必須考慮到上述的限制, 我自己非常偏向學術派, 所以每年看到新paper出來卻無法深入study(因為cost太高, study也無用) 的那種感覺真的很不喜歡…但是我必須要說, 能夠抓住最新的paper的精神, 然後用同樣的精神設計出hardware-friendly的algorithm會讓 你在ic-design公司非常的吃香. (但是我無法, 所以我quit QQ)

Company List

Intel, IMEC, Nvidia, MediaTek, Novatek, Mstar, Realtek, Vivotek, Sunplus, Sonix, Altek, AUO, ACTi, etc…還有很多我不知道的公司. 這些公司應該都找的到ISP/video/computer vision的工作. 但多半是ic-design.

Software Industry

其實寫這篇文章是想要引出, 到底台灣的軟體公司, 在做CV/Machine learning 的, 是不是真的這麼少? 這就有賴大家的介紹了…

Conclusion

我以前的主管最常講的兩句話是,

  1. 要質疑問題的正確性. (所以他的面試考題有一些題目本身是有問題的, 也就是否命題XD)
  2. 要找到自己的核心價值.

我覺得基本上這兩句話是沒有問題的, 但就是說…有時候公司找你來, 不一定是公司的主力產品, 所以相對應的resource (跟你co-work的人)會相對少一點, 舉我的例子來說, 總體而言我覺得做起事來非常的lonely, 因為能夠討論的人並不多, 只有自己才懂自己的東西. (所以遇到問題只能上LinkedIn問…) 然後也會發現公司的主軸並不清楚時, 我很難在team內找到自己的核心價值. (內心的吶喊是: 不一定說要找就找的到的啊~) 到最後其實…就有點對自己反而沒信心了.

以上大概是這些年來對於CV相關的工作心得, 希望大家也可以有更多的交流!


Originally published at juliuswang.logdown.com.