官术网_书友最值得收藏!

1.6 AIDemo示例系統(tǒng)

本書配套的所有資源都可以從網(wǎng)址http://aibook.cslt.org下載,這些資源既包括一些基礎(chǔ)閱讀材料,也包括一些可動手操作的示例系統(tǒng),以下稱為AIDemo系統(tǒng)。AIDemo中的所有示例都基于Linux操作系統(tǒng),因此需要一些Linux的基礎(chǔ)知識;另外,這些示例絕大部分是用Python語言編寫的,如果希望對這些程序進行較細(xì)致的學(xué)習(xí),需要對Python有初步的了解。訪問本書的官方網(wǎng)址,可以學(xué)習(xí)關(guān)于Linux和Python的基礎(chǔ)知識。

為了方便讀者搭建AIDemo示例系統(tǒng),我們將所有示例程序及其運行環(huán)境打包成一個虛擬機,只要安裝這一虛擬機,即可體驗這些示例,免去復(fù)雜的環(huán)境配置過程。我們選擇VirtualBox虛擬機軟件,該軟件可免費下載安裝,可移植性較好。安裝AIDemo虛擬機需要主機至少有4GB內(nèi)存,最好有8GB。AIDemo中的示例程序需要主機有網(wǎng)絡(luò)環(huán)境,有聲音輸入輸出設(shè)備。本節(jié)首先介紹VirtualBox和AIDemo的安裝過程,之后以一個簡單的人臉檢測系統(tǒng)為例介紹AIDemo中示例程序的運行方法。

1.6.1 AIDemo環(huán)境搭建

(1)在瀏覽器中輸入網(wǎng)址https://www.virtualbox.org/wiki/Downloads.

(2)選擇5.2版本,并選擇合適的宿主機類型。對Windows用戶,應(yīng)選擇Windows Hosts。下載安裝包,進行默認(rèn)安裝即可。

(3)安裝完成后,通過以下網(wǎng)址下載虛擬機映像(.ova文件):

http://aibook.cslt.org/aidemo/ova.html.

(4)在VirtualBox的“管理”菜單中選擇“導(dǎo)入虛擬電腦”,在彈出的窗口中選擇前一步所下載的.ova文件,完成AIDemo虛擬機安裝。AIDemo安裝完成后的VirtualBox界面如圖1-11所示。

圖1-11 安裝完成AIDemo后的VirtualBox界面

(5)AIDemo虛擬機安裝完成后,可雙擊該虛擬機圖標(biāo)啟動系統(tǒng),根據(jù)AIDemo主頁(http://aibook.cslt.org/aidemo/demo.html)的提示索取密碼,登錄后即可開始體驗AIDemo中的示例程序。

(6)我們會隨時更新AIDemo系統(tǒng),以方便讀者體驗最新的人工智能技術(shù)。請參考AIDemo主頁上的提示信息進行示例程序的遠(yuǎn)程更新。

1.6.2 AIDemo示例基礎(chǔ)

如果AIDemo虛擬機已經(jīng)安裝完成,且已經(jīng)掌握了Linux和Python的基礎(chǔ)知識,就可以開始體驗一個簡單的人工智能系統(tǒng)了。

首先以用戶tutorial的身份登錄AIDemo虛擬機,可以看到桌面上有一個主文件夾,鼠標(biāo)雙擊該文件夾進入aibook→demo,即可看到若干文件夾,如圖1-12所示。這些文件夾的內(nèi)容如下。

  • data:存儲AIDemo系統(tǒng)所需的數(shù)據(jù)資源;
  • env:存儲AIDemo系統(tǒng)所使用的Python運行環(huán)境;
  • image:圖像處理示例程序;
  • speech:語音處理示例程序;
  • lang:自然語言處理示例程序;
  • robot:機器人示例程序;

圖1-12 AIDemo所包含的文件夾

  • mind:思維學(xué)習(xí)示例程序。

打開image或speech等目錄,可以看到每個目錄下有若干文件夾,每個文件夾對應(yīng)一個示例程序。打開某一個示例程序,可以看到該文件夾下包括一個code目錄和一個doc目錄,前者保存了示例系統(tǒng)的源代碼,后者保存了該示例的說明文檔。AIDemo中的很多示例是從免費代碼庫github上下載后重新整理而成的,通常將從github上直接下載的代碼放到org目錄下。

認(rèn)真閱讀doc下的說明文檔,可以了解運行相應(yīng)示例程序的具體步驟。對大多數(shù)示例系統(tǒng),code目標(biāo)下的run.sh是主程序入口,運行該程序即可啟動該示例的默認(rèn)過程。這一運行過程需要在命令行窗口中執(zhí)行。在AIDemo虛擬機桌面上右擊,選擇“打開終端”,進入相應(yīng)示例程序的文件夾,再進入code目錄,通過運行下述命令啟動主程序:

      sh run.sh

絕大多數(shù)示例程序都設(shè)計了實驗環(huán)節(jié),這些實驗通過修改run.sh或其他配置文件,改變默認(rèn)程序的運行特性,從而讓讀者加深對該示例的理解。修改run.sh或配置文件可以通過雙擊這些文件,啟動圖形界面編輯器來完成,也可以通過更復(fù)雜的編輯工具(如vim)完成。

1.6.3 人臉檢測(Face-detection):第一個示例程序

本小節(jié)選擇人臉檢測作為例子來說明如何運行AIDemo中的示例程序,該示例程序保存在image/face-detection下。所謂人臉檢測,是指從一張照片中將人臉找出來,并用方框進行標(biāo)注。人臉檢測是第2章要介紹的人臉識別技術(shù)的基礎(chǔ),只有把人臉找到,才有可能對其進行識別。這一任務(wù)看似簡單,但當(dāng)圖片中包含的場景比較復(fù)雜時,檢測過程很容易出錯。這里將忽略技術(shù)細(xì)節(jié),僅介紹如何啟動示例系統(tǒng),并通過修改代碼來改變檢測系統(tǒng)的行為方式。

Face-detection示例程序事實上是機器視覺處理工具包OpenCV的演示樣例。首先認(rèn)真閱讀image/face-detection/doc/README,了解運行步驟。然后打開一個終端,進入目錄aibook/demo/image/face-detection/code,執(zhí)行run.sh:

      cd aibook/demo/image/face-detection/code
      sh run.sh

運行上述命令得到圖1-13(a)所示的輸入照片,回車后得到圖1-13(b)所示的檢測結(jié)果,再次回車則退出程序。

圖1-13 Face-detection的默認(rèn)主程序運行結(jié)果

(a)原圖;(b)檢測結(jié)果

Face-detection示例程序設(shè)計了三個實驗來加深讀者對人臉檢測系統(tǒng)的理解。在第一個實驗中,讀者將通過修改detect.py中的參數(shù)來觀察不同參數(shù)對檢測結(jié)果的影響。例如,face_minSize用來設(shè)定臉的最小尺寸,當(dāng)調(diào)小這一數(shù)值時,會有更多臉檢測出來;相反,當(dāng)調(diào)大這一數(shù)值時,只有足夠大的臉才能被檢測到。例如,當(dāng)我們設(shè)face_minSize=(130,130)時,就只能檢測出一張臉了,如圖1-14(a)所示。如果進一步將眼睛的最小尺寸eye_minSize增大,如設(shè)eye_minSize=(60,60),則連眼睛都檢測不出來了,如圖1-14(b)所示。

在第二個實驗中,我們用一張包含更多人臉的照片來考查該人臉檢測系統(tǒng)的性能。修改detect.py,將輸入圖片變量photo_fn定義為一張包含多個人臉的照片,如img目錄下的crowd.jpg,即設(shè)置photo_fn=img/crowd.jpg。用默認(rèn)參數(shù)配置運行run.sh,可得如圖1-15所示的檢測結(jié)果。

圖1-14 Face-detection修改參數(shù)后的運行結(jié)果

(a)設(shè)face_minSize=(130,130)之后的運行結(jié)果;(b)設(shè)face_minSize=(60,60)之后的運行結(jié)果

圖1-15 Face-detection對多人臉照片的運行結(jié)果

在第三個實驗中,我們鼓勵讀者用手機自拍一張照片,作為face-detection的輸入圖來進行人臉檢測,觀察光照、角度、姿態(tài)等對檢測結(jié)果的影響。實驗時,需要將照片上傳到AIDemo虛擬機,并將detect.py中的photo_fn參數(shù)設(shè)成該文件的路徑。將照片上傳到虛擬機的方法有多種,一種簡單的方法是將文件上傳到第三方共享網(wǎng)站(如百度云),再從AIDemo虛擬機上通過瀏覽器下載;另一種方法是利用VirtualBox的文件夾共享功能,在主機和AIDemo虛擬機間交換文件。

通過上述實驗過程,讀者即可對人臉檢測技術(shù)有個直觀了解,對該實驗的檢測系統(tǒng)在性能、適用性上有更深入的認(rèn)識。更重要的是,讀者可以通過對模型參數(shù)進行調(diào)優(yōu),積累設(shè)計人工智能系統(tǒng)的基本技能,為深入學(xué)習(xí)和熟練應(yīng)用人工智能技術(shù)打下基礎(chǔ)。


(1) Dreyfus H, Dreyfus SE, Athanasiou T. Mind over machine. Simon and Schuster. 2000.

(2) Minsky M, Papert S. Perceptrons: An essay in computational geometry. Cambridge, MA: MIT Press. 1969.

(3) 朱福喜,朱三元,伍春香.人工智能基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2006.

(4) Samuel AL. Some studies in machine learning using the game of checkers. IBM Journal of Research and Development, 1959. 3 (3): 210-229.

(5) Nilsson NJ. Introduction to machine learning. URL http://ai.stanford.edu/nilsson/mlbook.html, lecture notes, 1998.

(6) 張江.科學(xué)的極致:漫談人工智能[M].北京:人民郵電出版社,2015.

(7) Mnih V, Kavukcuoglu K, Silver D, Rusu AA, Veness J, Bellemare MG, Graves A, Riedmiller M, Fidjeland AK, Ostrovski G, et al. Human-level control through deep reinforcement learning. Nature. 2015, 518 (7540): 529-533.

(8) Koehn P, Och FJ, Marcu D. Statistical phrase-based translation. In: Proceedings of Association for Computational Linguistics (NAACL), Association for Computational Linguistics, 2003: 48-54.

(9)(10) Zhang M, Geng X, Bruce J, Caluwaerts K, Vespignani M, SunSpiral V, Abbeel P, Levine S. Deep reinforcement learning for tensegrity robot locomotion. In: 2017 IEEE International Conference on Robotics and Automation (ICRA). 2017.

(11) Yahya A, Li A, Kalakrishnan M, Chebotar Y, Levine S. Collective robot reinforcement learning with distributed asynchronous guided policy search. arXiv preprint arXiv: 161000673. 2017: 79-86.

(12) Chu P, Vu H, Yeo D, Lee B, Um K, Cho K. Robot reinforcement learning for automatically avoiding a dynamic obstacle in a virtual environment. In: Advanced Multimedia and Ubiquitous Engineering, Springer, 2015: 157-164.

(13) Kober J, Peters J. Reinforcement learning in robotics: A survey. In: Reinforcement Learning, Springer, 2012: 579-610.

(14) Gu S, Holly E, Lillicrap T, Levine S. Deep reinforcement learning for robotic manipulation with asynchronous off-policy updates. In: Proceedings 2017 IEEE International Conference on Robotics and Au-tomation (ICRA), IEEE, Piscataway, NJ, USA. 2017.

(15)(16) Levine S, Pastor P, Krizhevsky A, Ibarz J, Quillen D. Learning hand-eye coordination for robotic grasping with deep learning and large-scale data collection. The International Journal of Robotics Research, 2018, 37 (4-5): 421-436.

(17) Yahya A, Li A, Kalakrishnan M, Chebotar Y, Levine S. Collective robot reinforcement learning with distributed asynchronous guided policy search. arXiv preprint arXiv: 161000673. 2017: 79-86.

(18)(19) Cho K, Courville A, Bengio Y. Describing multimedia content using attention-based encoder-decoder networks. IEEE Transactions on Multimedia, 2015, 17 (11): 1875-1886.

(20) https://zh.wikipedia.org/wiki/AlphaGo.

(21) https://www.research.ibm.com/deepblue/meet/html/d.3.2.html.

(22) Ushveridze A. Can turing machine be curious about its turing test results? three informal lectures on physics of intelligence. arXiv preprint arXiv: 160608109. 2016.

(23) Wolpert DH. The lack of a priori distinctions between learning algorithms. Neural Computation. 1996, 8 (7): 1341-1390.

(24) Wolpert DH, MacreadyWG. No free lunch theorems for optimization. IEEET ransactions on Evolutionary Computation. 1997, 1 (1): 67-82.

主站蜘蛛池模板: 安西县| 林周县| 沙坪坝区| 阿克| 北京市| 阳曲县| 三原县| 辽阳县| 娱乐| 平果县| 金阳县| 泰宁县| 丹阳市| 灌南县| 灯塔市| 桦川县| 山丹县| 治县。| 台湾省| 兰考县| 桐柏县| 镇赉县| 聊城市| 辽阳县| 苏尼特左旗| 大足县| 化州市| 望城县| 新昌县| 安庆市| 伊宁县| 腾冲县| 敖汉旗| 团风县| 遵义市| 德安县| 常州市| 黄骅市| 息烽县| 仁化县| 科技|