專案 Project
1. 遊戲腳本
由於開始工作後可使用時間比較少,希望可以最大化的利用自己的時間
而有些重複的任務可以用腳本達成,且這個腳本任務並不會影響他人,僅僅是與人機Bot對戰
因而做出此專案來達成自動與人機對戰領取獎勵
由於遊戲只接收 DirectX input,所以選用 PyDirectInput 套件作為鍵盤指令的輸入
以及 threading 的 Timer 定時觸發 function,實現完整遊戲腳本自動化
2. 麻雀天眼通
我們觀察到,在日常的休閒與朋友打麻將時,不少人不會計算台數,亦或是不同人有不同計算台數的方式,更甚是漏算、多算台數的狀況也不在少數,因而有了這個專題的發想。
為了解決這個問題,我們利用自定義訓練出來的深度學習網路架構模型,辨識出每張麻將的牌面後,在透過邏輯演算法判定胡牌正確性及計算本次胡牌(自摸)所得台數。
在資料集蒐集的部分,最初我們是經由手機拍照取得圖片後,再利用OpenCV將照片resize成適當的大小,以降低訓練模型時的負擔,但又能保留圖片該有的特徵,再進行人工手動的label,以產生我們的資料集。而後我們寫出了一隻能自動生成資料集的程式,既可降低手動label的人為誤差,也可以節省人力,及大量生成資料集。
而在模型訓練及選擇上,我們選用YOLO v5的模型,結合更多元的訓練資料集,及調整anchor size、blur及不同的optimizer嘗試後,我們得到擁有超過9成辨識率的模型。並將其轉換為前端架構使用的Tensorflow.js模型,以增強客戶端響應運算結果的速度。 最後在視覺呈現上,我們使用flask框架架設了一個網站,在進入頁面後,我們會用相機偵測牌型,而後讓使用者設定、調整網頁上的選項,進而得到驗證結果。
3. Flask 網站架設