项目简介
本项目结合Azure机器学习服务与Kubernetes,打造了一个乐高小人检测系统。利用Azure进行模型训练和部署,通过Kubernetes实现集群管理与容器编排。采用ESP32 - CAM或树莓派采集图像,将其发送到模型检测,并通过网页展示结果。
项目的主要特性和功能
- 支持Kubernetes集群和Azure环境搭建,创建资源组、日志分析工作区、Arc连接的Kubernetes等资源。
- 运用Azure机器学习服务训练模型,支持自动机器学习功能,尝试多种模型和超参数组合提升性能。
- 可使用ESP32 - CAM或树莓派采集图像,并存储到Kubernetes主节点。
- 用训练好的模型检测乐高小人,在网页展示检测结果。
- 通过Kubernetes编排容器,便于部署和管理各组件。
安装使用步骤
前提条件
假设用户已下载项目源码文件,且具备以下环境: 1. 可访问Kubernetes API的PC,已安装Azure CLI。 2. 一个Kubernetes集群。 3. 一个Azure订阅。
安装步骤
- 基础设施搭建
- 安装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资源。
- 安装Azure CLI:
- Azure ML模型训练
- 进入Azure门户,找到Azure ML工作区并登录到Studio。
- 创建数据集:上传乐高小人图片到Azure ML工作区。
- 数据标注:标记图片中的乐高小人。
- 创建计算集群:选合适虚拟机类型和配置。
- 训练模型:用自动机器学习功能,配置超参数和算法。
- 注册模型:选性能好的模型部署。
- 图像采集设备配置
- ESP32 - CAM:下载ESP32 - CAM文件夹文件,更新WiFi凭证和IP地址,用Arduino IDE编译上传程序。
- 树莓派:安装Raspbian系统,配置WiFi和静态IP地址,挂载NFS共享,下载运行图片采集脚本。
- 检测器部署
- 构建镜像:
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/"
使用步骤
- 启动图像采集设备:
- 若用树莓派,登录并启动脚本:
bash ./pics.sh
- 若用ESP32 - CAM,给控制器上电。
- 若用树莓派,登录并启动脚本:
- 访问网页:
- 获取Web服务器IP地址:
bash kubectl get svc -n minifigures maker-svc
- 浏览器输入IP地址(http前缀):
http://<MAKER'S IP ADDRESS>
- 获取Web服务器IP地址:
故障排除
若重新部署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】