Beitou District, Taipei City, Taiwan
八年的軟體開發經歷,包含Windows監控軟體、Switch產測軟體、邊緣AI監控軟體。
十二月 2020 - Present
網路交換機MFG軟體工程師,支援測試驗證及生產等(2020/12-2022/06)
邊緣伺服器AI監控軟體研發(2022/06-現在)
程式語言C、C++、 Python
因Switch專案中止開發,人員資源投入到到5G團隊下,目前正在做稱為VisionAI 的邊緣運算AI監控軟體。主要負責容器化後端程式開發,前期開發稱為WebModule的後端服務,使用框架為DRF搭配SQLite。需要與其他微服務整合,例如前端或著稱為InferenceModule的後端服務,還有微軟Azure Custom Vision視覺AI模型平台,與第三方的NetworkOptix VMS軟體整合。
之後是專注在InferenceModule後端服務的開發,該微服務功能主要是接收RTSP串流經過視覺AI推論後輸出事件與影像。推論服務主要是OpenVINO Model Server與後來整合的Triton Inference Server,因為在硬體的選擇性與支援性上NVIDIA陣營更有優勢。花了很大量時間在研究與改善效能,因為原始代碼只是展示用沒有平行運算的能力,Python語言的GIL特性使得效能密集型任務很不好實現,我使用多個process並搭配共用記憶體來實現平行運算解放運算限制與IPC讓不同process的資料能夠存取。並且在功能實現的同時對原始碼進行重構,目的是減少冗餘與功能的模組化,讓後期的開發工作可以更順利,包含將Uvicorn換成功能更強大的Gunicorn、減少非必要的API方法。在效能上還發現OpenCV工具雖然使用很便利,但是在影片圖片的編解碼的效率不高,於是我使用TurboJPEG、 FFMPEG、GStreamer等媒體工具搭配CUDA使用硬體減少對於CPU的使用率。
最近在開發內部使用的媒體服務,最早的方式是用FastAPI提供JPEG圖片流,這種方式雖然延遲與運算要求低實現也容易,但非常消耗網路流量,比較好的方式是提供真正的影片流。之後利用GStreamer實現了RTSP的輸出,在增加了大約0.6秒的延遲與部分效能的情況下將流量從13Mbps減少到1Mbps (H.264 Stream)。 但是前端無法直接RTSP,在研究與比較各種不同媒體服務後決定使用WebRTC,使用前一階段產生的RTSP流,將視訊流分離出來後提供給WebRTC使用,端到端延遲0.6秒與RTSP差異不大,甚至還快了幾毫秒,搭配自架的TURN server暫時避開容器程式的mDNS問題。
其他還有擔任新人與實習生mentor、RTCP監測工具程式開發等。
U-boot loader、Linux kernel、CPSS(Marvell提供)、SONiC(Asterfusion提供);
Switch參與專案:
Lightsaber:PoE IC bring up與測試指令編寫(TI TPS23882),協助維護測試Command。
Orion:測試Command維護(Marvell CPSS),包含各測試功能如PoE、PHY、PSU(PMBus)、loopback、burn-in、CPLD、MCU、LED、系統資訊…等;
需常與HW、HWDV、PT等其他Team人員溝通協助排除錯誤,曾到過工廠(新店)協助PT處理burn-in測試,產生測試腳本等(console port輸出至電腦,TeraTerm軟體巨集)。
一月 2016 - 六月 2020
公司為監控(surveillance)保安(security)安全(safety)解決方案提供商;
有自有開發的軟體系統與網路攝影機、錄影系統等硬體設備;
軟體功能包含即時監控、錄影回放、事件通知、log紀錄、攝影機控制(PTZ、燈光、音效警告等)、人臉辨識、移動偵測、物件追蹤、紅外線體溫偵測、車牌辨識、刷卡機等等整合;
主要開發Windows桌面應用程式;
參與過軟體專案包含VMS(Video Management System)、RC(Record Center)、CC(Control Center)、MC(Media Center)、ASCM(Automation Security Control Management);
開發過Time App工具程式;
開發IDE Visual Studio 2008、2013、2019;
版控軟體SVN;
程式語言C++;
開發框架MFC;
資料庫SQLite;
ActiveX、live555、RTSP、HTTP、TCP/IP、FFMPEG、3S protocol;
具體開發紀錄如下:
VMS:修改可用view port輸出(輸入序號最多可用8*8 port),增加ONVIF支援(一種監控標準介面);
CC:加入記憶登入帳密功能、加密SQLite紀錄帳密(sha256)、playback增加書籤功能(可自訂名稱顏色以及搜尋)、live view效能優化(背景viewport只解碼I frame,不執行render、非焦點view port可自訂每秒render幀數、移除viewport放大縮小動畫)、PTZ面板調整、Direct input搖桿驅動維護、擴充3S protocol,加入環境設定檔備份套用功能(以RC作為備份伺服器)、增加page tour,view port tour功能、修改view port切割功能(原本為固定大小,修改為可用滑鼠拖曳調整)、H.265/HEVC解碼庫調整(用FFMPEG解碼,海思解碼庫有浮水印問題)、加入playback縮圖預覽、更新一部分錯誤的ONVIF;
RC:playback timestamp問題修正、整合time app工具程式(可做為server or client,給區網內沒有連外網路的RC校正時間用)、影片匯出問題修正(更正為正確的mp4 header)、修正camera finder問題(增加ONVIF支援);
MC:修改CC專案,移除大部分GUI並改由CC端控制調整layout、增加對多螢幕的支援性(最多可到16個螢幕)、view port增加網頁瀏覽功能(IE核心);
ASCM:修改CC專案,深色主題,更新大量自訂GUI、playback時間軸介面更新、live view效能優化(後續移植回CC)。
2012 - 2014
2007 - 2012
1073-17698551
發照日期 十二月 2020 · 永久有效
1089-17698551
發照日期 十二月 2020 · 永久有效
Beitou District, Taipei City, Taiwan
八年的軟體開發經歷,包含Windows監控軟體、Switch產測軟體、邊緣AI監控軟體。
十二月 2020 - Present
網路交換機MFG軟體工程師,支援測試驗證及生產等(2020/12-2022/06)
邊緣伺服器AI監控軟體研發(2022/06-現在)
程式語言C、C++、 Python
因Switch專案中止開發,人員資源投入到到5G團隊下,目前正在做稱為VisionAI 的邊緣運算AI監控軟體。主要負責容器化後端程式開發,前期開發稱為WebModule的後端服務,使用框架為DRF搭配SQLite。需要與其他微服務整合,例如前端或著稱為InferenceModule的後端服務,還有微軟Azure Custom Vision視覺AI模型平台,與第三方的NetworkOptix VMS軟體整合。
之後是專注在InferenceModule後端服務的開發,該微服務功能主要是接收RTSP串流經過視覺AI推論後輸出事件與影像。推論服務主要是OpenVINO Model Server與後來整合的Triton Inference Server,因為在硬體的選擇性與支援性上NVIDIA陣營更有優勢。花了很大量時間在研究與改善效能,因為原始代碼只是展示用沒有平行運算的能力,Python語言的GIL特性使得效能密集型任務很不好實現,我使用多個process並搭配共用記憶體來實現平行運算解放運算限制與IPC讓不同process的資料能夠存取。並且在功能實現的同時對原始碼進行重構,目的是減少冗餘與功能的模組化,讓後期的開發工作可以更順利,包含將Uvicorn換成功能更強大的Gunicorn、減少非必要的API方法。在效能上還發現OpenCV工具雖然使用很便利,但是在影片圖片的編解碼的效率不高,於是我使用TurboJPEG、 FFMPEG、GStreamer等媒體工具搭配CUDA使用硬體減少對於CPU的使用率。
最近在開發內部使用的媒體服務,最早的方式是用FastAPI提供JPEG圖片流,這種方式雖然延遲與運算要求低實現也容易,但非常消耗網路流量,比較好的方式是提供真正的影片流。之後利用GStreamer實現了RTSP的輸出,在增加了大約0.6秒的延遲與部分效能的情況下將流量從13Mbps減少到1Mbps (H.264 Stream)。 但是前端無法直接RTSP,在研究與比較各種不同媒體服務後決定使用WebRTC,使用前一階段產生的RTSP流,將視訊流分離出來後提供給WebRTC使用,端到端延遲0.6秒與RTSP差異不大,甚至還快了幾毫秒,搭配自架的TURN server暫時避開容器程式的mDNS問題。
其他還有擔任新人與實習生mentor、RTCP監測工具程式開發等。
U-boot loader、Linux kernel、CPSS(Marvell提供)、SONiC(Asterfusion提供);
Switch參與專案:
Lightsaber:PoE IC bring up與測試指令編寫(TI TPS23882),協助維護測試Command。
Orion:測試Command維護(Marvell CPSS),包含各測試功能如PoE、PHY、PSU(PMBus)、loopback、burn-in、CPLD、MCU、LED、系統資訊…等;
需常與HW、HWDV、PT等其他Team人員溝通協助排除錯誤,曾到過工廠(新店)協助PT處理burn-in測試,產生測試腳本等(console port輸出至電腦,TeraTerm軟體巨集)。
一月 2016 - 六月 2020
公司為監控(surveillance)保安(security)安全(safety)解決方案提供商;
有自有開發的軟體系統與網路攝影機、錄影系統等硬體設備;
軟體功能包含即時監控、錄影回放、事件通知、log紀錄、攝影機控制(PTZ、燈光、音效警告等)、人臉辨識、移動偵測、物件追蹤、紅外線體溫偵測、車牌辨識、刷卡機等等整合;
主要開發Windows桌面應用程式;
參與過軟體專案包含VMS(Video Management System)、RC(Record Center)、CC(Control Center)、MC(Media Center)、ASCM(Automation Security Control Management);
開發過Time App工具程式;
開發IDE Visual Studio 2008、2013、2019;
版控軟體SVN;
程式語言C++;
開發框架MFC;
資料庫SQLite;
ActiveX、live555、RTSP、HTTP、TCP/IP、FFMPEG、3S protocol;
具體開發紀錄如下:
VMS:修改可用view port輸出(輸入序號最多可用8*8 port),增加ONVIF支援(一種監控標準介面);
CC:加入記憶登入帳密功能、加密SQLite紀錄帳密(sha256)、playback增加書籤功能(可自訂名稱顏色以及搜尋)、live view效能優化(背景viewport只解碼I frame,不執行render、非焦點view port可自訂每秒render幀數、移除viewport放大縮小動畫)、PTZ面板調整、Direct input搖桿驅動維護、擴充3S protocol,加入環境設定檔備份套用功能(以RC作為備份伺服器)、增加page tour,view port tour功能、修改view port切割功能(原本為固定大小,修改為可用滑鼠拖曳調整)、H.265/HEVC解碼庫調整(用FFMPEG解碼,海思解碼庫有浮水印問題)、加入playback縮圖預覽、更新一部分錯誤的ONVIF;
RC:playback timestamp問題修正、整合time app工具程式(可做為server or client,給區網內沒有連外網路的RC校正時間用)、影片匯出問題修正(更正為正確的mp4 header)、修正camera finder問題(增加ONVIF支援);
MC:修改CC專案,移除大部分GUI並改由CC端控制調整layout、增加對多螢幕的支援性(最多可到16個螢幕)、view port增加網頁瀏覽功能(IE核心);
ASCM:修改CC專案,深色主題,更新大量自訂GUI、playback時間軸介面更新、live view效能優化(後續移植回CC)。
2012 - 2014
2007 - 2012
1073-17698551
發照日期 十二月 2020 · 永久有效
1089-17698551
發照日期 十二月 2020 · 永久有效