littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于Azure和Kubernetes的乐高小人检测系统

项目简介

本项目结合Azure机器学习服务与Kubernetes,打造了一个乐高小人检测系统。利用Azure进行模型训练和部署,通过Kubernetes实现集群管理与容器编排。采用ESP32 - CAM或树莓派采集图像,将其发送到模型检测,并通过网页展示结果。

项目的主要特性和功能

  1. 支持Kubernetes集群和Azure环境搭建,创建资源组、日志分析工作区、Arc连接的Kubernetes等资源。
  2. 运用Azure机器学习服务训练模型,支持自动机器学习功能,尝试多种模型和超参数组合提升性能。
  3. 可使用ESP32 - CAM或树莓派采集图像,并存储到Kubernetes主节点。
  4. 用训练好的模型检测乐高小人,在网页展示检测结果。
  5. 通过Kubernetes编排容器,便于部署和管理各组件。

安装使用步骤

前提条件

假设用户已下载项目源码文件,且具备以下环境: 1. 可访问Kubernetes API的PC,已安装Azure CLI。 2. 一个Kubernetes集群。 3. 一个Azure订阅。

安装步骤

  1. 基础设施搭建
    • 安装Azure CLI: bash curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
    • 登录Azure: bash az login az account set --subscription <your-subscription-id>
    • 配置并运行azure setup script创建Azure资源。
  2. Azure ML模型训练
    • 进入Azure门户,找到Azure ML工作区并登录到Studio。
    • 创建数据集:上传乐高小人图片到Azure ML工作区。
    • 数据标注:标记图片中的乐高小人。
    • 创建计算集群:选合适虚拟机类型和配置。
    • 训练模型:用自动机器学习功能,配置超参数和算法。
    • 注册模型:选性能好的模型部署。
  3. 图像采集设备配置
    • ESP32 - CAM:下载ESP32 - CAM文件夹文件,更新WiFi凭证和IP地址,用Arduino IDE编译上传程序。
    • 树莓派:安装Raspbian系统,配置WiFi和静态IP地址,挂载NFS共享,下载运行图片采集脚本。
  4. 检测器部署
    • 构建镜像: bash
    • 部署Kubernetes组件: bash
    • 创建ESP32 - CAM IP配置映射(仅用ESP32 - CAM时需要): bash kubectl create configmap espcam-ip -n minifigures --from-literal espcamip="192.168.0.131"
    • 创建ML端点密钥: ```bash AmlEndpoint=$(az ml online-endpoint list --resource-group $ResourceGroup --workspace-name $MLWorkspaceName --query [0].name --output tsv) AmlURI=$(az ml online-endpoint show --name $AmlEndpoint --resource-group $ResourceGroup --workspace-name $MLWorkspaceName --query scoring_uri --output tsv) AmlKey=$(az ml online-endpoint get-credentials --name $AmlEndpoint --resource-group $ResourceGroup --workspace-name $MLWorkspaceName --query primaryKey --output tsv)

kubectl create secret generic inference-secret -n minifigures --from-literal scoreendpoint=$AmlURI --from-literal scorekey=$AmlKey --dry-run=client -o yaml | kubectl apply -f - - 创建ACR拉取密钥:bash ACRUser=$(az acr credential show -n $ACRName -g $ResourceGroup --query username --output tsv) ACRPassword=$(az acr credential show -n $ACRName -g $ResourceGroup --query 'passwords[0].value' --output tsv)

kubectl create secret docker-registry acr-secret -n minifigures --docker-server="${ACRName}.azurecr.io" --docker-username=$ACRUser --docker-password=$ACRPassword - 下载并部署Marker App:bash sed -i s/""/$ACRName/g marker-deployment.yaml kubectl apply -f marker-deployment.yaml rm marker-deployment.yaml ```

使用步骤

  1. 启动图像采集设备:
    • 若用树莓派,登录并启动脚本: bash ./pics.sh
    • 若用ESP32 - CAM,给控制器上电。
  2. 访问网页:
    • 获取Web服务器IP地址: bash kubectl get svc -n minifigures maker-svc
    • 浏览器输入IP地址(http前缀): http://<MAKER'S IP ADDRESS>

故障排除

若重新部署AI模型并创建新端点,需更新密钥并删除运行中的Pod: ```bash AmlEndpoint=$(az ml online-endpoint list --resource-group $ResourceGroup --workspace-name $MLWorkspaceName --query [0].name --output tsv) AmlURI=$(az ml online-endpoint show --name $AmlEndpoint --resource-group $ResourceGroup --workspace-name $MLWorkspaceName --query scoring_uri --output tsv) AmlKey=$(az ml online-endpoint get-credentials --name $AmlEndpoint --resource-group $ResourceGroup --workspace-name $MLWorkspaceName --query primaryKey --output tsv)

kubectl create secret generic inference-secret -n minifigures --from-literal scoreendpoint=$AmlURI --from-literal scorekey=$AmlKey --dry-run=client -o yaml | kubectl apply -f -

kubectl delete pod -n minifigures -l app=marker ```

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】