2018年10月10日 星期三

深度學習(8)--使用Tensorflow Object Detection API 實現物件自動辨識



2017年6月,Google公司開放了Tensorflow Object Detection API。這個專案使用TensorFlow 實現了大多數深度學習目標檢測架構,其中就包含Faster R-CNN。在本文章中將會介紹如何安裝Tensorflow Object Detection API,再介紹如何使用已訓練好的模型進行物體檢測,本文介紹的環境將會是架構在Windows 10 上面,使用Python 3.5.2,TensorFlow V1.9,最後並利用OPENCV 的WebCam攝影功能,利用攝影機即時辨別物體。

底下就先來觀看利用攝影機即時辨別物體的DEMO影片吧。

<Demo 影片>







2018年8月10日 星期五

Python(3)--Python小遊戲_黑白棋

    這是一個經典的小遊戲黑白棋,在8x8 格子上玩家與電腦輪流下子,本示例程式用O,X來替代黑子與白子。遊戲玩法為黑子玩家與白子玩家輪流下自己顏色的棋子,在新下的棋子與同顏色的另一個棋子之間,如果有任何對手的棋子,都將其反轉,遊戲的目標是讓玩家自己的棋子盡可能的多。最後留下的棋子數最多者為贏家。

本程式由Python3.5.2 +Pyqt5 製作而成,範例代碼可由下面連結取得

https://github.com/Ashing00/Othello/tree/master

程式執行畫面如下圖所示:




2018年8月3日 星期五

Python(2)--Python小遊戲_井字棋


    這是一個經典的小遊戲井字棋,在九宮格上玩家與電腦輪流畫OXO,當每列或每行或是兩個對角成一線時便是獲勝。

本程式由Python3.5.2 +Pyqt5 製作而成,範例代碼可由下面連結取得

https://github.com/Ashing00/tictactoe/tree/master

程式執行畫面如下圖所示:
    程式提供了兩種人工智慧選擇,一個是強人工智慧另一個是弱人工智慧,選擇強人工智慧,如果電腦先下,玩家可以說是沒有贏的可能,因此特地弄出一個弱人工智慧選項,一來增加遊戲的趣味,一來可以比較這兩者在程式設計上的差異。選擇弱人工智慧,玩家通常可以簡單的獲勝。
    遊戲一開始還須得選擇O或X,然後會隨機選擇玩家先下或是電腦先下。




2018年3月25日 星期日

深度學習(7)--使用Tensorflow實現類VGG model 訓練Cifar10數據集


    繼上一篇我們使用Alexnet 模型來訓練Cifar10數據集,這次我們改用VGG16 模型來做訓練及預測。Cifar10的數據集可以從以下網址下載:
https://www.cs.toronto.edu/~kriz/cifar.html

     從本質上來看,VGGNet 是在更細的粒度上實現的AlexNet,他廣泛的使用非常小的卷積核架構去實現更深層次的卷積網路神經網路。在一定的程度上證實了,增加卷積神經網路的深度,增加更多的隱藏層和權重可以實現對識別的明顯改進。

    從VGGNet的結構上來說,與AlexNet並沒有太大的區別,只不過增加了更多隱藏層,VGG的參數較多調整範圍大,而最終生成的模型參數是AlexNet的3倍左右,VGGNet的模型圖如下圖所示:


<picture 1> VGGNet的模型圖 , citation: htpps://arxiv.org/pdf/1409.1556.pdf


2018年1月26日 星期五

機器學習(10)--訊息量、資訊熵(Information Entropy)

訊息量

        在資訊理論中,訊息量是有確定解釋並可以量化計算的,這裡提到的訊息量是一種資訊數量化,度量的規則。
        用科學公式性的方法去量化一段文字有多少資訊的想法,最早是由哈萊特(RVL Hartley)在1928年首先提出。他將消息數的對數(log)定義為訊息量。若信源有m種消息,且每個消息是以相等的可能性產生的,該信源的訊息量可表示如下:



        上述公式是一個以m為引數的對數函數,舉個具體的例子:
假設中國桌球隊與巴西桌球隊的男子單打比賽,注意它不存在平局的狀況,也就是說要麼中國桌球隊獲勝不然就是巴西桌球隊獲勝,這兩個就是已經所有可能發生的情形。只有兩種情形,在上述公式中即m=2,信源有兩種,即"中國隊獲勝巴西隊失敗"或是"巴西隊獲勝中國隊失敗"。將m=2帶入上述公式:

       訊息量為1,單位是bit。