丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給恒亮
發(fā)送

0

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

本文作者: 恒亮 2017-02-24 14:55
導(dǎo)語:如何在安卓平臺上利用 GPU 加速執(zhí)行 CNN ?

雷鋒網(wǎng)按:本文原載于簡書,作者ID為“小包July”。作者已授權(quán)雷鋒網(wǎng)發(fā)布。原文地址:鏈接

在下周二(2月28日)雷鋒網(wǎng)硬創(chuàng)公開課欄目將會推出一期專門介紹 CNN 的公開課:《深度學(xué)習(xí)之經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)的技術(shù)淺析》(點擊了解詳情),歡迎大家報名!

摘要

智能設(shè)備和可穿戴設(shè)備都將受益于深度學(xué)習(xí)算法(比如CNN)的準(zhǔn)確性和可擴(kuò)展性。然而,性能和能耗等現(xiàn)實的問題使得在移動端設(shè)備上這類密集計算的算法變得非常受限。我們開發(fā)了CNNdroid這個GPU加速庫,可以在Android設(shè)備上實現(xiàn)CNN網(wǎng)絡(luò)的訓(xùn)練。通過實驗,CNNdroid在移動設(shè)備上實現(xiàn)了60倍速的提升,以及130倍速的節(jié)能。CNNdroid這個庫已經(jīng)開源在Github上,可以從Github項目頁面下載。

關(guān)鍵詞

Deep Learning, Deep Convolutional Neural Network (CNN), Mobile GPU, Performance Optimization, Low Energy Con- sumption, Open Source Software, Android, RenderScript

1.介紹

智能手機(jī)、可穿戴設(shè)備、微型機(jī)器人、物聯(lián)網(wǎng)等越來越多的移動平臺都在深度學(xué)習(xí)的領(lǐng)域找到了相應(yīng)的應(yīng)用方向(如圖1)。例如在移動設(shè)備上,語音識別和圖像識別等許多App都受益于機(jī)器學(xué)習(xí)的本地算法。如果允許將模型等數(shù)據(jù)直接放在客戶端,就可以避免和服務(wù)器的上下行數(shù)據(jù)交互而導(dǎo)致的網(wǎng)絡(luò)延遲等體驗的問題。CNN卷積網(wǎng)絡(luò)在預(yù)測的精確性和可擴(kuò)展性上都取得了很先進(jìn)的成果,然而像此類密集計算型的網(wǎng)絡(luò)結(jié)構(gòu)必須依賴硬件級加速才可能在移動設(shè)備上得到廣泛的應(yīng)用。

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

圖1:CNN在移動設(shè)備上的應(yīng)用

許多基于深度學(xué)習(xí)的硬件加速平臺都有相應(yīng)的解決方案了,IBM也正在開發(fā)一種用于神經(jīng)網(wǎng)絡(luò)的CMOS的芯片,用于在移動設(shè)備和物聯(lián)網(wǎng)設(shè)備上。與此同時,類似的解決方案依然處于早期的研發(fā)階段,也并沒有商用到現(xiàn)有的移動設(shè)備上。

和基于硬件的加速平臺不同的是,GPU已經(jīng)大規(guī)模的商用到現(xiàn)在的移動設(shè)備上了,同時在軟件層面的編碼支持也做的非常完善了。利用GPU現(xiàn)成的并行計算能力去實現(xiàn)CNN神經(jīng)網(wǎng)絡(luò)在移動端設(shè)備上的計算加速是完全可行的。

現(xiàn)存的GPU加速方案的深度學(xué)習(xí)CNN的開源庫有很多種,都是基于服務(wù)器和桌面平臺的[見附錄的6, 7, 8, 9, 10, 11, 12].然而,由于平臺架構(gòu)的差異,簡單的把這些開源庫移植到移動端上,在某些Case下效果是欠佳的(見2.2節(jié))。目前在移動端上,據(jù)我們所知,并沒有相應(yīng)的帶有GPU加速的深度學(xué)習(xí)計算框架的開源庫,這些庫 [見附錄的13, 14, 15, 16]僅僅能夠利用移動設(shè)備的CPU多核計算能力,而這樣局限性很大。

如今,我們提供一個支持GPU加速的開源庫,稱為“CNNdroid”,可以在Android平臺用來通過訓(xùn)練數(shù)據(jù)集的方式設(shè)計和優(yōu)化CNN的網(wǎng)絡(luò)。以下是CNNdroid的幾個主要亮點。

1. 支持幾乎所有的CNN的Layer Type(Section 3.1)

2. 兼容Caffe[6]、Torch[7]、Theano[8]這些開源框架在PC平臺、服務(wù)器平臺上已經(jīng)訓(xùn)練好的模型(Section 3.2)

3. 現(xiàn)有的Android App可以快速的加入這個庫,無需額外的軟件依賴(Section 3.3)

4. 開發(fā)者可以指定最大的內(nèi)存消耗(Section 3.4)

5. CNN Layer的GPU和CPU加速均支持(Section 3.5)

6. 自動的硬件條件檢測(Section 3.6)

7. 在移動設(shè)備上超過60倍的性能提升以及減少130倍的能耗(Section 4)

背景知識以及相關(guān)介紹

2.1移動設(shè)備的GPU和桌面平臺的GPU的區(qū)別

現(xiàn)代圖形處理單元(GPU)不僅僅能做圖形計算,也能夠被用來做可編程的通用計算。臺式機(jī)的GPU長期以來都是可編程的,近期移動設(shè)備上的GPU也開放了通用計算的硬件級支持。但受限于GPU的尺寸和功耗,移動GPU和桌面GPU設(shè)備還是有很大的差異。

現(xiàn)代移動GPU的Shader Cores(SC)通常成為若干可編程并行計算單元。每個Shader Core都是由若干個ALU并行組成。比如,三星的Exynos 5433芯片是由ARM A53/A57 CPU和Mali T-760 GPU組成(見圖2)。T-760 GPU中的每一個SC都具有兩個VLIW格式的128位ALU。每個128位ALU能夠執(zhí)行SIMD操作,即并行的兩個64位,四個32位或八個16位操作[17]。與桌面平臺GPU相比,移動設(shè)備的并行ALU架構(gòu)在并行線程的有效執(zhí)行中更多地依賴于軟件和編譯器,而不是動態(tài)硬件調(diào)度器。

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

圖2: Exynos 5433 mobile processor with ARM A53 / A57 CPU and Mali T-760 GPU
(SC: Shader Core, VLIW: Very Long Instruction Word, SIMD: Single Instruction Multiple Data

更重要的是,在桌面GPU中廣泛應(yīng)用的線程塊快速內(nèi)存共享機(jī)制在移動GPU中并不可用,同時許多基于CUDA的桌面平臺的Library在移動GPU上也不可以用。

更不幸的是,在軟件層面這兩端的差異也是巨大的。比如Android提供的RenderScript[18]是一個用于并行計算的庫,但是并發(fā)線程的機(jī)制并不可用。另外,并行線程和并行線程使用的內(nèi)存中的數(shù)據(jù)部分必須是一對一的關(guān)系。

2.2 CNNdroid 和桌面平臺相關(guān)庫的比較

在服務(wù)器和桌面端,已經(jīng)有很多現(xiàn)成的基于GPU加速的并行計算框架可用于CNN網(wǎng)絡(luò),諸如Caffe[6],Torch [7], Theano [8],Tensor- Flow [9], cuDNN [10], cuda-convnet [11],,and Velesnet [12],然而由于兩端的硬件和軟件的差異,這種加速和并行計算的方法并不能直接的被移植到移動設(shè)備上。比如說,Caffe[6]中的卷積操作被展開并轉(zhuǎn)換為矩陣乘法,這些操作對內(nèi)存的要求比較高,這在移動設(shè)備上是不現(xiàn)實的。再舉一個例子,Theano [8]中的并行算法雖然與CNNdroid類似,但是在移動GPU中沒有使用SIMD單元(詳見Section 3.5)。

更不幸的是,桌面的計算庫利用桌面GPU和CUDA框架提供的線程管理功能,如快速共享內(nèi)存和線程同步,這些在移動GPU和Android提供的RenderScript中均不可用。

2.3 CNNdroid和移動平臺相關(guān)庫的比較

在移動設(shè)備上,就目前所知的支持CNN深度學(xué)習(xí)的框架只有[13,14,15,16]。包括了Caffe Mobile[13]和Torch Mobile[14],均受限于多核的CPU計算能力,而只有CNNdroid支持CPU和GPU(詳見Section 3.5)。

另外,CNNdroid還兼容Caffe[6]、Torch[7]、和Theano[8]訓(xùn)練出來的CNN模型,方便快速將模型部署到移動設(shè)備上(詳見Section 3.2)。

開發(fā)環(huán)境上,不需要安裝Android NDK,只需要安裝Android SDK即可。

3.CNNdroid庫

3.1 CNNLayer Types

CNNDroid庫支持幾乎大部分的CNN Layers,比如說卷積層,max/mean池化層,全鏈接層,ReLu(Rectified Linear Units)激活函數(shù),LRN(Local Response Normalization)層,Softmax等。相關(guān)的描述和每一層的參數(shù)設(shè)置在開源庫中的文檔里有說明[1]。由于庫的開源特性,其它的層也可以隨時加入。

3.2 模型的準(zhǔn)備

模型轉(zhuǎn)換腳本:圖3展示了如何將訓(xùn)練好的模型部署到移動端
CNNdroid庫提供了一系列的腳本,可以把不同框架訓(xùn)練的庫轉(zhuǎn)成CNNdroid格式的模型,目前已經(jīng)支持Caffe[6],Torch[7],Theano[8],因此可以使用以上框架訓(xùn)練模型然后轉(zhuǎn)為CNNdroid庫支持的格式,最終運行在Android移動設(shè)備上。當(dāng)然你也可以模仿這些腳本寫出其它平臺的轉(zhuǎn)換腳本,CNNdroid使用MessagePack序列化和存儲模型中不同層的參數(shù)。具體的細(xì)節(jié)可以參考開源庫的說明文檔[1]。

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

圖3:CNNdroid的模型部署流程

NetFile:開發(fā)者需要準(zhǔn)備一個名為NetFile.txt的文本文件,類似于Caffe的.prototxt配置文件,NetFile.txt文件用于配置已經(jīng)訓(xùn)練好的模型的層次,比如說,CNN Layer的各層的順序,卷積層中的Padding和Stride的值。圖4是一個該文件的樣例,更詳細(xì)的細(xì)節(jié)可以參考說明文檔[1]。

NetFile中也可以配置如下參數(shù),allocated_ram:用于指定本框架可以分配的最大內(nèi)存上線(見Section 3.4),execution_mode:用于指定是采用并行模式還是串行模式(見Section 3.5),auto_tuning:用于指定auto-tuning是否默認(rèn)開啟(見Section 3.6)。

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

圖4:NetFile示例,如何配置AlexNet[20]的三層網(wǎng)絡(luò)結(jié)構(gòu), 以及allocated_ram, execution_mode,auto_tuning參數(shù)的配置

3.3模型的執(zhí)行

一旦將訓(xùn)練好的模型和相應(yīng)的NetFile文件上傳到了移動設(shè)備后(圖3),這個模型可以被所在的Android App輕易的調(diào)用(圖5),具體的有如下幾個步驟:

第一步,在自己的App中依賴CNNdroid庫,CNNdroid庫只依賴Android SDK,而不需要安裝Android NDK的,也就是說,不依賴其他的第三方庫。

第二步,構(gòu)造RenderScript和CNNdroid對象(圖5所示的Steps 2和3)。CNNdroid的構(gòu)造函數(shù)需要提供NetFile文件作為輸入,并會自動的創(chuàng)建相應(yīng)的網(wǎng)絡(luò)層次。

最后,compute函數(shù)負(fù)責(zé)利用訓(xùn)練好的模型,計算傳入的單個圖像或者批量圖像并返回結(jié)果。

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

圖5: 使用CNNdroid庫的幾個關(guān)鍵調(diào)用步驟,
詳細(xì)的使用方法可以參見開源庫中的說明文檔 [1].

3.4 內(nèi)存分配

我們將已經(jīng)訓(xùn)練好的CNN模型,上傳到手機(jī)的SD卡上,這些模型中包含了矩陣式的各層參數(shù)。在執(zhí)行每一層前,在compute函數(shù)里(圖5,step5),相應(yīng)層的矩陣參數(shù)被自動的從SD卡上加載內(nèi)存里,這會導(dǎo)致大量的內(nèi)存開銷。

為了減少這種內(nèi)存開銷,CNNdroid采用的方法是:保持一部分的層長期駐留在內(nèi)存中,而其他的層每次都會被創(chuàng)建和銷毀。該選擇過程開發(fā)者無需關(guān)心,在CNNdroid構(gòu)造函數(shù)中自動完成(圖5,step3)。選擇器從最大的層開始,讓盡量多的層進(jìn)入選擇器,直到達(dá)到NetFile中allocated_ram參數(shù)指定的內(nèi)存上限。

注意:allocated_ram參數(shù)不宜設(shè)置的過大,比如說,Android 5.0在系統(tǒng)層就會限制每個App的內(nèi)存上限為512MB。

3.5 加速的方法

在CNNdroid中,不同的層有不同的加速方法。比如數(shù)據(jù)并行的卷積層和需要大量密集計算的全連接層,就需要用到RenderScript的框架來實現(xiàn)移動端的GPU加速。

這兩層的大部分計算可以表示為點積。具體地來說,在卷積層中kernels與input frames進(jìn)行卷積;而在全連接層中,計算可以表示為矩陣和向量的乘法。在移動設(shè)備上使用GPU的SIMD單元可以高效的進(jìn)行點積的計算。因此,我們分離了大量的向量,并且使用基于RenderScript框架的預(yù)定義點積函數(shù)來完成運算。也就是說,我們在軟件層面體現(xiàn)了這種計算的并行性,而不像是基于CUDA的桌面計算框架庫那樣把這類問題交給GPU的硬件調(diào)度程序。

相對于卷積層和全連接層,其它層的密集型計算相對較少。因此,它們通過多線程并發(fā)在多核CPU上進(jìn)行加速。比較特殊的是,由于ReLU層通常出現(xiàn)在卷積層或全連接層之后,所以把它嵌入到之前的層中,可以在將多個圖像傳輸時提高CNNdroid的性能。

除了上述并行計算的實現(xiàn)之外,CNNdroid還包括所有層的單線程順序執(zhí)行的實現(xiàn)??梢酝ㄟ^配置NetFile中的execution_mode參數(shù),指定執(zhí)行將是順序模式還是并行模式(圖4)。

3.6 自動調(diào)整

為了能夠在移動設(shè)備上達(dá)到最好的性能,CNNdroid框架的GPU并行加速算法支持在每個GPU線程上執(zhí)行自動配額,比如說調(diào)配該GPU線程的工作量以及SIMD ALUs的工作量。配額的參數(shù)調(diào)整決定了并行的粒度。

如果在NetFile(圖4)中打開了auto-tuning,那么auto-tuner就會在Android App首次啟動時執(zhí)行。auto-tuner會記錄該移動設(shè)備上多個預(yù)定義的情景下CNN模型的運行時長,用于調(diào)整最佳的配額參數(shù)。因此,首次啟動App需要花費較長的時間。為了公平性以及更清晰的表述我們的實驗,在第4節(jié)中,我們將關(guān)掉auto-tuning。

4.實驗評估

我們在三星的Galaxy Note 4和HTC One M9進(jìn)行了實驗。采用的模型是幾個標(biāo)準(zhǔn)的CNN網(wǎng)絡(luò):LeNet network for MNIST dataset [21],Alex Krizhevsky’s network for CIFAR-10 (Alex’s CIFAR-10) [22], Alex Krizhevsky’s network for ImageNet 2012 dataset (AlexNet) [20].

基準(zhǔn)CNN的層設(shè)置如圖6所示。當(dāng)移植到CNNdroid格式時,我們還統(tǒng)計了文件大小和內(nèi)存占用。具體的結(jié)果如圖7所示。

我們的實驗環(huán)境是將手機(jī)充滿電,同時進(jìn)入飛行模式并且將屏幕亮度調(diào)為最低。以下的實驗中,并沒有每次都從SD卡加載配置和模型,因為在第一次運行時候就加載到內(nèi)存中了。每次我們都會將16張圖片作為輸入傳給CNNdroid App,接下來測量輸出的準(zhǔn)確性以及運行耗時和耗電量。

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

圖6: 三種標(biāo)準(zhǔn)的CNN網(wǎng)絡(luò)的層次

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

圖7: 在CNNdroid格式下使用三種標(biāo)準(zhǔn)CNN網(wǎng)絡(luò)的文件大小以及內(nèi)存消耗

4.1準(zhǔn)確度

為了測量CNNdroid的準(zhǔn)確度,我們同時使用了CNNdroid和Caffe作對比實驗。結(jié)果顯示兩者的結(jié)果方差是10的-12次方,也就意味著CNNdroid的準(zhǔn)確度和Caffe幾乎一樣。

4.2性能

圖8顯示了僅使用CPU的線性運行CNN的運行耗時以及使用GPU加速的運行耗時和加快的倍速。報告顯示的值是十次運行結(jié)果的平均值。

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

圖8:(a)是CNN運行的平均耗時和加速的速率,(b)是整個CNN中最耗時的卷積層的耗時和加速速率

4.3能耗

我們使用“Qualcomm Trepn Profiler”應(yīng)用程序[25]測量HTC One M9手機(jī)基于AlexNet網(wǎng)絡(luò)結(jié)構(gòu)的每一幅圖像的功耗和能耗。
GPU加速執(zhí)行時,消耗約523 mW功率和0.4 J能量,而僅僅使用CPU執(zhí)行時消耗2338 mW功率和51.6 J能量。 因此,GPU加速執(zhí)行消耗的電池消耗減少51.6÷0.4 = 129X。值得注意的是,我們的測量中有大約20%的波動。

5.結(jié)論

我們介紹了CNNdroid:一個在Android平臺上基于GPU加速CNN網(wǎng)絡(luò)的開源庫。經(jīng)過實驗評估證明該庫可以提升60倍速,以及130倍的能耗節(jié)省。相關(guān)的代碼以及說明文檔都已經(jīng)開源并發(fā)布在Github上[1]。

6. 相關(guān)引用

[1] CNNdroid open source GPU-accelerated library.

https://github.com/ENCP/CNNdroid

[2] Inchul Song, Hyun-Jun Kim, and Paul Barom Jeon. Deep learning for real-time robust facial expression recognition on a smartphone. In IEEE International Conference on Consumer Electronics, pages 564–567, Jan 2014.

[3] Yu-Hsin Chen, Tushar Krishna, Joel Emer, and Vivienne Sze. 14.5 eyeriss: an energy-e cient reconfigurable accelerator for deep convolutional neural networks. In IEEE International Solid-State Circuits Conference, pages 262–263, Jan 2016.

[4] Mohammad Motamedi, Philipp Gysel, Venkatesh Akella, and Soheil Ghiasi. Design space exploration of fpga-based deep convolutional neural networks. In Asia and South Pacific Design Automation Conference, pages 575–580, Jan 2016.

[5] Paul A Merolla, John V Arthur, Rodrigo Alvarez-Icaza, Andrew S Cassidy, Jun Sawada, Filipp Akopyan, Bryan L Jackson, Nabil Imam, Chen Guo, Yutaka Nakamura, Bernard Brezzo, Ivan Vo, Steven K Esser, Rathinakumar Appuswamy, Brian Taba, Arnon Amir, Myron D Flickner, William P Risk, Rajit Manohar, and Dharmendra S Modha. A million spiking-neuron integrated circuit with a scalable communication network and interface. Science, 345(6197):668–673, 2014.

[6] Yangqing Jia, Evan Shelhamer, Jeff Donahue, Sergey Karayev, Jonathan Long, Ross Girshick, Sergio Guadarrama, and Trevor Darrell. Caffe: Convolutional architecture for fast feature embedding. arXiv preprint arXiv:1408.5093, 2014.

[7] Torch. http://torch.ch/ . Accessed 2016-08-01.

[8] James Bergstra, Olivier Breuleux, Fr ?ed ?eric Bastien,
Pascal Lamblin, Razvan Pascanu, Guillaume Desjardins, Joseph Turian, David Warde-Farley, and Yoshua Bengio. Theano: a CPU and GPU math expression compiler. In Proceedings of the Python for Scientific Computing Conference, 2010.

[9] TensorFlow. https://www.tensorflow.org . Accessed 2016-08-01.

[10] Nvidia cuDNN. https://developer.nvidia.com/cudnn  . Accessed 2016-08-01.

[11] cuda-convent. https://code.google.com/p/cuda-convnet/  . Accessed 2016-08-01.

[12] Velesnet. https://velesnet.ml/  . Accessed 2016-08-01.

[13] Caffe Android Library.
https://github.com/sh1r0/caffe-android-lib  . Accessed 2016-08-01.

[14] Torch-7 for Android.
https://github.com/soumith/torch-android  . Accessed 2016-08-01.

[15] A convolutional neural network for the Android
phone. https://github.com/radiodee1/ 
awesome-cnn-android-python. Accessed 2016-08-01.

[16] Facial attractiveness prediction on Android. https://github.com/eldog/fmobile  . Accessed 2016-08-01.

[17] ARM. Mali-T600 Series GPU OpenCL, Version 1.1.0,
Developer Guide. Accessed 2016-08-01.

[18] Android RenderScript Developers Guide.
http://developer.android.com/guide/topics/ 
renderscript/compute.html. Accessed 2016-08-01.

[19] Messagepack. http://msgpack.org/index.html.

[20] Alex Krizhevsky, Ilya Sutskever, and Geoffrey E.Hinton. Imagenet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems, 2012.

[21] Y. Lecun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):2278–2324, Nov 1998.

[22] Alex Krizhevsky. Learning multiple layers of features from tiny images. Technical report, University of Toronto, 2009.

[23] Trepn power profiler. https://developer.qualcomm.com/software/trepn-power-profiler  .

本文編譯自:CNNdroid: GPU-Accelerated Execution of Trained Deep Convolutional Neural Networks on Android

雷鋒網(wǎng)相關(guān)閱讀:

圖像處理一定要用卷積神經(jīng)網(wǎng)絡(luò)?這里有一個另辟蹊徑的方法

深度學(xué)習(xí)全網(wǎng)最全學(xué)習(xí)資料匯總之模型介紹篇

一文讀懂 CNN、DNN、RNN 內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu)區(qū)別

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

CNNdroid:在 Android 上利用 GPU 加速執(zhí)行 CNN (卷積神經(jīng)網(wǎng)絡(luò))

分享:
相關(guān)文章

編輯

歡迎交流,微信:whl123465
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說