精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在iPhone上建立第一個機器學習模型

移動開發 機器學習
讀完這篇文章,大家將會了解Apple CoreML是什么以及為何它勢頭正猛。我們也將通過開發一款iPhone上的垃圾短信分類app來與大家一起一探CoreML的實現細節。

引言

作為一名數據科學家,我一直有一個夢想——***科技公司在與我相關的領域不斷推出新產品。

如果你觀看了Apple公司***的iPhone X發布會,你會發現iPhone X具有非常酷的特性,比如FaceID、動態表情、增強現實,這些特性都使用了機器學習。作為一名駭客,我決定親自上手探索一下如何建立那樣的系統。

進一步調查后我發現了一個很有趣的工具,那就是Apple官方面向開發者推出的機器學習框架工具CoreML。它可以在iPhone、Macbook、Apple TV、Apple watch等任何一個蘋果設備上使用。

[[206275]]

另一個有趣的發現是Apple在***的iPhone手機上設計了一個定制GPU,以及一個帶有神經引擎的A11先進仿生學處理芯片,以便用于優化機器學習。

隨著核心組件計算引擎功能日益強大,iPhone將開辟機器學習的新途徑,CoreML在未來的意義將越來越重要。

讀完這篇文章,大家將會了解Apple CoreML是什么以及為何它勢頭正猛。我們也將通過開發一款iPhone上的垃圾短信分類app來與大家一起一探CoreML的實現細節。

同時,我們也會通過客觀評價CoreML的利弊來結束本篇文章。

如何在你的iPhone上建立***個機器學習模型

文章目錄:

  1. CoreML是什么?
  2. 建立系統
  3. 案例學習:實現一個iPhone上的垃圾短信分類app
  4. 使用CoreML的利弊

01、CoreML是什么?

如何在你的iPhone上建立***個機器學習模型

今年,Apple公司在每年一次的全球開發者大會WWDC(類似于谷歌的I/O會議)上大肆宣傳CoreML。為了更好地理解CoreML的作用,我們需要了解一些背景。

CoreML的背景

有趣的是,這并不是Apple公司***次發布移動端機器學習框架。去年它就發布了一些同樣的框架庫:

  1. Accelerate 框架和基本神經網絡子程序(BNNS)——高效利用CPU并使用卷積神經網絡進行預測。
  2. Metal Performance Shaders CNN(MPSCNN)——高效利用GPU并使用卷積神經網絡進行預測。

這兩個框架庫的區別在于,一個針對CPU優化而另一個針對GPU。這是因為有時在inference(推斷)過程中CPU比GPU計算更快,而在training(訓練)過程中幾乎每次都是GPU計算更快。

但為了提高性能,框架會非常接近底層硬件,使得這些混合框架對開發者造成混亂,從而很難編程。

走進CoreML

如何在你的iPhone上建立***個機器學習模型

CoreML 會在之前提到的兩個庫上面提供一個抽象層,并且還會提供一個簡單的接口,以達到同樣的效率。另一個好處是,在我們的app運行時,CoreML充分照顧到了CPU與GPU之間的上下文切換。

換句話說,假如我們有一個耗內存的任務,它涉及文本處理(自然語言處理),CoreML將自動在CPU運行;而如果我們有一個計算繁重的任務,例如圖像識別,它將使用GPU;當app包含這兩種功能的時候,它又會自動切換從而使得兩者都得到***化的利用。

如何在你的iPhone上建立***個機器學習模型

CoreML還將提供什么?

CoreML頂層還附帶了三個庫:

  1. Vision:這個庫提供了高性能圖像分析與計算機視覺技術,用于人臉識別、特征檢測以及圖像與視頻中的場景識別。
  2. Foundation(NLP):顧名思義,它提供了自然語言處理的一些功能
  3. Gameplay Kit:用于游戲開發的庫,此外它還提供了AI,并運用決策樹。

以上提到的所有庫都可以用一些簡單的接口輕松使用,可用于完成一系列任務。通過上述的庫,CoreML最終框架圖如下:

如何在你的iPhone上建立***個機器學習模型

注意,上述設計給iOS應用程序提供了一個很好的模塊化結構。你可以使用不同層進行不同的任務,也可以用多種方式使用它們(例如,在app中使用NLP進行圖像分類)。了解更多:Vision、Foundation與GameplayKit。好了,現在我們有了足夠的理論知識,是時候實踐一下了!

“微信排版限制,需要代碼的同學請看文末的原文鏈接自行查找”

02、建立系統

為了充分使用CoreML,你需要遵循如下要求:

1.OS:MacOS(Sierra 10.12或以上)

2.Python 2.7和pip:點擊下載mac上的python。打開終端,輸入如下代碼安裝pip:

  1. sudo easy_install pip 

3.coremltools:這個包有助于將你的模型從python轉換成CoreML能理解的格式。在終端輸入如下代碼進行安裝:

  1. sudo pip install -U coremltools 

4.Xcode 9:這是用于構建Apple設備上應用程序的默認軟件。點此下載。下載Xcode之前,你需要使用Apple ID進行登陸。

如何在你的iPhone上建立***個機器學習模型

登陸之后,你需要驗證你的apple ID。你將會收到與注冊Apple ID的設備相同的通知。

如何在你的iPhone上建立***個機器學習模型

點擊“允許”并輸入網站顯示的6位密碼。

如何在你的iPhone上建立***個機器學習模型

當你完成這一步,你將會看到一個下載選項。你可以在那兒下載Xcode。現在,我們建立好了系統,準備好了的話就讓我們進入實現部分!

03、案例學習:實現一個iPhone上的垃圾短信分類app

在本次開發中,我們將著重于在兩個重要途徑上來使用CoreML的能力。讓我們開始吧!

將你的機器學習模型轉換成CoreML格式

CoreML其中一個優勢,或者我應該說它的創造者作出的明智的決定是,支持在sklearn、caffe、xgboost等其他流行框架中訓練好的機器學習模型的轉換。

數據科學社區并不會不嘗試CoreML試行,因為他們可以在他們最喜歡的環境中進行實驗、訓練他們的模型,然后輕松導入并在iOS/MacOS的app上使用。

下面是即時可用的CoreML支持的框架:

如何在你的iPhone上建立***個機器學習模型

Mlmodel是什么?

為了使轉換過程簡單,Apple設計了它自己的開放格式來代表跨框架機器學習模型,即mlmodel。這個模型文件包含了模型各層的描述、輸入、輸出、類標簽、任何需要對數據進行的預處理。它還包含了已學習的參數(權重及偏差)。

轉換流程如下:

  1. 在你最喜歡的框架中訓練模型
  2. 使用python模塊coremltools將模型轉換為.mlmodel格式
  3. 在app中使用模型

如何在你的iPhone上建立***個機器學習模型

在本次例子中,我們將在sklearn中訓練一個垃圾短信分類器,然后將該模型轉給CoreML。

關于垃圾短信數據集

SMS垃圾短信數據集 v.1是一個公開的SMS標注短信數據集,用于手機垃圾短信研究。它包含了5574份真實無編碼的英文短信,這些短信都標注了合法(做作)或者垃圾短信。

如何在你的iPhone上建立***個機器學習模型

你可以在此下載該數據集。

建立基礎模型

我們使用sklearn中的LinearSVC建立基礎模型。同時,我們提取短信文本的TF-IDF值作為模型特征。TF-IDF是自然語言處理中的一種方法,它基于唯一標識文檔的詞來分類文檔。如果你想要學習更多NLP和tf-idf的知識,你可以閱讀這篇文章。代碼如下:

 

  1. import numpy as npimport pandas as pd#Reading in and parsing dataraw_data = open('SMSSpamCollection.txt''r')sms_data = []for line in raw_data: split_line = line.split("\t") sms_data.append(split_line) 
  2. #Splitting data into messages and labels and training and testsms_data = np.array(sms_data)X = sms_data[:, 1]y = sms_data[:, 0]  
  3. #Build a LinearSVC modelfrom sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.svm import LinearSVC  
  4. #Build tf-idf vector representation of datavectorizer = TfidfVectorizer()vectorized_text = vectorizer.fit_transform(X)text_clf = LinearSVC()text_clf = text_clf.fit(vectorized_text, y) 

我們的模型建立好了,讓我們用一份垃圾短信測試一下:

  1. #Test the modelprint text_clf.predict(vectorizer.transform(["""XXXMobileMovieClub: To use your credit, click the WAP link in the next txt message or click here>> http://wap. xxxmobilemovieclub.com?n=QJKGIGHJJGCBL"""])) 

有趣,我們的模型效果很好!讓我們添加交叉驗證:

 

  1. #Cross - Validationfrom sklearn.model_selection import cross_val_scorecross_score = cross_val_score(text_clf, vectorized_text, y, cv=10)print cross_scoreprint "mean:",np.mean(cross_score) 
  2. 現在已建好模型,為使它適用于CoreML,我們需要把它轉換成.mlmodel格式。用之前安裝的coremltools工具包來實現。以下代碼能將我們的模型轉換成.mlmodel格式。  
  3. import coremltools  
  4. #convert to coreml model  
  5. coreml_model = coremltools.converters.sklearn.convert(text_clf, "message""spam_or_not" 
  6. #set parameters of the model 
  7. coreml_model.short_description = "Classify whether message is spam or not"  
  8. coreml_model.input_description["message"] = "TFIDF of message to be classified"  
  9. coreml_model.output_description["spam_or_not"] = "Whether message is spam or not"  
  10. #save the model  
  11. coreml_model.save("SpamMessageClassifier.mlmodel"

這是如何運作的呢?

首先我們運用coremltools Python工具包。再選擇一個轉換器對模型進行轉換,本例中用converters.sklearn,因為要轉換的模型是用sklearn工具建立的。然后在.convert()括號內聲明模型對象、輸入變量名稱、輸出變量名稱。接下來設置模型參數來添加更多關于輸入、輸出的信息,***用.save()保存已轉換成CoreML格式的模型文件。

如何在你的iPhone上建立***個機器學習模型

雙擊模型文件,會用Xcode打開。

如何在你的iPhone上建立***個機器學習模型

如你所見,該模型文件顯示了很多信息,關于模型的類型、它的輸入、輸出,輸入輸出的類型等。我已在上圖中用紅色標記。你可以將這些描述和轉換成.mlmodel時所提供的一一對比。

將自己的模型引入CoreML就是這么簡單。現在你的模型已經在蘋果生態系統里了,接下來真正好玩的開始啦!

注意:這一步的完整代碼文件請看這里。進一步了解coremltools請看這里,提供的不同種類的轉換器請看這里。

將該模型用于我們的app

既然已經訓練好模型并引入CoreML中,讓我們用該模型開發一個iPhone垃圾信息分類app吧!

我們將在模擬器上運行app。模擬器這一軟件能顯示app的界面及運行情況,像在iPhone上真正運行那樣。這樣節省了大量時間,因為用iPhone運行app之前,我們就可以測試代碼、調試。看一下最終產品長什么樣子吧:

如何在你的iPhone上建立***個機器學習模型

下載工程

我已經為我們的app制作了一個簡單基礎的UI放在GitHub上。用以下命令加載并運行:

 

  1. git clone https://github.com/mohdsanadzakirizvi/CoreML-on-iPhone.git  
  2. cd CoreML-on-iPhone/Practice\ App/  
  3. open coreml\ test.xcodeproj/ 

這會在Xcode打開我們的項目。

如何在你的iPhone上建立***個機器學習模型

在Xcode窗口中我用紅色標示了三個重要區域:

  1. 左上角的播放按鈕用來啟動app在模擬器運行。
  2. 播放按鈕的正下方列出了與我們項目相關的文件和文件夾。這是項目導航欄,方便你找項目里的文件和文件夾。
  3. 播放按鈕旁邊寫著iPhone 8,表示你想用模擬器仿真的目標設備。你可以點擊它,在下拉列表里選擇iPhone 7。

讓我們開始運行app吧,看看會發生什么。點擊左上角的播放按鈕讓模擬器運行app。在框中隨便鍵入些文字,點擊預測按鈕。發生了什么?

如何在你的iPhone上建立***個機器學習模型

到現在,我們的app什么也沒做,只是原樣輸出框中鍵入的文字。

向你的app中添加一個訓練好的模型

相當簡單:

  • 將你的.mlmodel模型文件拖入到Xcode窗口工程導航欄中。
  • 做好后,會彈出一個含有幾項選擇的窗口,默認缺省,點擊“結束”。
  • 當你像這樣拖拽文件到Xcode時,自動在工程中生成該文件的參考路徑。這樣你能輕松地在代碼中獲取該文件。

如何在你的iPhone上建立***個機器學習模型

編譯模型

在能夠用我們的模型進行推測之前,需要讓Xcode在建立階段中編譯模型。以下是具體步驟:

在工程導航欄中選擇有藍色標識的文件

如何在你的iPhone上建立***個機器學習模型

會在右手邊打開工程設置。點擊Compile Sources(編譯源)并選擇+標識。

在新出現的窗口中選擇 SpamMessageClassifier.mlmodel文件,點擊新增。

如何在你的iPhone上建立***個機器學習模型

現在每次運行app,Xcode就會編譯我們的機器學習模型,使它能用來做預測。

在代碼中創建模型

任何為蘋果設備開發的app都用swift編程。你不需要學swift但如果以后你有興趣深入,你可以跟著這個教程學。

在工程導航欄中選擇 ViewController.swift。這一文件包含大部分控制app功能的代碼。

如何在你的iPhone上建立***個機器學習模型

第24行的 predictSpam() 函數會做最多的工作。刪除第25行,向函數中添加以下代碼:

 

  1. let enteredMessage = messageTextField.text!  
  2. if (enteredMessage != ""){  
  3. spamLabel.text = ""  
  4.  
  5. //Fetch tfidf representation of text  
  6. let vec = tfidf(sms: enteredMessage)  
  7. do {  
  8. //Get prediction on the text  
  9. let prediction = try SpamMessageClassifier().prediction(message: vec).spam_or_not  
  10. print (prediction)  
  11. if (prediction == "spam"){  
  12. spamLabel.text = "SPAM!" 
  13.   
  14. else if(prediction == "ham"){  
  15. spamLabel.text = "NOT SPAM"  
  16.  
  17.  
  18. catch{  
  19. spamLabel.text = "No Prediction"  

以上代碼檢查用戶是否向框內輸入了任何信息。如果有,調用tfidf()函數計算文本的tfidf值。然后生成一個SpamMessageClassifier 對象實例,再調用.prediction() 函數。這與sklearn中的 .predict() 函數相同。然后基于預測展示恰當的信息。

但為什么需要tfidf()?

記住我們基于文本的tf-idf表征來訓練模型,因此我們的模型需要相同形式的輸入。一旦獲得鍵入的文本框的信息,就調入tfidf()函數來做同樣的事。來寫這一步的代碼吧,復制下列代碼放在predictSpam()函數后:

 

  1. //MARK: Functionality code  
  2. func tfidf(sms: String) -> MLMultiArray{  
  3. //get path for files  
  4. let wordsFile = Bundle.main.path(forResource: "wordlist", ofType: "txt" 
  5. let smsFile = Bundle.main.path(forResource: "SMSSpamCollection", ofType: "txt" 
  6. do {  
  7. //read words file  
  8. let wordsFileText = try String(contentsOfFile: wordsFile!, encoding: String.Encoding.utf8)  
  9. var wordsData = wordsFileText.components(separatedBy: .newlines)  
  10. wordsData.removeLast() // Trailing newline.  
  11. //read spam collection file  
  12. let smsFileText = try String(contentsOfFile: smsFile!, encoding: String.Encoding.utf8)  
  13. var smsData = smsFileText.components(separatedBy: .newlines)  
  14. smsData.removeLast() // Trailing newline.  
  15. let wordsInMessage = sms.split(separator: " "
  16.  //create a multi-dimensional array  
  17. let vectorized = try MLMultiArray(shape: [NSNumber(integerLiteral: wordsData.count)], dataType: MLMultiArrayDataType.double 
  18. for i in 0..  
  19. let word = wordsData[i]  
  20. if sms.contains(word){  
  21. var wordCount = 0  
  22. for substr in wordsInMessage{  
  23. if substr.elementsEqual(word{  
  24. wordCount += 1  
  25.  
  26.  let tf = Double(wordCount) / Double(wordsInMessage.count 
  27. var docCount = 0  
  28. for sms in smsData{  
  29. if sms.contains(word) {  
  30. docCount += 1  
  31.  
  32. let idf = log(Double(smsData.count) / Double(docCount))  
  33. vectorized[i] = NSNumber(value: tf * idf) 
  34.  else {  
  35. vectorized[i] = 0.0  
  36.  
  37.  
  38. return vectorized  
  39. } catch {  
  40. return MLMultiArray()  
  41.  

以上代碼得到文本框內輸入信息的tfidf表征,為此讀取SMSSpamCollection.txt原始數據庫并返回同樣信息。一旦你保存項目然后再次運行模擬器,你的app就會運行良好。

4、CoreML優缺點

像每個發展中的庫一樣,CoreML有優點也有缺點。讓我們說清楚。

優點:

  • 對在移動設備上運行性能進行優化,最小化內存和能量消耗。
  • 在移動設備上運行保證了用戶隱私,不再需要將數據發給服務器做預測。
  • 在移動設備上運行意味著甚至在沒聯網的時候都可以做預測,此外對用戶來說反應時間更短。
  • 能自己決定在CPU還是GPU上運行(或者都有)。

因為它可以用CPU,所以你能在iOS模擬器上運行它(iOS模擬器不支持GPU)。

提供了很多模型,因為它能從其他主流機器學習框架中引入模型:

  • 支持向量機(SVM)
  • 樹集成,如隨機森林、提升樹
  • 線性回歸和邏輯回歸
  • 神經網絡:前向反饋、卷積、循環

如何在你的iPhone上建立***個機器學習模型

缺點:

  • 只支持有監督模型,不支持無監督模型和強化學習。
  • 不支持模型在設備上再訓練,只能做預測。
  • 如果CoreML不支持某種層,你就不可以使用。目前還不能用自己的層擴展CoreML。
  • CoreML工具只支持少量訓練工具的特定版本(竟然不支持tensorflow)。
  • 不能看中間層的輸出,只能得到預測結果。
  • 只支持回歸和分類(不支持聚類、排序、降維等)。

結語

本文中,我們學習了CoreML及應用它開發iPhone機器學習app。CoreML是一個較新的庫,因此有自己的優點和缺點。有一個非常有用的優點是它在本地設備上運行,因此速度更快,保證數據隱私。但同時,它功能不全面,對數據科學家的需求考慮還不夠周全。期待后續版本會改進。

如果你在某個步驟遇到困難,本文所有代碼都在GitHub上。

責任編輯:未麗燕 來源: 大數據文摘
相關推薦

2021-11-02 08:00:00

機器學習API技術

2011-07-06 18:10:20

Xcode 4 iPhone

2023-05-19 08:49:58

SQLAlchemy數據庫

2021-12-02 08:00:00

Kubernetes集群容器

2016-10-09 13:40:44

PythonSlack聊天機器人

2010-07-30 14:50:38

Flex項目

2019-09-23 11:46:02

FedoraTFTP服務器 Linux

2020-02-26 17:39:18

Python機器人Word

2024-06-13 08:36:11

2024-03-18 09:50:18

Selenium元素Python

2021-09-02 08:02:50

深度學習Kubernetes集群管理

2024-08-15 14:48:57

2016-08-05 12:58:44

GitLinux開源

2011-07-06 18:31:21

Xcode 4 iPhone 模擬器

2022-08-14 08:29:21

npmNode

2021-11-01 12:13:53

Linux僵尸進程

2018-12-17 09:10:52

機器學習TensorFlow容器

2011-03-21 14:24:13

Debian 6

2011-03-03 21:04:08

bug程序員

2010-07-30 14:58:06

Flex應用
點贊
收藏

51CTO技術棧公眾號

这里是久久伊人| 99re成人在线| 欧美国产日本在线| 国产全是老熟女太爽了| 久久青草免费| 亚洲国产欧美日韩另类综合| 奇米888一区二区三区| 国产又粗又猛视频| 无码精品黑人一区二区三区 | 成人手机视频在线| 欧美一级片免费| 看国产成人h片视频| 国内精品久久影院| 亚洲毛片亚洲毛片亚洲毛片| 亚洲视频三区| 欧美三级在线视频| 日韩免费视频播放| 91国内在线| 国产欧美精品一区二区色综合朱莉| 91在线免费观看网站| 一级黄色大片视频| 亚洲福利久久| 欧美成人免费在线观看| 永久免费毛片在线观看| 老牛影视av一区二区在线观看| 欧美日韩视频在线第一区| 亚洲欧洲日产国码无码久久99| 黄色免费在线观看网站| 中文字幕精品在线不卡| 免费日韩av电影| 丰满人妻一区二区三区免费| 国产真实乱偷精品视频免| 国产成人综合一区二区三区| 青青草成人av| 亚洲一级电影| 欧美日韩成人免费| 欧美黄色aaa| 99久久亚洲精品| 中文字幕av一区二区三区谷原希美| 青青草免费在线视频观看| 欧洲成人av| 91在线porny国产在线看| aa成人免费视频| 国产偷拍一区二区| 精品一区二区综合| 成人免费网站在线观看| 91麻豆成人精品国产| 日本vs亚洲vs韩国一区三区二区 | 丰满亚洲少妇av| 91久久爱成人| 国产激情久久久久久熟女老人av| 国产一区二区三区黄视频 | 欧美精品久久久久久久免费观看| 182在线观看视频| 四虎国产精品免费观看| 中文字幕无线精品亚洲乱码一区 | 国产日本欧美视频| 国产一区二区播放| 天天综合一区| 欧美成人免费大片| 欧美成人综合色| 亚洲视频日本| 97在线精品视频| 日本中文字幕久久| 日韩精品国产欧美| 国产精品中文字幕在线观看| 国产老妇伦国产熟女老妇视频| 国精品**一区二区三区在线蜜桃| 亚洲伊人第一页| 亚洲美女性生活| 91在线国产观看| 日韩国产美国| 黄网页免费在线观看| 亚洲激情五月婷婷| 日本福利视频在线| 成人a在线观看高清电影| 欧美日韩亚洲不卡| 伊人av在线播放| 欧美18xxxx| 亚洲欧美中文日韩在线v日本| 中文字幕日韩综合| 老司机深夜福利在线观看| 欧美日韩一区二区三区在线免费观看| 欧美成人精品欧美一级乱| 成人午夜一级| 日韩欧美中文字幕精品| 成人免费在线观看视频网站| 欧洲精品久久久久毛片完整版| 欧美一区二区三级| 无码人妻精品一区二区三区温州| 欧美一级精品片在线看| 欧美成人免费小视频| 亚洲天堂一区在线| 激情图片小说一区| 久久国产精品亚洲va麻豆| 国产精品一级伦理| 一区二区三区资源| 久久久久久香蕉| 日韩欧美一级| 国产亚洲欧洲高清一区| 久久中文字幕在线观看| 人人狠狠综合久久亚洲| 国产三区精品| 国产网站在线免费观看| 色综合欧美在线视频区| 亚洲欧洲日韩综合| 成人在线亚洲| 97碰碰碰免费色视频| 国产视频一区二区三| 久久久久亚洲综合| 久久99久久99精品| 9999精品| 在线视频日韩精品| 国产成人无码精品| 成人永久免费视频| 国产高清免费在线| 久久野战av| 亚洲精品国产综合区久久久久久久| 中文字幕18页| 日韩欧美国产精品综合嫩v| 亚洲欧美日韩网| 亚洲精品视频大全| 一区二区在线| 国产日韩综合一区二区性色av| 性xxxxbbbb| 亚洲一线二线三线视频| av噜噜在线观看| 欧美理论视频| 2023亚洲男人天堂| 五月激情丁香婷婷| 亚洲国产毛片aaaaa无费看| 三区视频在线观看| 97精品97| 国产狼人综合免费视频| 番号集在线观看| 日本高清免费不卡视频| 国产福利在线观看视频| 亚洲国产一区二区三区a毛片 | 老头吃奶性行交视频| 国产区精品视频在线观看豆花| 久久成人精品视频| 一级黄色片网站| 国产精品毛片a∨一区二区三区| 99久久国产宗和精品1上映| 亚洲图区在线| 国产精品第8页| 国产在线黄色| 欧洲在线/亚洲| 日韩va在线观看| 99久久99久久精品国产片果冰| 国产精品久久久久久久久久久久 | 欧美主播福利视频| 天天射天天色天天干| 亚瑟在线精品视频| 美女福利视频在线| 清纯唯美亚洲经典中文字幕| 国内精品小视频在线观看| 日本高清视频网站| 欧美日韩国产一区中文午夜| 欧美大片免费播放器| 99在线观看免费视频精品观看| 国产视频在线观看一区| 小h片在线观看| 欧美在线免费观看视频| 亚洲天堂av中文字幕| 蜜臀av一区二区在线观看| 26uuu成人| 这里视频有精品| 午夜欧美大片免费观看| 蜜桃视频在线观看网站| 欧美色综合久久| 成人免费精品动漫网站| 成人精品国产一区二区4080| 国产视频九色蝌蚪| re久久精品视频| 成人免费黄色网| 国产精品186在线观看在线播放| 亚洲第一级黄色片| 一区二区三区在线观看av| 国产欧美综合在线观看第十页 | 波多野结衣视频一区| 国产一区亚洲二区三区| 99久久亚洲精品蜜臀| 国内一区二区在线视频观看| 成人做爰视频www网站小优视频| 日韩在线免费视频观看| 日韩一区二区视频在线| 国产视频一区二区三区在线观看| 中文字幕一区久久| 亚洲精选成人| 亚洲欧美久久234| 成人欧美一区二区三区的电影| 亚洲天堂av图片| 99在线观看免费| 欧美日韩综合视频| 男女男精品视频网站| av中文字幕一区| 日本免费a视频| 国产欧美高清视频在线| 亚洲在线第一页| 亚洲第一影院| 国内精品中文字幕| 黄色成人在线| 国产一区二区av| 亚洲一区中文字幕在线| 亚洲黄色免费网站| 午夜影院黄色片| 91婷婷韩国欧美一区二区| 91精品国产三级| 丝袜美腿一区二区三区| 日韩日韩日韩日韩日韩| 欧美激情偷拍自拍| 欧美日韩综合另类| 国产精品x8x8一区二区| 91在线视频免费| 成人日韩在线| 欧美资源在线观看| 欧美6一10sex性hd| 久久香蕉国产线看观看av| 成人免费高清在线播放| 日韩精品免费在线| 国产 日韩 欧美 精品| 欧美喷水一区二区| 999精品视频在线观看播放| 96av麻豆蜜桃一区二区| 久久国产免费视频| 国产酒店精品激情| 五月天婷婷亚洲| 日本在线不卡视频| 欧美 激情 在线| 亚洲在线视频| 无遮挡亚洲一区| 妖精视频一区二区三区| 国产一区精品在线| heyzo欧美激情| 成人在线视频电影| 日韩三级久久| 亚洲最大av网| 欧美a在线观看| 91色精品视频在线| 警花av一区二区三区| 亚洲影视九九影院在线观看| 欧美9999| 国产在线一区二区三区四区| 欧美一级一片| 久久久久久国产精品一区| 欧美亚视频在线中文字幕免费| 国产一区二区不卡视频在线观看| 老汉色老汉首页av亚洲| 欧美13一14另类| 国产亚洲电影| 一区二区不卡视频| 草草视频在线一区二区| 91九色蝌蚪成人| 国产一区在线电影| 精品视频一区在线| 一区二区三区日本久久久| 欧美日韩在线观看一区二区三区 | 亚洲图片制服诱惑| 粉嫩一区二区三区国产精品| 色噜噜国产精品视频一区二区| 一级毛片视频在线| 欧美精品制服第一页| 超碰97国产精品人人cao| 欧美亚洲另类制服自拍| 亚洲国产尤物| 91色p视频在线| 麻豆一区一区三区四区| 日韩av高清| 91精品国产乱码久久久久久久| 狠狠精品干练久久久无码中文字幕 | 9.1成人看片免费版| 中文字幕+乱码+中文字幕一区| 97精品在线播放| 亚洲永久精品大片| 日韩在线播放中文字幕| 欧美日韩高清一区二区| 性一交一乱一色一视频麻豆| 欧洲人成人精品| 国产精品探花视频| 精品粉嫩aⅴ一区二区三区四区| 天天在线女人的天堂视频| 一区二区三区黄色| 丝袜在线观看| 日韩av电影在线播放| av人人综合网| 国产精品成久久久久三级| 色综合一区二区日本韩国亚洲| 91超碰在线免费观看| 亚洲激情77| 无码人妻aⅴ一区二区三区日本| 亚洲精品看片| 又色又爽又黄视频| 2020日本不卡一区二区视频| 尤物在线免费视频| 色吊一区二区三区| 亚洲精品国产av| 中文字幕av一区| 麻豆免费在线| 91九色对白| 日本黄色精品| 欧美大片在线播放| 国产一级精品在线| 国产又粗又猛又爽视频| 亚洲综合丁香婷婷六月香| 亚洲精品91天天久久人人| 精品国产自在久精品国产| 国产老女人乱淫免费| 日韩av一卡二卡| 中文字幕伦理免费在线视频| 国产精品国产三级国产aⅴ浪潮| 亚洲精品一区二区三区在线| 亚洲第一导航| 欧美一级久久| 亚洲自拍偷拍精品| 亚洲欧美国产三级| 在线视频你懂得| 亚洲人免费视频| 特黄毛片在线观看| 国产精品免费一区二区三区观看 | 精品一区二区三区在线观看视频| 日本在线观看一区| 国产精品腿扒开做爽爽爽挤奶网站| 可以看的av网址| 自拍av一区二区三区| 老熟妇一区二区三区啪啪| 亚洲欧美激情精品一区二区| 成年人国产在线观看| 91久久偷偷做嫩草影院| 99久久99热这里只有精品| 超碰成人在线播放| 国产精品亲子乱子伦xxxx裸| 国产情侣呻吟对白高潮| 亚洲人成网站在线播| 9i看片成人免费高清| 久久精品国产一区二区三区日韩| 在线观看视频日韩| 亚洲天堂美女视频| 亚洲国产aⅴ成人精品无吗| 亚洲精品久久久狠狠狠爱 | 国产精品迅雷| 久久精品日韩精品| 亚洲免费网址| 久久久亚洲av波多野结衣| 狠狠色狠狠色综合日日五| 天堂在线一二区| 欧美综合在线观看| 欧美人与物videos另类xxxxx| 无码日韩人妻精品久久蜜桃| 久久久不卡网国产精品一区| 日本视频免费观看| 在线日韩日本国产亚洲| 国产一区二区色噜噜| 亚洲精品一区二区三区樱花 | 无遮挡的视频在线观看| 国产欧美日韩视频| 五月天久久网站| 国产老头和老头xxxx×| 午夜精品久久久久久久99樱桃| 午夜小视频免费| 国产aⅴ夜夜欢一区二区三区| 国产一区二区在线| 天天干天天玩天天操| 亚洲欧美视频在线观看| 丰满人妻妇伦又伦精品国产| 欧美尤物巨大精品爽| 欧美限制电影| 日韩精品xxx| 欧美日韩在线看| 在线视频自拍| 痴汉一区二区三区| 久久青草久久| 欧美日韩色视频| 亚洲国产成人一区| 日韩毛片在线| 欧美少妇一区二区三区| 99r国产精品| 怡红院成永久免费人全部视频| 欧美猛交免费看| 欧美男gay| 一级黄色片在线免费观看| 亚洲成av人片在线| 性开放的欧美大片| 国产乱码一区| 免费观看成人鲁鲁鲁鲁鲁视频| 朝桐光av在线| 亚洲欧美国产日韩天堂区| 国产精品久久久久久久久久辛辛 | 狠狠久久综合| 男人天堂av片| 中文av一区二区| 免费观看黄色一级视频| 国产精品中文字幕在线| 国产一区二区你懂的| 亚洲一级生活片| 亚洲网站在线观看| 国产精东传媒成人av电影| gogogo高清免费观看在线视频| 午夜激情一区二区| 国产精品久久久久久福利|