《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 專訪 | 小白也能搭建深度模型,百度EasyDL的背后你知多少

專訪 | 小白也能搭建深度模型,百度EasyDL的背后你知多少

2018-09-10

部署深度學(xué)習(xí)服務(wù)非常困難,,因此簡單易用的圖形化系統(tǒng)就顯得極為重要,。本文介紹了百度的圖形化深度學(xué)習(xí)系統(tǒng) EasyDL,用戶可以不需要機(jī)器學(xué)習(xí)背景知識而搭建優(yōu)秀的深度學(xué)習(xí)服務(wù),。本文重點(diǎn)討論了 EasyDL 系統(tǒng)的技術(shù)模塊與優(yōu)勢,,它大量采用了遷移學(xué)習(xí)與自動(dòng)模型搜索,并針對不同的定制化任務(wù)學(xué)習(xí)不同的深度模型,。

微信圖片_20180910214750.jpg



隨著機(jī)器學(xué)習(xí),,尤其是深度學(xué)習(xí)在復(fù)雜數(shù)據(jù)上的表現(xiàn)越來越優(yōu)秀,很多開發(fā)者希望能將其應(yīng)用到自己的服務(wù)或產(chǎn)品中,。然而即使是使用預(yù)訓(xùn)練模型或開源框架,,對于很多不太了解機(jī)器學(xué)習(xí)算法工程的開發(fā)者而言還是有非常大的挑戰(zhàn),。此外,若機(jī)器學(xué)習(xí)不是產(chǎn)品的核心技術(shù),,額外維護(hù)機(jī)器學(xué)習(xí)算法團(tuán)隊(duì)的成本又非常高,。因此,很多時(shí)候我們需要一種能快速使用高性能深度學(xué)習(xí)的方法,。


從整體而言,,構(gòu)建我們自己的機(jī)器學(xué)習(xí)應(yīng)用首先需要收集數(shù)據(jù),并執(zhí)行復(fù)雜而繁瑣的數(shù)據(jù)預(yù)處理,,隨后如何選擇模型與各種層出不窮的修正結(jié)構(gòu)也非常困難,。在訓(xùn)練中,需要經(jīng)驗(yàn)的調(diào)參過程與各種技巧也會對模型性能造成影響,,更不用說需要根據(jù)數(shù)據(jù)情況選擇與修正最優(yōu)化方法了,。因此即使不考慮工程化問題,將機(jī)器學(xué)習(xí)模型部署到客戶端也有非常大的成本,。


其實(shí)目前在 GitHub 上有很多優(yōu)秀的機(jī)器學(xué)習(xí)開源項(xiàng)目,,例如各種預(yù)訓(xùn)練深度卷積網(wǎng)絡(luò)、高度封裝的算法以及大量開放數(shù)據(jù)集,,不過要想復(fù)現(xiàn)以及根據(jù)實(shí)際情況調(diào)整這些項(xiàng)目,,開發(fā)者還是需要一些 ML 領(lǐng)域知識。此外,,很多項(xiàng)目的文檔說明與技術(shù)支持都有待提高,,它們需要開發(fā)者一點(diǎn)點(diǎn)調(diào)試與試錯(cuò)才能正確搭建。更重要的是,,將訓(xùn)練后的模型部署到移動(dòng)端等平臺會遇到非常多的困難,,這主要還是當(dāng)前流行的深度學(xué)習(xí)框架并不能完美支持模型部署。


所以對于不太了解 ML 的開發(fā)者而言,,最好將上述這些過程都自動(dòng)化,。例如我們只需要收集少量和任務(wù)相關(guān)的數(shù)據(jù),并直接在平臺上完成標(biāo)注,,然后讓系統(tǒng)幫我們選擇合適模型與超參數(shù)進(jìn)行訓(xùn)練,,最后已訓(xùn)練模型還可以直接部署到云 API 或打包成安裝包。其實(shí)現(xiàn)在也已經(jīng)有一些平臺能完成這一些過程,,例如谷歌的 AutoML 和百度的 EasyDL 等,。


EasyDL 主頁:http://ai.baidu.com/easydl/


如下所示為 EasyDL 訓(xùn)練模型的基本流程,整個(gè)過程都是圖形化操作,,且如果是上傳已經(jīng)處理好的數(shù)據(jù),,那么強(qiáng)大的遷移學(xué)習(xí)系統(tǒng)會在幾分鐘內(nèi)完成模型的訓(xùn)練。百度 AI 開放平臺文檔中心對 EasyDL 的建模過程有詳細(xì)的描述,,因?yàn)檫@一圖形化的系統(tǒng)非常簡明,,所以文檔也通俗易懂,。

微信圖片_20180910214819.jpg



如上所示,EasyDL 將整個(gè)服務(wù)精煉為四個(gè)步驟,,并且可以在不需要機(jī)器學(xué)習(xí)背景知識的情況下開發(fā)模型,。創(chuàng)建模型只需要選擇我們?nèi)蝿?wù)所屬的類別,例如圖像分類或目標(biāo)檢測等,。訓(xùn)練模型只是選擇我們創(chuàng)建的任務(wù)與數(shù)據(jù),,再點(diǎn)擊訓(xùn)練就行了,系統(tǒng)會自動(dòng)搜索各種模型架構(gòu)和超參數(shù),。最后上線模型同樣也只需要確定到底是獲取云端 API 還是離線 SDK,,整個(gè)過程不會涉及到復(fù)雜的算法與工程方面問題。


EasyDL 在 2017 年 11 月初上線了定制化圖像識別服務(wù),,并在業(yè)內(nèi)展開公開測試,。在 2018 年 4 月、5 月和 7 月陸續(xù)發(fā)布了定制化物體檢測服務(wù),、定制化模型設(shè)備端計(jì)算和定制化聲音識別等多個(gè)定制化能力方向,,并形成了從訓(xùn)練數(shù)據(jù)到最終定制化服務(wù)的一站式端云一體平臺。目前 EasyDL 的各項(xiàng)定制能力在業(yè)內(nèi)廣泛應(yīng)用,,累計(jì)過萬用戶,,在包括零售、安防,、互聯(lián)網(wǎng)內(nèi)容審核、工業(yè)質(zhì)檢等等數(shù)十個(gè)行業(yè)都有應(yīng)用落地,,并提升了這些行業(yè)的智能化水平和生產(chǎn)效率,。


主要技術(shù)手段


EasyDL 的主要優(yōu)勢在應(yīng)用案例的累積、簡明的產(chǎn)品設(shè)計(jì)與操作流程,、支持移動(dòng)端計(jì)算與部署等,,而支持這些優(yōu)勢的是 EasyDL 背后各種主要技術(shù)手段。例如 AI Workflow 統(tǒng)一大數(shù)據(jù)工程系統(tǒng)與分布式訓(xùn)練系統(tǒng),,為 EasyDL 提供穩(wěn)定的系統(tǒng)和流程支持,;采用 PaddlePaddle 作為基本框架,為模型的搭建提供基礎(chǔ),;采用 Auto Model Search 自動(dòng)搜索模型超參數(shù),,支持獲得更好的訓(xùn)練效果;采用遷移學(xué)習(xí)訓(xùn)練較小的用戶數(shù)據(jù)集,,從而大大加強(qiáng)訓(xùn)練效率與效果等,。


AI Workflow 與 PaddlePaddle


AI Workflow 是百度對機(jī)器學(xué)習(xí)從訓(xùn)練到上線構(gòu)建的工作流引擎,它是一個(gè)將大數(shù)據(jù)成熟的工程系統(tǒng)與人工智能分布式模型訓(xùn)練相結(jié)合的引擎,。它覆蓋了從訓(xùn)練數(shù)據(jù)的存儲,,ETL(抽取,、交互轉(zhuǎn)換和加載)、模型訓(xùn)練任務(wù)的發(fā)起,、訓(xùn)練集群資源調(diào)度,、訓(xùn)練狀態(tài)監(jiān)控同步、模型自動(dòng)部署,、服務(wù)發(fā)布上線等全部環(huán)節(jié),,并實(shí)現(xiàn)了全自動(dòng)流程。


總體而言,,AI Workflow 的主要流程可以分為四個(gè)階段,。首先第一階段是對數(shù)據(jù)進(jìn)行預(yù)處理,例如對圖像實(shí)現(xiàn)歸一化,、大小裁剪與數(shù)據(jù)增強(qiáng)等,。隨后第二階段是模型的訓(xùn)練,或者說是學(xué)習(xí)過程,,這一階段會基于百度研發(fā)的深度學(xué)習(xí)框架 PaddlePaddle 進(jìn)行分布式訓(xùn)練,。訓(xùn)練完模型后,第三階段就需要驗(yàn)證模型的效果,,也就是說用戶可以上傳小規(guī)模的測試數(shù)據(jù),,并對模型的召回率與精度等指標(biāo)進(jìn)行驗(yàn)證。最后第四階段為服務(wù)的上線或模型的部署,,在這個(gè)過程中我們可以將已訓(xùn)練模型加載到云端并對外提供服務(wù),,也可以打包為一組移動(dòng)端開發(fā)套件,為進(jìn)一步集成到其它任務(wù)中提供接口,。

 

微信圖片_20180910214848.jpg



整個(gè) AI Workflow 在系統(tǒng)層面和服務(wù)層面同樣也會有一些優(yōu)化,,例如 PaddlePaddle 團(tuán)隊(duì)會對模型的訓(xùn)練階段做很多優(yōu)化,包括 GPU 的內(nèi)核融合和利用 RDMA 優(yōu)化分布式訓(xùn)練等,。而 EasyDL 團(tuán)隊(duì)這邊也會在服務(wù)層面做一些優(yōu)化,,例如在推理階段中,他們需要優(yōu)化任務(wù)調(diào)度,,并加速模型推理速度,。


在 AI Workflow 中,整個(gè)訓(xùn)練和推理階段都是使用 PaddlePaddle 框架,,它包含了許多高性能的模型算法實(shí)現(xiàn), 為最終出色的效果提供了強(qiáng)有力的支撐,。雖然 EasyDL 的用戶不需要了解與使用 PaddlePaddle,但其多年的 AI 技術(shù)積累以及大量的業(yè)務(wù)使用驗(yàn)證,,使得框架對于各種任務(wù)都非常安全穩(wěn)定,。


此外針對于移動(dòng)端部署,Paddle-Mobile 設(shè)計(jì)之初就對嵌入式的性能、體積,、能耗,、硬件平臺覆蓋等方面做了考慮。而 EasyDL 的端計(jì)算版本也是使用該框架設(shè)計(jì)更緊湊與高效的模型,,并將其發(fā)布到移動(dòng)端,。


自動(dòng)模型搜索與遷移學(xué)習(xí)


目前 EasyDL 采用了 Auto Model Search 的算法,即系統(tǒng)會同時(shí)發(fā)起多個(gè)模型結(jié)構(gòu)和超參數(shù)不同的訓(xùn)練,,并采用對應(yīng)算法進(jìn)行最終模型的篩選,,從而確保更優(yōu)的模型效果。Auto Model Search 與后文介紹的 AutoDL 在功能上是相近的,,但百度的 AutoDL 是一種神經(jīng)架構(gòu)搜索方法,,它關(guān)注于利用強(qiáng)化學(xué)習(xí)從頭構(gòu)建神經(jīng)網(wǎng)絡(luò)。


Auto Model Search 是指對于同一方向的定制能力,,也就是說它會采用多個(gè)經(jīng)典模型以及不同的超參數(shù)配置,,并分別進(jìn)行訓(xùn)練。然后再按一些策略挑選出比較好的結(jié)果,,并完成模型的上線,。其中系統(tǒng)可調(diào)的超參數(shù)包含神經(jīng)網(wǎng)絡(luò)類型的選擇,例如對于圖像分類可以選擇 Inception,、ResNet 或者其他,。而對于每一個(gè)模型,可選的超參數(shù)包含批量大小,、迭代數(shù)量和卷積核大小等,。在確定模型架構(gòu),并配置完超參數(shù)后,,每一個(gè)單獨(dú)的模型都會并行的訓(xùn)練,,并按一定策略選擇效果最好的模型。


其實(shí) Auto Model Search 是針對特定用戶數(shù)據(jù)的,,在用戶上傳與他們?nèi)蝿?wù)相關(guān)的數(shù)據(jù)后,EasyDL 會抽取多個(gè)已訓(xùn)練深度網(wǎng)絡(luò),,并采用遷移學(xué)習(xí)和不同的超參配置精調(diào)這些深度網(wǎng)絡(luò),。如下所示在用戶確定好小型數(shù)據(jù)集后,EasyDL 可能會選擇 Inception v3/v4 和 ResNet 等,,在固定這幾個(gè)網(wǎng)絡(luò)前面層級的權(quán)重后,,系統(tǒng)會根據(jù)用戶數(shù)據(jù)以及不同的批量大小和學(xué)習(xí)率訓(xùn)練網(wǎng)絡(luò)。

 

微信圖片_20180910214921.jpg



EasyDL 大量采用了遷移學(xué)習(xí)技術(shù),,各種基礎(chǔ)模型會在百度大規(guī)模數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,,并將從中學(xué)習(xí)到的知識(Knowledge)運(yùn)用到用戶提交的小規(guī)模訓(xùn)練數(shù)據(jù)集上,從而實(shí)現(xiàn)出色的模型效果和快速的模型訓(xùn)練。遷移學(xué)習(xí)的主干是非常大的網(wǎng)絡(luò),,而一般我們每一類只需要使用 20 到 100 多張圖像就能完成對后面層級的訓(xùn)練,,且 EasyDL 也會采用 Early Stopping 等正則化手段降低模型過擬合的風(fēng)險(xiǎn)。


圖像的遷移學(xué)習(xí)可能比較好處理,,但 EasyDL 的聲音分類并不需要太關(guān)注序列上的長期依賴關(guān)系,,因此它也能使用遷移學(xué)習(xí)。聲音分類的遷移主要會采用 MFCC 或加上快速傅立葉變換將音頻的時(shí)域數(shù)據(jù)轉(zhuǎn)換為頻域的圖,,然后再利用與計(jì)算機(jī)視覺相類似的遷移方法傳遞與音頻相關(guān)的知識,。而以后在處理語音識別等存在長期依賴性的數(shù)據(jù)時(shí),主體模型可能會繼續(xù)用到其它遷移知識的技術(shù),。

微信圖片_20180910214950.jpg



此外對于圖像方面的遷移學(xué)習(xí),,如果用戶需要區(qū)分非常精細(xì)的圖片或執(zhí)行細(xì)粒度識別任務(wù),那么一般遷移學(xué)習(xí)主要會獲取圖像的全局信息,,它很難抽取精細(xì)特征,。EasyDL 其實(shí)也能處理這些細(xì)粒度識別任務(wù),但遷移效果很大程度上會受到用戶數(shù)據(jù)的影響,。因此訓(xùn)練集圖片需要和實(shí)際場景要識別的圖片環(huán)境一致,,且對于細(xì)粒度識別這種具有很多相似圖像的任務(wù),用戶需要增加更多的訓(xùn)練圖像,。


最后,,為了提升模型遷移效果,EasyDL 會做一些特別的數(shù)據(jù)增強(qiáng)操作,,即增加一些圖像以加強(qiáng)模型的遷移效果,。例如假定用戶希望系統(tǒng)能識別兩個(gè)類別,并為這兩個(gè)類別提供了特定的數(shù)據(jù),,那么系統(tǒng)會自動(dòng)增加其它一些數(shù)據(jù),,并作為第三個(gè)類別。在訓(xùn)練中,,系統(tǒng)不僅需要識別用戶的數(shù)據(jù),,同時(shí)還需要識別自動(dòng)添加的數(shù)據(jù)為第三類別。


神經(jīng)架構(gòu)搜索


EasyDL 即將引入百度領(lǐng)先的 AutoDL 技術(shù),,這是一種 AutoML 的技術(shù),,它實(shí)現(xiàn)了深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)的自動(dòng)搜索和設(shè)計(jì)。百度的 AutoDL 是工業(yè)界中的一個(gè)項(xiàng)目,,因此它主要由三部分組成,,首先第一部分是從頭開始搜索神經(jīng)網(wǎng)絡(luò)架構(gòu),即神經(jīng)架構(gòu)搜索,。第二部分是神經(jīng)網(wǎng)絡(luò)的自動(dòng)適配,,也就是說根據(jù)不同的任務(wù)目標(biāo)與需要進(jìn)行適配,比如說目標(biāo)是部署模型到移動(dòng)端,那么系統(tǒng)就需要考慮正確率,、參數(shù)量和計(jì)算量等條件來適配網(wǎng)絡(luò),。第三部分是設(shè)計(jì)網(wǎng)絡(luò)的遷移能力,AutoDL 希望搜索出具有強(qiáng)大遷移能力的一般性神經(jīng)網(wǎng)絡(luò)架構(gòu),。實(shí)際上架構(gòu)搜索與遷移能力是存在相對關(guān)系的,,系統(tǒng)花大量計(jì)算資源希望搜索到針對特定數(shù)據(jù)有強(qiáng)大能力的架構(gòu),而可遷移性又希望系統(tǒng)找到的架構(gòu)能推廣到其它更多的數(shù)據(jù),。


在架構(gòu)搜索策略上,,目前比較流行的有進(jìn)化策略、強(qiáng)化學(xué)習(xí)和基于梯度的連續(xù)空間搜索方法,。而百度的 AutoDL 主要是基于強(qiáng)化學(xué)習(xí),,其核心思路是希望能搜索到盡可能廣的空間。為了將神經(jīng)架構(gòu)搜索構(gòu)造為強(qiáng)化學(xué)習(xí)問題,,神經(jīng)架構(gòu)的生成可以視為智能體對動(dòng)作的選擇,,動(dòng)作空間也就相當(dāng)于搜索空間。智能體獲得的獎(jiǎng)勵(lì)會根據(jù)已訓(xùn)練架構(gòu)在驗(yàn)證數(shù)據(jù)上的性能評估而定義,。


不同的 RL 方法在表示智能體的策略和如何優(yōu)化它們存在差異:Zoph 等研究者使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)策略對一個(gè)字符串進(jìn)行序列采樣,,該字符串反過來對神經(jīng)架構(gòu)進(jìn)行編碼。Baker 等人利用 Q-learning 訓(xùn)練策略,,該策略依次選擇層的類型和對應(yīng)的超參數(shù),。這些研究,包括谷歌大腦早期提出來的 NASNet,,它們都引入了非常強(qiáng)的先驗(yàn)知識,。


例如 NASNet 規(guī)定了網(wǎng)絡(luò)實(shí)際上有多少單元,這些單元的搭建方式也是手動(dòng)設(shè)計(jì)的,,系統(tǒng)只需要自動(dòng)設(shè)計(jì)單元的具體結(jié)構(gòu),。而設(shè)計(jì)具體的單元結(jié)構(gòu)也會存在一些先驗(yàn)知識,例如限制單元必須是兩個(gè)操作輸出一個(gè)結(jié)果等,。AutoDL 主要的方向是希望搜索任何有向無環(huán)圖結(jié)構(gòu),,這樣模型的表達(dá)能力和搜索空間就遠(yuǎn)遠(yuǎn)大于之前的方法。此外由于降低了搜索的先驗(yàn)知識,,因此計(jì)算力會變得非常大,,這也就對強(qiáng)化學(xué)習(xí)的采樣效率有非常高的要求。

 

微信圖片_20180910215028.jpg


三階段的層級架構(gòu)表征,,組成有向無環(huán)圖。


除了神經(jīng)架構(gòu)搜索,,模型的適配也是非常重要的方向,。AutoDL 會將很多目標(biāo)添加到強(qiáng)化學(xué)習(xí)的反饋值,例如我們考慮一些多任務(wù)學(xué)習(xí),模型會有一套衡量參數(shù)量,、計(jì)算量與正確率的方法,,并最終反饋到強(qiáng)化學(xué)習(xí),從而修正搜索方向,。


AutoDL 采用的是一種 Hierarchical RL,,它同樣也是基于 on policy。因?yàn)?AutoDL 的搜索空間非常大,,系統(tǒng)需要一些結(jié)構(gòu)性的探索,,因此搜索空間的探索才回更有效率一些。NASNet 之前第一個(gè)版本是基于策略梯度(PG),,第二版本是基于近端策略優(yōu)化(PPO),,雖然它們的抽樣效率比較低,但它們確實(shí)展示了強(qiáng)化學(xué)習(xí)在這一方面的能力,。所以總體而言,,AutoDL 主要還是沿著 NASNet 所開辟的方法,并利用其它技術(shù)與技巧提高采樣效率,。


模型部署與設(shè)備端計(jì)算


目前 EasyDL 有兩種發(fā)布服務(wù)的方式,,即生成在線 API 和離線 SDK。從應(yīng)用場景來說,,在線 API 能讓開發(fā)者更方便地與業(yè)務(wù)系統(tǒng)整合,,因?yàn)樵诰€ API 畢竟是 HTTP 層面的接口。而離線 SDK 有更低的調(diào)用延遲,,對互聯(lián)網(wǎng)的依賴性也沒有那么強(qiáng),,它可以利用本地計(jì)算資源實(shí)現(xiàn)更安全與穩(wěn)定的計(jì)算。而從技術(shù)實(shí)現(xiàn)來看,,在線 API 是云計(jì)算的形式,,離線 SDK 是端計(jì)算的形式,它們主要的差別在于是不是需要對性能與能耗做權(quán)衡,。

 

微信圖片_20180910215057.jpg


目前可以實(shí)現(xiàn)在 Android,、iOS 等系統(tǒng)的 GPU、NPU 等芯片上對定制模型預(yù)測階段計(jì)算的加速,。


在線 API 的能耗主要出現(xiàn)在服務(wù)端,,系統(tǒng)不需要做太多的量化或者模型剪枝等優(yōu)化,模型也不需要做特定的壓縮,。此外,,在線 API 對于芯片端的優(yōu)化也只需要考慮各種云端 GPU 來做一系列的推理加速。但是移動(dòng)端的話選擇非常豐富,,例如可以是針對高通系列的芯片,、也可以針對神經(jīng)網(wǎng)絡(luò) NPU 或者針對可插拔的 Intel Movidius 加速卡進(jìn)行優(yōu)化,。因此離線 SDK 的技術(shù)實(shí)現(xiàn)相對而言要難一些。


一般對于機(jī)器學(xué)習(xí)開發(fā)者而言,,在云端訓(xùn)練一個(gè)模型,,并部署為一個(gè)服務(wù)已經(jīng)比較成熟。但將模型遷移到設(shè)備端仍然會面臨很多困難,,開發(fā)者需要考慮硬件兼容,、能耗與性能等非常具體的問題。EasyDL 在發(fā)布離線 SDK 的過程中就已經(jīng)自動(dòng)做了很多工程優(yōu)化,,包括對輕量模型的選擇和對計(jì)算階段的量化等,。其中選擇輕量架構(gòu)可以大幅度降低模型大小,量化可以大量降低包體大小,,它們都能加速應(yīng)用在內(nèi)存中的加載,。


總的而言對于設(shè)備端計(jì)算加速,首先 EasyDL 會選擇 MobileNet 和 ShuffleNet 等輕量級的模型,,例如在目標(biāo)檢測中,,系統(tǒng)可能會使用 MobileNet 代替 SSD 中的主干網(wǎng)絡(luò),因而獲得更高能效比,。第二點(diǎn)是系統(tǒng)會通過模型剪枝將不太重要的網(wǎng)絡(luò)參數(shù)去掉,,例如去掉 CNN 中權(quán)重小于某個(gè)閾值的連接或直接去掉不太重要的卷積核。第三點(diǎn)會采用量化操作加速推理階段的計(jì)算,,其主要思想是降低卷積運(yùn)算中數(shù)值的精度,,從而降低整體的計(jì)算量與參數(shù)存儲空間。


設(shè)備端加速第四點(diǎn)會采用很多指令集,,包括 ARM 和 Neon 等,,其中 Neon 是一種單指令多數(shù)據(jù)的指令集,系統(tǒng)可以通過一條指令加速多條數(shù)據(jù),,這些都是硬件層面的加速,。最后設(shè)備端還能從計(jì)算單元的角度進(jìn)行加速,例如 GPU 和 NPU 等,。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected]