.2020 台灣內外銷要贏必知大數據 (一)– 安控、物聯網、智慧零售、智慧農業、智慧教育

The 7 Biggest Technology Trends In 2020 Everyone Must Get Ready For Now 
整理:3S MARKET

2017-2024 年 IP 安全攝影機市場,將以 20% 的複合年成長率長長,到 2024 年,IP 安全攝影機市場,預計將超過 200 億美元。https://www.securitysales.com/…/ip-security-camera-market-…/


物聯網在全球範圍的安全和監視領域帶來了一場革命。 在這種情況下,IP 攝影機行業將成為這一變化的主要受益者。 根據可靠的估計,2016 年 IP 攝影機的全球出貨量超過 1500 萬台。 此外,可靠消息來源還確認, 2014 年智慧家庭中的 IP 攝影機出貨量超過 130 萬台,這一數據有力證明了物聯網和互聯基礎設施,在 IP 攝影機行業利潤豐厚的成長圖中,所扮演的角色 。https://gminsights.wordpress.com/tag/ip-camera-market-share/


此全球監控攝影機市場規模的轉變和預測(全球總量 vs. 中國佔比),是由矢野研究協會所製作,矢野一直是日本索尼等公司在市場市調研究,很重要的合作夥伴。這份數據,是於 2016的10月發佈,請注意 2014 - 2018 仍是預測值,這數據不包括像 Google Nest cam、小米等這類家用保全攝影機,僅有專業級保全監控攝影機。https://www.yanoresearch.com/…/press-rel…/show/press_id/1868


矢野研究協會對於全球監控攝影機,市場規模的轉變和預測(IP vs. Analog),這份數據,是於 2015 的8月發佈,請注意 2014 - 2018 仍是預測值,這數據不包括像 Google Nest cam、小米等這類家用保全攝影機,僅有專業級保全監控攝影機。https://www.yanoresearch.com/press/pdf/1420.pdf


實體安全設備在主要場域應用的市場比率,以及實體安全設備在軟體、硬體、服務的營收佔比。https://www.grandviewresearch.com/industry-analysis/physical-security-market 



全球臉部辨識市場規模,將從 2019 年的 32 億美元,成長到 2024 年的 70 億美元,在 2019-2024 年期間的複合年成長率(CAGR)為16.6%。 市場的主要成長動力,包括政府增加的用戶和數據安全計劃,行動設備的使用增加,以及對強大的詐欺檢測和預防系統的需求增加。https://www.marketsandmarkets.com/…/facial-recognition-mark…



全球臉部辨識應用領域細分市場 2013 - 2023 的探討。https://www.techsciresearch.com/report/global-facial-recognition-market/1585.html


2024 年,全球智慧農業市場估計將達到 200 億美元。 從 2016 年到2024 年,複合年成長率為 14.1%,https://www.variantmarketresearch.com/…/smart-agriculture-m…


智慧農業大範圍地理區域的市場數據,包括亞洲大洋洲(包括澳洲),歐洲,美洲和世界其他地區。僅在2017年,這個市場的價值就將達到131億美元,https://www.visiongain.com/…/global-smart-agriculture-mark…/


到2023年,智慧教育和學習市場,預計將成長到約 9520 億美元,在 2017 年至 2023 年之間的複合年成長率為26%,相關的軟硬體設備,包含有 Learning management system, Learning content management system, Interactive White boards, Interactive Displays……https://www.marketresearchfuture.com/…/smart-education-and-…



2019 年至 2024 年的預測期內,針對學校市場的企業資源計劃,預計將達到 16.20 %的複合年成長率。教育中的雲計算已改變了課堂體驗,https://www.mordorintelligence.com/…/enterprise-resource-pl…


2017年,全球智慧零售市場規模為 103.5 億美元,預計到 2026 年將達到 588 億美元,在預測期內的複合年成長率為 24.25%。https://www.maximizemarketresearch.com/…/global-smar…/24096/


2017年,全球智慧零售市場規模估計為107.4億美元。預計從 2018 年到 2025 年,複合年成長率為 23.9%。越來越多地採用增強現實、虛擬現實、人工智慧和物聯網等技術,來改善商店的運營,促進準確的庫存管理,以及增強消費者的購物體驗,是逐步擴大市場成長的主要趨勢之一。https://www.grandviewresearch.com/indus…/smart-retail-market


按此回今日3S Market新聞首頁
任何顏色車牌——都拍攝的清清楚楚!

.物聯網設備 Gateway 技術架構設計

Internet of Things (IoT) Architecture :IoT Tutorial for Beginners 

來源:文刀 技术汇(jishuhui_2015)



1、前情概要
看這篇文章之前,強烈建議先閱讀上週分享的《物聯網設備網關係統架構設計》,該篇文章從四個層次,詳細介紹了我司設備 Gateway 的系統架構。

其實做架構設計離不開三個方面:業務架構,系統架構,以及技術架構。它們彼此之間不需要遵循一定的順序,但必須以實際業務作為出發點,這樣做出來的架構才有落腳點,否則就淪為了一個紙上談兵的花架子了。從這個角度考慮,對於以盈利為目的的組織來說,還是以業務驅動為導向會比較可靠,技術驅動也未嘗不可,在 B2B 的領域也可以大展拳腳。

在設備 Gateway 的架構設計中,對於業務架構的設計,我沒有單獨寫一篇文章闡述之,而是融合在系統架構設計中,對其做了一定的介紹。

為了方便闡述,我將系統架構設計圖先貼出來。





1 設備 Gateway 系統架構


接下來的技術架構設計,無非就是將系統架構的四個部分,在技術層面進行剖析。

個人以為,Device Group、Center Controller,以及 Biz Processor,這三個部分的技術含量較高,由於單片機設備,並非我司開發和生產的,將這部分工作委託給了第三方公司,故對此不做介紹,重點剖析 Center Controller 和 Biz Processor。


2、從 Netty 說起
這部分內容屬於知識科普篇,因為 Netty 在整個技術架構中,有著舉足輕重的作用,如果讀者對此比較熟悉,可以選擇性跳過。

下面先看一段來自Netty官網的介紹:


Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.

說得直接一點就是:Netty 是一套基於 NIO 而封裝的,易用性較高的 API,使用它可以簡單快速地,開發網路應用程式。

Netty 擁有諸多特性,比如設計良好,支持多種協議的非阻塞式 API,高吞吐量、低延遲,資源佔用率低等。此外, Netty  的社區較為活躍,文檔資料較多,也成為了我選擇它的關鍵原因之一。以下是 Netty 組件圖,大家可以感受一下:




2  Netty 件圖


可能大家比較關心 Netty 究竟能幹些啥。限於篇幅,我不能慢條斯理地給大家解釋,只能從感性上,對 Netty 的應用領域進行認知。

高性能 RPC 框架。這是 Netty 的一個典型應用場景,著名的分布式服務框架 Dubbo 遠端調用,使用的底層通信框架就是Netty,Dubbo 是久經考驗的出色的開發框架,其默認使用的通信框架 Netty 自然是非常靠譜的。除了 Dubbo 之外,淘寶的消息中間件 RocketMQ 的消息生產者和消息消費者之間,也採用 Netty 進行高性能、異步通信。

大數據處理。分布式大數據處理框架 Hadoop 的高性能通信和序列化組件 Avro 的 RPC 框架,默認採用 Netty 進行跨節點通信,它的 Netty Service 基於 Netty 框架二次封裝實現。

Web容器定制和開發,這個算是比較高階的應用。像 Tomcat、JBoss 這類 Web 容器,是基於 HTTP 協議的,而 Netty 比這些運行容器還要更底層,畢竟 HTTP 協議是基於TCP/IP的,對於 HTTP 請求,還是需要像 Netty 這樣的通信框架處理底層協議。因此,如果願意的話,你也可以基於 Netty 開發一款 Web 運行容器。

綜上所述,看過我的設備 Gateway 系統架構後,也不難想到我為什麼會選擇 Netty 了。

下面正式開始介紹設備 Gateway 的技術架構設計。



3、中控平台技術架構
這部分的技術架構,與前面介紹的 Netty 是緊密相關的,中控平台的底層通信框架便是 Netty。

如下這張圖基本上可以表達,我對中控平台技術架構的設計思想:




3 中控平台技術


不難看出,整個架構風格採用的是以 Spring Cloud 構造的微服務。因為中控服務實例可以有多個,用以應對設備數據增加,所帶來的橫向擴展。

系統架構中提到了中控平台的 REST API 組件,可以對應到中控服務器的 REST Service。這部分功能用 Feign 進行實現, Feign 可以認為是一個,帶有負載均衡特性的,簡單易用的 HTTP 請求中間件,其中整合了請求組件 Rest Template,以及負載均衡器 Ribbon。REST Service 組件可以提供諸如設備資訊,連接通道狀態,設備連接數,指令集維護之類的 API,用於與業務相關的系統層進行調用。

MQ Service 是系統架構中,消息隊列服務組件的實現。理論上來講,物聯網行業的消息服務協議首選 MQTT,它是為大量計算能力有限,且工作在低頻寬、不可靠的網路的遠端感測器,和控制設備通訊而設計的協議。但是也不阻止你選擇其他協議,比如 AMQP,STOMP 等。

當然,各大廠商都有對消息隊列服務協議的實現,支持的協議最全面的就是 Apache ActiveMQ,STOMP 是基於純文本的消息傳輸協議,不用考慮,MQTT 協議實現的,代表是出自EMQ,AMQP 協議實現的代表則是 RabbitMQ

接下來的 Logger Service 沒什麼好解釋的了,因為只負責記錄日誌,使用 logback,或者 log4j 之類的日誌框架即可。

最後的 Netty Service 涵蓋了很多組件的實現,其內核都是基於 Netty 的服務,很多設計和實現也就顯而易見了。整個中控平台與設備組的數據傳輸載體,就靠連接通道(Connect Tunnel),這裡借助一個通訊行業專業術語全雙工,它表示命令的收發,可以同時在通道裡發生,所以基於連接通道這個載體,我們可以進一步實現協議解析引擎,命令執行引擎,數據收集器等組件。



4、業務處理器技術架構
因為我採用了微服務的架構風格,所以業務處理器的技術架構,和 Spring Cloud 脫不了關係。先看一張技術架構圖:




4 業務處理器技術架構


上面一部分是各式各樣的客戶端,也包括了系統架構中提到的管理系統(Management System),這一部分不再展開敘述了。

下面一部分就是業務處理器的核心技術架構了,鑒於 Spring Cloud 普及程度不是很高,我先對架構圖周邊的 5 個 Spring Cloud 組件進行簡單介紹。

① Zuul Gateway,就是一個 API  Gateway 的角色,根據事先配置好的路由規則,將客戶端請求轉發到相應的微服務中進行處理;

② Config Server,這裡指代的是 Spring Cloud Config,用於充當統一配置中心的角色,裡面存放了幾乎全部的微服務相關的配置資訊;

③ Eureka Server,服務的註冊與發現中心,管理著眾多微服務的元數據信息;

④ Ribbon,是一個基於軟體層面的負載均衡器,當一個微服務部署了多個實例的時候,可以透過 Ribbon 進行負載均衡;

⑤ Hystrix,即微服務熔斷器,為了避免分布式系統產生「雪崩效應」。當一個微服務長時間無法到達時,就會觸發該鏈路上的熔斷器,防止大量的無效請求拖垮整個系統。

對於新手來說,上述的 Spring Cloud 組件介紹,可能過於簡單了,如果感興趣,可以搜索相關學習資料,或者關注我的專欄,我會不定期的進行微服務領域的相關分享。

接下來介紹 5  個核心的業務模塊。

① Log Analysis,日誌分析。主要是收集來自中控平台的日誌,以及業務層自身的相關日誌,可以用來分析,排查和追蹤問題,進而起到一定的監控作用。這部分使用的 ELK 技術棧,也算是日誌分析功能的一個最佳實踐,因為日誌分析業務沒有其他特殊的業務需求,所以其他的技術我也沒有再去考慮了;

② Data Analysis,數據分析。這個話題太大了,我只能結合業務來談。這部分功能主要體現在了數據可視化,以及結合監控服務對設備進行預警,所以,就目前而言,數據分析的功能就是對一些業務規則的辨識和整合,讓無形的數據變成有形的資產。目前只考慮數據的離線分析,至於即時分析的功能,現在還不是這麼迫切,所以只用到了 Hadoop 生態裡的相關技術;

③ Data Persistence,數據持久化。 這部分功能就是為數據分析,以及客戶端提供相關數據。數據持久化有兩個地方:MongoDB、MySQL。MySQL 儲存的是一些結構化的業務數據,因為這些數據比較重要,所以 MySQL 會使用主-從結構進行部署,遵循「主寫、從讀」的原則。MongoDB 儲存的是除業務數據的其他數據,暫不考慮集群部署;

④ Monitor Dashboard,監控平台。這個部分是設備維運的核心功能,而這個監控功能要分兩個層面理解:第一個是業務層面,目的是監控設備,中控以及業務的健康狀況,透過一定的指標展示出來;第二個是技術層面,也就是技術架構圖中提到的 Turbine,其實結合了上面提到的 Hystrix,對各個微服務的狀態進行監控;

⑤ Notification Service,通知服務。管理整個設備 Gateway 的通知業務,手機推送使用的是個推平台,此外還結合了郵件通知,我們可以直接使用 Spring Boot 自帶的一個 mail 組件。


5、總結
承接上一篇的系統架構設計文章,這篇文章詳細介紹了物聯網設備 Gateway 的技術架構設計,及其所用到的核心通信框架 Netty。然而,對於各個技術的實現,本文沒有做太具體的介紹,因為涉及到了代碼層面的詳細設計環節了,後續有機會會出具體實現的文章。


康橋科技 —— 白光攝影機專業廠商!

.人體行為辨宴識的十八般武藝是否樣樣精通,本文給你最全的總結

20BN Hypermodel Demo: 
Real-Time Human Behavior Understanding with Deep Learning
深思考人工智能 作者 明明如夏

行為辨識是指透過分析影像、深度感測器等數據,利用特定的算法,對行人的行為進行辨識、分析的技術。這項技術被廣泛應用在影像分類、人機交互、安全監控等領域。行為辨識包含兩個研究方向:個體行為辨識與群體行為(事件)辨識,而基於深度學習的人體行為辨識,成為了最近圖像辨識的標配。深度學習的方法,包括基於無監督學習的行為辨識、基於卷積神經網路的行為辨識、基於循環神經網路,以及一些拓展模型的方法,深思考小夏帶給你最先進的算法總結。

一、 Two-stream
1. Two-Stream Convolutional Networks for Action Recognition in Videos

主頁鏈接http://www.robots.ox.ac.uk/~vgg/software/two_stream_action/


2014 年提出雙流,利用幀圖像和光流圖像作為 CNN 的輸入得到很好的效果。光流能夠描述出影像幀的運動資訊,一路是連續幾幀的光流疊起來,作為 CNN 的輸入;另一路就是普通的單幀的 CNN。其實就是兩個獨立的神經網路了,最後再把兩個模型的結果平均一下。

另外,它利用 multi-task learning,來克服數據量不足的問題。其實就是 CNN 的最後一層連到多個 softmax 的層上,對應不同的數據集,這樣就可以在多個數據集上,進行  multi-task learning。

2.Convolutional Two-Stream Network Fusion for Video Action Recognition
主頁鏈接:http://www.robots.ox.ac.uk/~vgg/software/two_stream_action/
Github鏈接 https://github.com/feichtenhofer/twostreamfusion


2016 年針對雙流融合問題進行研究,得到卷積結束之後,在全鏈接之前,融合效果比較好,左邊是單純在某一層融合,右邊是融合之後,還保留一路網路,在最後再把結果融合一次。論文的實驗表明,後者的準確率要稍高。

3.Action Recognition with Trajectory-Pooled Deep-Convolutional Descriptors
Github接:  https://wanglimin.github.io/tdd/index.html


論文考慮了時間維的特性,引進了軌跡控制策略來採樣,將手工設計的特徵和深度學習結合。首先多個空間尺度上,密集採樣特徵點,然後特徵點跟蹤得到軌跡形狀特徵,同時需要更有力的特徵來描述光流,Fisher Vector 方法進行特徵的編碼,最後 svm 採用 one-against-rest 策略訓練多類分類器。

4.Temporal Segment Networks: Towards Good Practices for Deep Action Recognition
Github接:  https://github.com/yjxiong/temporal-segment-networks


2016 年香港中文大學,針對雙流不能很好利用長時間資訊,提出 segment 思路,將影像分為前中後三段,每段經過雙流然後融合結果。其中港中文還做了很多其他工作,https://arxiv.org/abs/1507.02159 

5.Spatiotemporal Residual Networks for Video Action Recognition
Github链接:  https://feichtenhofer.github.io/


使用了兩個流,但是名字不是取為空間流和時間流,而是motion stream 和 appearance stream,但是本質不變,運動流接收的輸入依然是堆疊的多幀光流灰度圖片,而appearance stream 和原來的空間流一致,接收的輸入都是 RGB 圖片,但是這裡使用的,雙流的兩個流之間,是有數據交換的,而不是像 TSN 網路一樣,在最後的得分進行融。

單幀的潛力挖盡之後,自然就會有人上 3D Conv,Recurrent CNN、Grid RNN 之類的東西。雖然深度學習大法好,不過也得按基本法來,直接上 fancy 的模型有較大概率吃力不討好。


二 LSTM 結構 
Long Short Term 網路一般就叫 LSTM,它是一種 RNN 特殊的類型。LSTM 透過刻意的設計,來避免長期依賴問題。記住長期的資訊在實踐中是 LSTM 的默認行為,而非付出很大代價才能獲得的能力!


1.Fusing Multi-Stream Deep Networks for Video Classification
主頁鏈接https://arxiv.org/abs/1509.06086



文章先 CNN 提取特徵,包括 RGB 圖光流圖和語音頻譜圖,然後經過lstm最後融合。

2.Action Recognition using Visual Attention
頁鏈接:http://shikharsharma.com/projects/action-recognition-attention/

注意力模型終於來啦,人在看東西的時候,目光沿感興趣的地方移動,甚至仔細盯著部分細節看,然後再得到結論。

Attention 就是在網路中加入關注區域的移動、縮放機制,連續部分資訊的序列化輸入。採用 Attention 使用時間很深的lstm模型,學習視屏的關鍵運動部位。

Attention相關
http://www.cosmosshadow.com/ml/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/2016/03/08/Attention.html

3.RNN Fisher Vectors for Action Recognition and Image Annotation
主頁鏈接:http://www.eccv2016.org/files/posters/P-4A-30.pdf

文章典型的特徵提取,分類思路文章採用卷積網路,提取特徵之後進過 pca 降維,然後 Fisher Vector 編碼扔給 RNN 再 pca 降維,最後 svm 分類。Ucf101 上實驗結果到了 94%.


三 C3D


3D CNN 應用於一個視頻幀序列圖像集合,並不是簡單地把圖像集合作為多通道來看待輸出多個圖像(這種方式在卷積和池化後就丟失了時間域的信息,如圖6上), 而是讓卷積核擴展到時域,卷積在空域和時域同時進行,輸出仍然是有機的圖像集合。

1.Learning Spatiotemporal Features with 3D Convolutional Networks
頁鏈接:https://github.com/facebook/C3D
https://gist.github.com/albertomontesg/d8b21a179c1e6cca0480ebdf292c34d2


將影像分成多個,包含 16 幀的片段作為網路的輸入。第一個池化層 d=1,是為了保證時間域的資訊,不要過早地被融合,接下來的池化層的 d=2。有所卷積層的卷積核大小為 3x3x3,相對其他尺寸的卷積核,達到了精度最優,計算性能最佳。

2.Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

https://deepmind.com/research/publications/quo-vadis-action-recognition-new-model-and-kinetics-dataset/


以往的 Conv3D 效果很差的原因之一,就是數據集太小,餵不飽網路。文章中的 3D 網路並不是隨機初始化的,而是將在 ImageNet 訓好的 2D 模型參數展開成 3D,之後再訓練。因此叫 Inflating 3D ConvNets。本文選用的網路結構為 BN-Inception (TSN也是),但做了一些改動。

如果 2D 的濾波器為 N*N 的,那麼 3D 的則為 N*N*N 的。具體做法是沿著時間維度重複 2D 濾波器權重 N 次,並且透過除以 N 將它們重新縮放。在前兩個池化層上,將時間維度的步長設為了 1,空間還是 2*2。

最後的池化層是 2*7*7。訓練的時候,將每一條影像採樣 64 幀作為一個樣本,測試時將全部的影像幀放進去最後average_score。除最後一個卷積層之外,在每一個都加上 BN 層和 Relu。對於 I3D 的效果為什麼好,作者解釋說 I3D 有 64 幀的感受野。可以更好地學習時序信息。再就是先用 ImageNet 的模型做了預訓練。


 I3D 這個網路結構的提出是很顯然,但用 2D 的 ImageNet 模型做預訓練,以及參數展開分配,還是挺具有創新性的,雖然在 TSN 中處理光流的第一個卷積層時,就有使用過類似的方法。這個實驗室真有能力,以往的數據集上效果很難提升,自己就搞了個大數據集。那個 Kinetics 的 I3D 模型是在 64 塊 GPU 上跑出來的。

四 其他

1.A Key Volume Mining Deep Framework for Action Recognition



現即便是 trimmed video (例如 UCF101 數據集),實際的動作發生的時空位置,也是非常不確定的:我們既不知道做動作的人,在什麼空間位置,也不知道真正的動作,發生的精確時間位置。更糟糕的是,和動作類別直接相關的,具有區分性的 (discriminative)key volume 往往佔比非常小,這在 flow stream 上表現得尤為突出。

於是我們就想能否先把這些 key volume 找出來,直接用以訓練分類器,這樣可以免受噪聲數據的干擾,更加聚焦在動作本質上。但實際上,在得到一個好的分類器之前,我們是很難自動地將 key volume 挑出來的。於是我們陷入了一個雞生蛋,蛋生雞的困境。

借鑒 Multiple Instance Learning 的思想,我們把雞和蛋的問題放在一起來優化解決:在訓練分類器的同時,挑選 key volume;並用挑出來的 key volume 更新分類器的參數。這兩個過程無縫地融合到了 CNN (卷積神經網絡)的網路訓練的 forward 和 backward 過程中,使得整個訓練過程非常優雅、高效。


2.Dynamic Image Networks for Action Recognition

https://github.com/hbilen/dynamic-image-nets

CNN 的輸入一般是圖片,針對輸入時影像,能否將影像壓縮成一張圖,以圖來表徵影像的資訊?答案是可疑的,針對對影像中的 RGB 圖像進行 Rank Pooling處理,以此作為 CNN 的輸入。雖然最終的效果不是特別好,但是想法很 nice。