回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

【灵感数字组】AI“眼”中的小恐龙:Mind+ V2 目标检测训练自动玩Chrome断网游戏 简单

头像 云天 2026.03.22 31 0

image.png

【项目背景】

       Chrome浏览器断网时出现的小恐龙游戏是许多人熟悉的彩蛋。玩家需要控制小恐龙跳跃避开仙人掌,随着游戏加速,反应速度成为挑战。

       如果让AI“看”懂游戏画面,自动识别仙人掌并控制跳跃,会是怎样有趣的体验?本项目利用Mind+ V2的目标检测训练功能,让计算机学会识别游戏中的仙人掌和小恐龙,再通过屏幕截图实时推理,自动发送空格键完成游戏。整个过程无需任何硬件,只需一台电脑,就能让零基础的学生在趣味中掌握目标检测的完整流程。

【项目功能】

       1.自动截取游戏画面

       2.实时检测画面中的仙人掌(目标检测)

       3.根据仙人掌左边缘与恐龙的距离,智能判断跳跃时机

       4.自动模拟按下空格键,控制恐龙跳跃

       5.实时显示检测框和调试信息

【模型训练过程】(数据采集→标注→训练→部署)

       1. 素材采集

       进入Chrome断网游戏页面(地址栏输入 chrome://dino ),使用截图工具截取不同距离、不同大小的仙人掌和小恐龙的图片。建议至少采集50张以上,覆盖不同游戏速度下的场景。

采集技巧:让游戏运行一段时间,在游戏加速后多截取一些画面,增加样本多样性。

image.png

       2. 数据标注

       在Mind+ V2中新建“目标检测”训练项目,将采集的图片导入。使用矩形框分别标注“dino”(小恐龙)和“cactus”(仙人掌)两类物体。

image.png
image.png

       3. 模型训练

       在Mind+ V2中设置训练参数(建议默认设置),开始训练。训练完成后导出模型文件(.onnx)和配置文件(.yaml),保存到项目文件夹。

image.png

       4. 模型部署

       在Mind+的Python积木编程中,使用“模型训练推理库”扩展,加载训练好的模型。编写积木代码,通过自动转代码功能生成Python脚本,再进一步优化。

image.png
image.png

【程序设计过程】

       1. 程序框架流程

代码
开始 → 加载模型 → 打开显示窗口 → 进入循环
    ↓
截取屏幕 → 模型推理 → 检测仙人掌
    ↓
找到最靠近恐龙的仙人掌(左边缘最小)
    ↓
计算左边缘与恐龙的距离
    ↓
距离≤阈值 → 模拟按空格 → 跳跃冷却
    ↓
显示检测结果 → 按ESC退出

       2. 核心代码(最终优化版)

       以下代码基于Mind+ V2自动生成的Python代码修改,解决了多仙人掌处理、跳跃时机优化、置信度字段缺失等实际问题。

代码
# -*- coding: UTF-8 -*-
# 自动跳跃小恐龙(Chrome Dino Game)
# 使用Mind+ V2目标检测模型

import cv2
import numpy as np
import time
import pyautogui
from PIL import ImageGrab

# Mind+ V2 模型训练推理库导入
from model_mp_io import IO_Windows, ImageWriter
from model_mp_core import ObjectDetectionInference

# ================== 可调参数 ==================
DINO_X = 150               # 恐龙在图像中的固定X坐标(需实际测量)
JUMP_DISTANCE = 40         # 跳跃触发距离(像素)
JUMP_COOLDOWN_MS = 500     # 跳跃冷却(毫秒)
SCREEN_REGION = None       # 全屏截图,也可裁剪游戏区域
DEBUG = True
# ==============================================

# 加载模型
inference = ObjectDetectionInference(
    get_asset_path_by_name("best.onnx"),
    get_asset_path_by_name("data.yaml")
)

# 初始化显示窗口
windows_name = IO_Windows()
detection_img_output = ImageWriter()
WINDOW_TITLE = "Dino Auto Jump"
cv2.namedWindow(WINDOW_TITLE, cv2.WINDOW_NORMAL)

print("请将恐龙游戏窗口置于前台,按ESC退出")

debug_printed = False
last_jump_time = 0

while True:
    # 1. 截图
    screen_pil = ImageGrab.grab(bbox=SCREEN_REGION)
    img = cv2.cvtColor(np.array(screen_pil), cv2.COLOR_RGB2BGR)

    # 2. 推理
    result_output = inference.inference(img)

    # 3. 处理检测结果(找最靠左的仙人掌)
    cactus_detected = False
    closest_x1 = float('inf')

    if len(result_output['result']) > 0:
        img = detection_img_output.draw(img, result_output)

        for det in result_output['result']:
            if DEBUG and not debug_printed:
                print("检测项字段:", det.keys())
                debug_printed = True

            class_name = det.get('class_name', '')
            bbox = det.get('bbox', det.get('box', None))
            if bbox is None:
                continue

            if class_name.lower() in ['cactus', '仙人掌']:
                x1 = bbox[0]   # 左边缘
                if x1 < closest_x1:
                    closest_x1 = x1
                    cactus_detected = True
                    if DEBUG:
                        conf = det.get('confidence', det.get('score', 'N/A'))
                        print(f"检测到 {class_name},置信度 {conf},左边缘 X={x1}")

    # 4. 跳跃控制
    current_time = time.time() * 1000
    if cactus_detected and closest_x1 != float('inf'):
        distance = closest_x1 - DINO_X
        if distance <= JUMP_DISTANCE and (current_time - last_jump_time) > JUMP_COOLDOWN_MS:
            pyautogui.press('space')
            last_jump_time = current_time
            if DEBUG:
                print(f"   → 跳跃!距离={distance} 像素")

    # 5. 显示画面
    cv2.imshow(WINDOW_TITLE, img)

    # 6. ESC退出
    if cv2.waitKey(1) & 0xFF == 27:
        break

cv2.destroyAllWindows()

       3. 关键技巧说明

问题              解决方案
多个仙人掌同时出现              选择左边缘最小的仙人掌(最靠近恐龙)
跳跃时机过早/过晚              使用仙人掌左边缘计算距离,通过JUMP_DISTANCE微调
模型输出字段不统一              使用.get()安全访问,兼容bbox/box、confidence/score
连续跳跃              增加冷却时间JUMP_COOLDOWN_MS
恐龙位置确定              在截图中用画图工具测量恐龙脚部X坐标

 

【效果展示】

       游戏运行时,窗口实时显示检测框和距离信息。

       当仙人掌左边缘接近恐龙时,程序自动按下空格,恐龙跳跃。

       随着游戏加速,AI仍能准确识别并跳跃,分数可达数百分。

       1.运行效果截图

屏幕截图 2026-03-22 193114.png

       2.演示视频

【教学意义与可复现性】

       本项目将看似复杂的“目标检测”转化为一个趣味游戏辅助工具,学生可在以下环节获得实践:

       数据采集:理解样本多样性对模型的影响

       数据标注:掌握标注规范

       模型训练:体验训练-测试-迭代的AI工作流

       代码调试:从积木编程到Python代码的过渡,理解参数调整的作用

       跨学科融合:计算机视觉+自动化控制+游戏逻辑

       所有文件(模型、代码、截图样本)均已整理,其他学习者只需按照步骤操作,即可在30分钟内复现完整项目,非常适合作为AI启蒙的教学案例。

【项目文件清单】

       项目程序文件:dino_auto_jump.mpcode(dino_auto_jump.zip)

       模型训练文件:dino_detection.mpmodel

       模型文件:best.onnx(best.zip)、data.yaml

       训练图片:image文件夹

       程序文档:python代码.py

附件

附件

评论

user-avatar