基于深度學習LeNet5模型的服飾分類方法設計_第1頁
基于深度學習LeNet5模型的服飾分類方法設計_第2頁
基于深度學習LeNet5模型的服飾分類方法設計_第3頁
基于深度學習LeNet5模型的服飾分類方法設計_第4頁
基于深度學習LeNet5模型的服飾分類方法設計_第5頁
已閱讀5頁,還剩15頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

湖南商務職業技術學院畢業設計

目錄

1引言............................................................1

1.1項目背景.....................................................1

1.2開發環境與工具...............................................2

1.2.1Python簡介............................................2

1.2.2TensorFlow簡介........................................2

1.2.3LeNet-5的簡介.........................................2

1.2.4LeNet-5的網絡結構.....................................3

1.2.5Keras簡介.............................................3

1.2.6Python第三方庫簡介....................................4

2需求分析........................................................4

2.1可行性需求分析...............................................4

2.1.1技術可行性.............................................4

2.1.2項目可行性.............................................4

2.2數據集的分析................................................5

2.3關鍵技術分析................................................5

2.3.1數據集采集技術.........................................5

2.3.2數據集處理技術.........................................5

2.3.3LeNet-5模型技術.......................................6

2.3.4模型的訓練與預測.......................................6

3數據集采集......................................................7

3.1服飾數據分析................................................7

3.2數據集需求分析..............................................7

3.3部分數據展示................................................8

4數據集處理......................................................8

4.1切分訓練集和測試集..........................................8

4.2瀏覽數據....................................................9

4.3歸一化數據..................................................9

4.4數據預處理..................................................9

I

湖南商務職業技術學院畢業設計

5模型構建及評估分析.............................................10

5.1LeNet-5模型構建............................................10

5.1.1LeNet-5模型的網絡結構................................10

5.1.2LeNet-5模型的搭建....................................11

5.2模型編譯...................................................12

5.2.1優化器設置............................................12

5.2.2損失函數設置..........................................13

5.3模型的訓練與調優...........................................13

5.3.1batch_size設置.......................................13

5.3.2模型訓練設置..........................................13

5.4設計效果展示...............................................14

5.4.1模型前端展示..........................................14

5.4.2設計效果展示及分析....................................15

5.4.3模型評估..............................................16

6小結...........................................................17

參考文獻...........................................................18

II

湖南商務職業技術學院畢業設計

基于深度學習LeNet5模型的服飾分類方法設計

1引言

隨著人們的生活質量變得越來越高,人們的追求已經慢慢的從為了吃飽穿暖

變成了吃好穿好了。但是隨之而來的便是種類繁多的食物種類和讓人眼花繚亂的

服飾款式給人們帶來了極大的不便。有沒有什么辦法來幫助人們解決這些讓人難

以區分的服飾問題呢?我就是利用Lenet-5模型來解決服飾分類的問題。

想解決這個問題就不得不提及近年來人工智能領域中取得的巨大突破的深

度學習了。深度學習在計算機視覺、圖像分類、圖像識別、多媒體等諸多領域中

都發揮了巨大的作用[1]。而我們的服飾分類問題歸根結底就是一個簡單的圖像分

類問題。例如,商家可以在商品附件擺放攝像頭,通過捕捉潛在客戶的面部影像

識別客戶的喜好,從而幫助商戶識別各種商品的受歡迎程度。再如,手寫數字識

別,通過事先寫好的程序,程序只需對比各種數字事先保存的照片與臨場采集的

照片,判斷是否為同一數字,即可將煩躁的數字識別出來。

1.1項目背景

隨著人們的生活越來越好,我們的衣食住行也變得越來越豐富,這也為我們

的選擇提出了不少難題。在大數據時代。隨著人工智能變成為了無處不在的技術,

我們便可以使用科技來為我們排憂解難[2]。我們可以將種類繁多的服飾變成不同

的數據,所以我們便利用機器學習進行分布式數據分析,也就是我們學習的計算

機視覺。計算機視覺包括一系列重要任務,如圖像分類、定位、圖像分割和目標

檢測[3]。其中,圖像分類可以被認為是最基本的內容。它構成了其他計算機視覺

任務的基礎。圖像分類還被廣泛應用在各個領域內,如人臉識別、手寫數字識別、

交通違法捕捉系統、剎車燈檢測、計算機視覺等。

而我就是利用了lenet-5模型來針對現實中琳瑯滿目的服飾進行分析,然后

進行分類。

1

湖南商務職業技術學院畢業設計

1.2開發環境與工具

1.2.1Python簡介

Python是一種計算機編程語言,1991年被公開發布。1995年他在弗吉尼亞

州的CNRI繼續他在python上的開發,并在那里發布了多個版本。自從python

的發展達到了頂峰[4]。

Python代碼都十分簡潔,沒有像c或c++那么嚴格的要求,僅僅只需要使用

強制空白符作為縮進即可。這樣使得python看起來更加美觀簡潔。因而使得

Python成為了現在世界上最流行的編程語言之一[5]。

Python常??梢詰糜诟鞣N領域,是兼容性很強的語言,無論是從編程、

小程序開發、機器人仿生代碼,人工智能,云計算還是是一些高科技的遠程醫療

和航天飛機控制都可以使用python編程。

1.2.2TensorFlow簡介

TensorFlow是人工智能領域的一個重要軟件工具,是一個采用計算圖

(ComputationalGraph)來計算數值的軟件庫,它擁有一個全面而靈活的生態

系統[6]。其中包含各種各樣的工具和庫,可以使人們對于機器學習技術更加簡單。

在了解TensorFlow之前我們需要記住一個結論就可以了TensorFlow使用

Tensor來表示數據的。Tensor就是張量,何為張量,通俗易懂的來說張量就是

一個變量,在不同的參考系數下按照提前確認的某種特定的法則進行轉換。

TensorFlow和人工智能的關系尤為密切。列如自動識別一個圖片里面的人

物是否是你需要的,簡單來說就是你百度他的時候,這個模型就可以識別并呈現

反饋給你他的圖片;TensorFlow就好像一個功能強大的機床,它可以幫助制造

出不同的產品就是我們的數學模型。這些模型被用于人工智能的各種應用,列如

通過模型判斷圖片中的物體分別是什么,其中都是依靠各種模型來給出判斷的。

1.2.3LeNet-5的簡介

LeNet-5誕生于1994年,是最早出現的卷積神經網絡之一,也是推動了深

度學習領域發展的重要角色。它常常被認為是CNN的開山之作[7]。它是一種用于

手寫數字識別和機器打印字符的非常高效的卷積神經網絡。

2

湖南商務職業技術學院畢業設計

1.2.4LeNet-5的網絡結構

第一層,我們為了方便稱呼理解也叫它C1卷積層。這一層采用卷積層對輸

入的數據進行特征提取,利用6個大小為5x5的卷積核生成6個特征圖。其步

長為1并且不需要使用擴充值。因此卷積后的特征層為28x28。激活函數

activation為ReLU。

第二層,我們為了方便稱呼理解也叫它S2池化層。這一層使用函數,對特

征進行降維處理,效果與池化相同。S2層使用大小為2x2的濾波器池化C1的

特征圖。該層共有2x6=12個參數。

第三層,我們為了方便稱呼理解叫它C3卷積層,這一層有16給大小為5x

5的卷積核,步長為1且不填充邊界。C3層將S2層6個14x14的特征圖卷積成

16個10x10的特征圖,但是值得注意的是,S2層與C3層的卷積核并不是全連

接的,而是部分連接。

第四層,我們為了方便稱呼理解也叫它S4池化層,它與第二層的濾波器相

似,也是2x2的,所以,S4層的特征圖池化后,將生成32個5x5的特征圖。

第五層,我們為了方便稱呼理解叫它C5層,它有120個5x5的卷積核,將

產生120個1x1的特征圖,但又因為第五層和第四層是全連接的,所以第五層

參數的個數不能參照C1層來計算,而是參照第三層來計算,但又因為此時是沒

有組合的,所以應該是48120個。

第六層,我們為了方便稱呼理解叫它F6全連接層。F6全連接層有84個單

元,單元的個數與輸入層的設計有關,這一層作為經典的卷積神經網絡層,通過

Flatten函數將矩陣拉直成一維向量,再通過Dense函數構建全連接。其中一個

單元都計算輸入向量與權值參數的點積并加上偏置參數,然后傳給sigmoid函數,

產生該單元的一個狀態并傳遞給輸出層[8]。由于C5有120個單元;F6層有84

個單元,每個單元都將容納120個單元的計算結果。因此,F6層參數的個數為

(120+1)x84=10164。

第七層,我們為了方便稱呼理解叫它全連接層(output)。它總共有10個單

元,代表數字0—9,利用函數,將F6層84個單元的輸出作為節點的輸入xj,計

算歐氏距離。距離越近,結果就越小,意味著識別的樣本越符合該節點所代表的

字符。由于該層是全連接層,參數個數為84x10=840。

1.2.5Keras簡介

Keras是高級的深度學習鏈接庫,對初學者學習門檻低,可以很容易地建立

3

湖南商務職業技術學院畢業設計

深度學習模型,并且進行訓練、預測。Keras的前身是Fran?oisChollet為項目

所的編寫的代碼,在2015年分離成為開源的人工神經網絡工具。2016年4月,

Keras在PIPy上發布了第一個穩定版本1.0.0。2017年5月,Keras版本

2.0.0發布。同年6月,Keras版本2.0.5測試性地將Microsoft-CNTK加入后臺

選項[9]。

1.2.6Python第三方庫簡介

TensorFlow庫:該庫主要是把機器學習中的通用功能封裝成了庫,并提供

了簡易的API,使得我們在構建機器學習系統時不需要再做那些紛繁復雜的數學、

工程工作,能夠把主要精力放在自己需要的模型和項目上面。簡單來說,

TensorFlow庫讓機器學習工程從匯編語言時代,上升到了高級語言時代,使得

機器學習這種曾經只存在于高檔實驗室由高級專業人才才能把玩的高端技術變

成人人都能用的“玩具”[10]。

Matplotlib庫:Matplotlib庫主要被用于繪制各類可視化圖形的命令子庫。

2需求分析

2.1可行性需求分析

2.1.1技術可行性

本項目是利用python讀取數據,再通過python的第三方庫對所獲得的數據

進行分類再通過數據展示、數據預處理、構建lenet-5模型與lenet-5模型的編

譯與擬合來監控預測精度也就是分類的準確率。

2.1.2項目可行性

近年來,服飾的種類和樣式越來越多,在款式、材料、用途、穿著對象、制

作方法等方面各有所不同。在服飾種類繁多的環境下,如何快速準確的識別服飾

的種類也變得尤其重要。本項目主要利用python搭建對服飾進行分類的模型。

利用fashion_mnist數據集中的數據通過卷積池化操作對圖像特征的提取進行

分析后再分類,并通過損失函數對模型預測判斷其準確性,最后輸出。從而讓服

飾商品的銷售掌握所銷售的服飾類別的多少,來更有針對性地了解市場動態,分

4

湖南商務職業技術學院畢業設計

析服飾銷售的變化趨勢,主動適應市場需求;而對于消費者來說,有利于消費者

選購服飾由于服飾品種繁多所造成的錯買。從而解決一些本來可以避免的麻煩。

2.2數據集的分析

由于本次項目使用的fashion_mnist數據集是一個用于機器學習的圖像數

據集,再加上通過爬蟲獲取的數據并處理,這為我們帶來了極大的便利。我們只

需要運用TensorFlow深度學習框架,下載并讀入數據集即可。但是該數據集與

MNIST手寫數字數據集還是有點不一樣的,fashion_mnist數據集包含了10個類

別的圖像,但是它們都有一個共同點就是它們都是灰度圖片,并且都與lenet-5

所要求的32x32的圖片大小不同,它們都是28x28的,但是這并不會影響對

模型的應用。

2.3關鍵技術分析

2.3.1數據集采集技術

數據集獲取的反式往往有兩種,一種是通過網絡爬蟲在網上爬取獲取的原始

數據,二是通過各種網站下載已經有的數據。

其中網絡爬蟲又叫網絡蜘蛛、網絡機器人。它們可以利用腳本來代替人工進

行對網絡數據的爬取。然后使用和處理這些信息已對文檔進行分類并提供所需要

的數據。他們被廣泛應用于網絡搜索引擎或其他類似的網站,從而獲取或更新這

些網站的內容。

而通過各種網站下載已經有的數據相比網絡爬蟲在網上爬取獲取的原始數

據來說可以說是很簡單了,它甚至已經將數據整理好了,只需要你通過相應的代

碼直接讀取加載使用就行了,比如手寫數字識別的mnist數據集和我們所用到的

fashion_mnist數據集,只需要簡單的幾行代碼就可以得到你所需要的數據了。

2.3.2數據集處理技術

在進行圖片分類時我們讀取的數據不一定會達到我們模型規定的標準,這些

數據可能會包含噪聲、缺失值又可能是維度太低或太高,無論遇到哪些問題,這

些數據都將無法直接用于機器學習模型。這個時候我們就需要對得到的數據來進

行處理,我們把這一操作稱之為數據預處理。所謂數據預處理就是將所得到的數

據進行一定的操作已到達所需求的標準。這樣不僅僅可以讓模型繼續運行還可以

5

湖南商務職業技術學院畢業設計

確保機器學習模型的準確性和效率。

其實數據預處理的方法主要還是數據清洗、數據轉換、數據降噪和增強以及

特征選擇。而我們所用到的fashion_mnist數據集已經被統一整理成大小28x

28的圖片了,我們就不需要再進行數據清洗了。但當它加載在我們的程序時,

我們得到數據還不滿足Tensorflow的數據規范,我們還需要進行一定條件的數

據轉換。主要還有兩個方面;第一就是維度問題,我們得到的是一個三維的像素

矩陣,但是TensorFlow卻是一個四維的,所以我們需要將得到的數據利用

reshape()函數升維。第二就是優化算法,因為我們得到的train_images和

test_images都是整數,最大值是255,為了讓后續的算法更加簡單,我們需要

將它們的數值都除以255將其變成0-1的數。自此我們所得到的數據就已經滿足

tensorFlow的數據格式了,就可以繼續執行下去。

2.3.3LeNet-5模型技術

LeNet-5是一個簡單的神經網絡,它的網絡模型雖然很小,但是該有的功能

都有。它的介紹我們已經很熟悉了就不再多介紹了。我們現在主要了解搭建

Lenet-5的方法。首先我們將所需要的數據加載好,然后將得到的數據按照模型

所需要的規范處理好,然后對輸入的圖像經過卷積、池化、卷積、池化、卷積、

建立全連接層最后輸出。

2.3.4模型的訓練與預測

其實我們可以將模型看出一個函數,訓練模型就是用已經有的數據,來通過

一些方法確定函數的參數,參數確定后的函數就是訓練的結果。簡單來說你可以

把機器想象成帶小孩子,你帶他去公園玩,公園的湖里面有鴨子。旁邊有鴿子,

他們第一次見不知道是什么,你告訴小孩子那個是鴨子。但突然有一種鴿子飛過

來,你告訴他這個不是鴨子。久而久之,小孩子就會產生認知,這個學習過程就

相當于訓練。以后你們再出來玩,再遇到鴿子時,你再問小孩,這個是鴨子嗎?

他會回答不是。這個就是預測。而我們就相當于監督者,也可以稱之為監督學習。

當然有監督學習就有無監督學習,無監督學習就是小孩子自己通過動物的特征進

行辨識和分類。

6

湖南商務職業技術學院畢業設計

3數據集采集

3.1服飾數據分析

服飾分類有什么用?為什么要服飾分類?這是我需要思考的問題。我國是服

飾大國,也是世界上最大的服飾消費國,并且每年快速增長,存在著極大的市場,

但依然也存在了一些問題,如服飾種類多,相互模仿難以快速區分。尤其是這幾

年疫情的結束,我們已經不在是閉門不出了,都需要出門了,所以我們的服飾銷

售趨勢也越來越高。但我們怎么從讓人眼花繚亂的多種服飾選出自己想要的呢?

這個時候我們可以利用知識的力量,通過大數據將服飾圖片分類,然后選出自己

想要的。而且服飾圖像數據集已經有了,我們也可以導入自帶的服飾數據集

fashion_mnist,當然,為了補充數據,我們也可以進行爬蟲。

3.2數據集需求分析

打開谷歌瀏覽器,在搜索欄中輸入關鍵字:服飾圖片。具體如下圖3-1所示:

圖3-1數據網頁頁面

按F12調出開發者工具,刷新頁面,如圖3-2所示,然后我們利用全局搜索

工具定位到所需數據位置。通過HTTP庫向目標站點發起請求,即發送一個

Request,請求可以包含額外的headers、data等信息,然后等待服務器響應。

如果服務器能正常響應,我們會得到一個Response,這里了包含很多內容,然

7

湖南商務職業技術學院畢業設計

后我們對得到的內容進行解析,篩選出我們需要的東西,然后將數據保存起來。

圖3-2分析數據頁面

3.3部分數據展示

當我們已經獲得了數據集里面的數據時,我們可以通過其中的matplotlib

庫來對我們得到的數據展示一下,當然并不是全部展示只需要展示一部分就可以

了,為了方便我們查看,我們先將服飾分類的類別給一個數組,在設置畫布大小

通過for循環將16張圖片以4x4的布局展示出來。具體代碼如下圖3-3示:

圖3-3展示數據

4數據集處理

4.1切分訓練集和測試集

我們通常在處理數據過程中需要把得到的數據集切分為訓練集和測試集,在

這里我們使用的數據集使用的方法是直接賦值具體如下圖4-1:

8

湖南商務職業技術學院畢業設計

圖4-1切分數據集

4.2瀏覽數據

在訓練模型之前我們需要先瀏覽一下訓練數據集的參數。具體如下圖4-3所

示:

圖4-2瀏覽數據集

執行代碼所得到的結果如圖4-3所示,通過代碼顯示訓練集里面有60000個

圖像,每個圖像由28x28的像素表示:

圖4-3數據集結果展示

4.3歸一化數據

簡而言之,歸一化的目的就是使得預處理的數據被限定在一定的范圍內(比

如[0,1]或者[-1,1]),從而提高我們網絡的訓練速度。具體如下圖4-4所示:

圖4-4歸一化數據

4.4數據預處理

由于我們得到的訓練數據和測試數據是三維的并不滿足TensorFlow規定的

四維數據規范,我們便需要通過reshape()函數對數據集進行升維操作。具體

代碼如下圖4-5所示:

9

湖南商務職業技術學院畢業設計

圖4-5數據預處理

當然不僅僅只有這訓練數據和測試數據不滿足TensorFlow要求的標準。訓

練標簽和測試標簽也不滿足TensorFlow的數據格式,需要通過kears庫中的

np_utils函數來把它們變成one-hot的編碼形式。具體代碼如下圖4-6所示:

圖4-6轉換one-hot編碼

5模型構建及評估分析

5.1LeNet-5模型構建

lenet-5模型總共有7層網絡,傳統上我們不將輸入層視為網絡層次結構之

一。這七層分別為卷積層、池化層、卷積層、池化層、卷積層、全連接層和輸出

層。所以我們只需要一層一層搭建就可以構建好完整的LeNet-5模型。

5.1.1LeNet-5模型的網絡結構

如圖5-1所示,輸入層從名字就能知道這一層是為我們模型輸入數據的就不

需要再過多結束了,卷積層,學過深度學習的都知道卷積層是卷積神經網絡中最

最重要的組成部件,從卷積神經網絡這個名字就可以看到卷積層的重要性了,池

化層也重要,在卷積網絡中,兩個卷積層中間往往還有一個池化層,池化層可以

非常有效的減小矩陣的大小,這樣不僅加了快計算速度,還可以有效的防止過擬

合。全連接層就是將每一個節點都與上一層的所有節點相連,把前面所提取的特

征綜合起來。簡單來說就是將特征表示整合成一個值。輸出層它作為神經網絡的

最后一層,它的主要作用就是將神經網絡對輸入數據的處理結果輸出。尤其要注

10

湖南商務職業技術學院畢業設計

意的是它不像卷積層和池化層那樣一個模型里面有很多個,它是唯一的,也就是

說每一個神經網絡只能有一個輸出層。

圖5–1LeNet-5網絡模型

5.1.2LeNet-5模型的搭建

我們經過了上面了了解我們已經知道了LeNet-5的結構有七層具體搭建的

方法如下圖5-2所示:

圖5-2搭建LeNet-5

自此,LeNet-5各層就已經梳理完成了,運行的模型概要圖如下圖5-3所示:

11

湖南商務職業技術學院畢業設計

圖5–3模型搭建完成

5.2模型編譯

5.2.1優化器設置

優化器就是深度學習中用來計算模型訓練和模型輸出的。主要是為了讓其最

接近最優值,目前來說所有的深度學習都需要設置優化器,我們最常用的就是基

于梯度下降的優化器,在這里我們選擇的是Adam優化器,如圖5-4所示,它使

用起來非常方便,梯度下降速度快就是容易在最優值附件震蕩,這也是我們訓練

模型總是會卡在某些部分的原因。

圖5–4優化器、損失函數設置

12

湖南商務職業技術學院畢業設計

5.2.2損失函數設置

損失函數是衡量模型預測值與真實值差距的一種方法,選擇一個好的損失函

數對模型預測的好壞有重要影響。而服飾分類問題歸根結底還是一個多分類問題,

而在分類問題中最常用的就是交叉熵損失函數,在這里我們選擇的損失函數是

sparse_categorical_crossentropy,如圖5-4所示,它是一種用于多分類問題

的損失函數,這種損失函數會將整數標簽映射到模型的輸出結果上,并計算模型

預測值與真實值之間的差距。

5.3模型的訓練與調優

5.3.1batch_size設置

在模型訓練中我們經常看到epoch和batch_size,其中epoch表示訓練集

中全部樣本的訓練次數,而batch_size表示一次訓練中樣本的個數,通過不斷

的測試我們將epoch設置為10,batch_size設置為60。如圖5-5所示。

圖5-5batch-size設置

5.3.2模型訓練設置

而模型的訓練需要通過model.flt()函數來實現,函數中的train_images

和train_labels分別是訓練集的圖像數據和標簽,epochs表示訓練的次數,

validation_data是用來驗證模型準確率的數據。代碼如下圖5-6所示:

圖5-6訓練模型

運行之后可以得到隨著每增加一次的訓練精確度越來越高,如下圖5-6所示:

13

湖南商務職業技術學院畢業設計

圖5-7訓練結果

5.4設計效果展示

5.4.1模型前端展示

當我們的程序設計檢驗完成后,為了方便我們使用,我們需要通過前端將其

展現出來,具體如下圖5-8所示,當我們需要對遇到的服飾進行分類時,只需要

點擊上傳圖片,其實就是選擇圖片所在的路徑來確定要分類的圖片,當圖片上傳

成功后點擊開始識別,此時系統會比對計算模型的特征然后將結果輸出。

圖5-8前端窗口

14

湖南商務職業技術學院畢業設計

5.4.2設計效果展示及分析

首先我們點擊上傳圖片按鈕上傳一張圖片,此時會將我們選擇的圖片展示在

圖片位置框內,然后點擊開始識別按鈕,經過短暫的運算如圖5-9所示。最后會

將識別結果輸出。如圖5-10所示:

圖5-9python運行過程

圖5-10運行結果

通過上圖5-9可以看出,我們的模型會將我們上傳的圖片提取特征進行對比

分析,然后輸出概率最大的類別。從而將服裝的類別輸出。

15

湖南商務職業技術學院畢業設計

5.4.3模型評估

當我們訓練完模型之后需要通過modek.evaluate()函數來對我們的模型

進行評估。代碼實現如下圖5-10所示:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論