愛伊米

在原神裡釣魚,有人竟然用上了深度強化學習,還把它開源了

機器之心報道

機器之心編輯部

還愁在《原神》裡釣不到魚嗎?這有一份遲到的提瓦特釣魚指南。

在遊戲圈,你可以沒有玩過,但一定聽過《原神》。

雖然這是一款口碑兩極分化的遊戲,但不得不承認《原神》是當前最為火熱的遊戲之一。

特別是在國外,原神可以說是火的一塌糊塗。

就在今年 9 月,這款從開放公測起便屢次登頂國內外討論熱度和手遊吸金榜第一的開放世界冒險遊戲更新了版本,新增 / 豐富了地圖,並且上線了一款小遊戲——釣魚。遊戲中多個水域都有釣魚點,不同的位置可以釣不同的魚。

儘管是再普通不過的玩法,還是引得玩家流連。一般來說,釣魚一共分三個步驟:甩杆→等待魚兒上鉤→提竿。其中所涉及的原理需要一定數字影象處理與機器學習基礎。模型分為魚群定位與識別和拉桿 (和魚博弈) 兩個部分。

很多玩家都在尋找釣魚攻略,你還在愁在《原神》裡釣不到魚嗎?今天我們為你送上這份遲到的提瓦特釣魚指南。

這份釣魚指南可以說是完全解放雙手,不需要任何操作,只需要啟動程式就能完成。上線短短几天,收穫 700 + 星。

在原神裡釣魚,有人竟然用上了深度強化學習,還把它開源了

GitHub 地址:https://github。com/7eu7d7/genshin_auto_fish

感興趣的小夥伴也可以去 B 站觀看影片,上線不到三天,超過 44 萬次播放量。這滿屏的彈幕,不禁讓人直呼離譜。

已經有網友開始上手了,並評論道:已經在部署了,連夜下載了 anaconda。

在原神裡釣魚,有人竟然用上了深度強化學習,還把它開源了

B 站地址:https://www。bilibili。com/video/BV1964y1b7vV?spm_id_from=333。905。b_7570566964656f。3

專案介紹

原神自動釣魚 AI 由兩部分模型組成:

YOLOX、DQN

。此外,該專案還用到了遷移學習,半監督學習來進行訓練。模型也包含了一些使用 opencv 等傳統數字影象處理方法實現的不可學習部分。

YOLOX 用於魚的定位和型別的識別以及魚竿落點的定位;

DQN 用於自適應控制釣魚過程的點選,讓力度落在最佳區域內。

安裝

該專案是在 python 執行環境中使用的,需要先安裝 python,這裡推薦使用 anaconda。

配置環境:開啟 anaconda prompt(命令列介面),建立新的 python 環境並激活(推薦 python3。7 或以下版本):

conda create -n ysfish python=3。6conda activate ysfish

下載工程程式碼:使用 git 下載,或直接在 github 網頁端下載後直接解壓:

git clone https://github。com/7eu7d7/genshin_auto_fish。git

依賴庫安裝:切換命令列到本工程所在目錄:

cd genshin_auto_fish

執行以下命令安裝依賴:

python -m pip install -U pippython requirements。py

如果要使用顯示卡進行加速需要安裝 CUDA 和 cudnn, 安裝後無視上面的命令用下面這條安裝 gpu 版:

pip install -U pippython requirements。py ——cuda [cuda 版本]# 例如安裝的 CUDA11。xpython requirements。py ——cuda 110

安裝 yolox:切換命令列到本工程所在目錄,執行以下命令安裝 yolox:

python setup。py develop

預訓練權重下載:下載預訓練權重 (。pth 檔案),yolox_tiny。pth 下載後將權重檔案放在 工程目錄 / weights 下。

YOLOX 訓練工作流程:YOLOX 部分用半監督學習打標籤。標註少量樣本後訓練模型生成其餘樣本偽標籤再人工修正,不斷迭代以提高精度。樣本量較少所以使用遷移學習,在 COCO 預訓練的模型上進行 fine-tuning。

將 yolox/exp/yolox_tiny_fish。py 中的 self。data_dir 的值改為解壓後 2 個資料夾所在的路徑。

訓練程式碼:

python yolox_tools/train。py -f yolox/exp/yolox_tiny_fish。py -d 1 -b 8 ——fp16 -o -c weights/yolox

DQN 訓練工作流程:控制力度使用強化學習模型 DQN 進行訓練。兩次進度的差值作為 reward 為模型提供學習方向。模型與環境間互動式學習。

直接在原神內訓練耗時較長,首先你需要製作一個模擬環境,大概模擬釣魚力度控制操作。在模擬環境內預訓練一個模型。隨後將這一模型遷移至原神內,實現域間遷移。

模擬環境預訓練程式碼:

python train_sim。py

原神遊戲內訓練:

python train。py

執行

以上準備就緒後,就可以執行釣魚 AI,注意命令列視窗一定要以管理員許可權啟動。

顯示卡加速:

python fishing。py image -f yolox/exp/yolox_tiny_fish。py -c weights/best_tiny3。pth ——conf 0。25 ——nms 0。45 ——tsize 640 ——device gpu

cpu 執行:

python fishing。py image -f yolox/exp/yolox_tiny_fish。py -c weights/best_tiny3。pth ——conf 0。25 ——nms 0。45 ——tsize 640 ——device cpu

執行後出現 init ok 後按 r 鍵開始釣魚,原神需要全屏。出於效能考慮檢測框不會實時顯示,處理運算後臺進行。

更多實現細節,讀者可參考原專案。