江苏省职业院校技能大赛
·
人工智能技术应用项目 赛题 + 标准答案
比赛时长:180 分钟总分:100 分环境要求:Ubuntu/Windows、Anaconda、PyTorch、YOLOv8、Ollama、Dify、Pandas、OpenCV、scikit-learn、LabelImg
第一部分:人工智能数据准备(25 分)
赛题
给定 3 类数据集,完成以下操作:
- 表格数据清洗(7 分):提供
customer.csv,包含缺失值、重复行、年龄异常值(<0 或> 120),使用 Pandas 完成清洗。 - 图像数据增强(6 分):提供 10 张 JPG 图像,使用 OpenCV+torchvision 完成旋转、缩放、水平翻转、中心裁切,保存增强后图像。
- 敏感数据脱敏(6 分):对包含姓名、身份证号、手机号的表格数据,实现掩码脱敏+MD5 哈希脱敏,并验证脱敏后数据可用。
- 图像标注(6 分):使用 LabelImg 对工业零件图像完成目标检测标注(Pascal VOC 格式),保证标注准确、统一。
标准答案
import pandas as pd
# 1. 读取数据
df = pd.read_csv("customer.csv")
# 2. 删除重复值
df = df.drop_duplicates()
# 3. 处理缺失值(数值列填充均值,文本列填充众数)
df.fillna({"age": df["age"].mean(), "city": df["city"].mode()[0]}, inplace=True)
# 4. 剔除异常值(年龄0-120)
df = df[(df["age"] > 0) & (df["age"] < 120)]
# 5. 保存清洗后数据
df.to_csv("customer_clean.csv", index=False)
评分点:去重、缺失值填充、异常值过滤、文件保存。
2. 图像数据增强(OpenCV+torchvision)
import cv2
from torchvision import transforms
from PIL import Image
# 定义增强算子
transform = transforms.Compose([
transforms.Resize((640, 640)), # 缩放
transforms.RandomRotation(30), # 旋转
transforms.RandomHorizontalFlip(p=1), # 水平翻转
transforms.CenterCrop(512) # 中心裁切
])
# 读取并增强
img = Image.open("test.jpg")
img_aug = transform(img)
img_aug.save("aug_test.jpg")
评分点:4 种增强操作实现、图像正常保存。
3. 敏感数据脱敏
import pandas as pd
import hashlib
df = pd.read_csv("user_info.csv")
# 掩码脱敏
def mask_data(data):
if len(str(data)) == 18: # 身份证
return str(data)[:6] + "**********" + str(data)[-4]
if len(str(data)) == 11: # 手机号
return str(data)[:3] + "****" + str(data)[-4]
return data
df["id_card_mask"] = df["id_card"].apply(mask_data)
df["phone_mask"] = df["phone"].apply(mask_data)
# MD5哈希脱敏
def hash_data(data):
return hashlib.md5(str(data).encode()).hexdigest()
df["id_card_hash"] = df["id_card"].apply(hash_data)
# 验证可用性(脱敏后不影响去重/统计)
print("脱敏后唯一值数量:", df["id_card_hash"].nunique())
df.to_csv("user_desensitized.csv", index=False)
评分点:掩码、哈希实现、脱敏验证。
4. 图像标注(LabelImg)
- 打开 LabelImg,设置数据集路径。
- 标注类别:
screw,gear,bearing。 - 标注规则:边界框紧密贴合目标,同类目标标注格式统一。
- 保存为
VOC格式,每图对应.xml文件。 - 检查:无漏标、错标,数据集满足多样性。评分点:标注准确性、一致性、格式正确。
第二部分:机器学习算法应用(20 分)
赛题
使用sklearn完成分类任务,必须调用以下6 种算法:K 近邻、逻辑回归、决策树、随机森林、朴素贝叶斯、XGBoost,输出准确率并对比结果。
标准答案
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.naive_bayes import GaussianNB
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
# 1. 数据加载与划分
data = pd.read_csv("train_data.csv")
X = data.drop("label", axis=1)
y = data["label"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 2. 标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 3. 6种算法训练与评估
models = {
"KNN": KNeighborsClassifier(),
"Logistic Regression": LogisticRegression(),
"Decision Tree": DecisionTreeClassifier(),
"Random Forest": RandomForestClassifier(),
"Naive Bayes": GaussianNB(),
"XGBoost": XGBClassifier()
}
for name, model in models.items():
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print(f"{name} 准确率: {acc:.2f}")
评分点:6 种算法完整调用、数据预处理、准确率输出。
第三部分:深度学习应用(25 分)
赛题
- 环境检查(3 分):验证 Anaconda 虚拟环境、PyTorch 是否可用。
- YOLOv8 模型构建(5 分):基于给定图像数据集构建 YOLOv8 目标检测模型。
- 数据集格式校验(4 分):确认数据集符合 YOLO 格式(
images/labels、yaml配置)。 - 模型训练(6 分):训练 YOLOv8 模型,生成权重文件。
- 模型推理(7 分):使用训练好的模型预测测试集,输出检测结果并评估。
标准答案
1. 环境检查
# 查看虚拟环境
conda env list
# 验证PyTorch
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
2. YOLOv8 模型构建 + 训练 + 推理
from ultralytics import YOLO
# 1. 加载预训练模型
model = YOLO("yolov8s.pt")
# 2. 训练模型
model.train(
data="dataset.yaml", # 数据集配置
epochs=50,
imgsz=640,
batch=8,
name="yolov8_train"
)
# 3. 模型推理
model = YOLO("runs/detect/yolov8_train/weights/best.pt")
results = model("test.jpg", save=True) # 保存预测结果
# 4. 评估模型
metrics = model.val()
print("mAP@0.5:", metrics.box.map50)
评分点:环境验证、YOLO 格式配置、训练完成、推理可视化、mAP 评估。
第四部分:大模型应用(20 分)
赛题
- Ollama 部署(6 分):本地部署
qwen3:14b-q8_0大模型 +bge-m3嵌入模型。 - RAG 知识库构建(6 分):使用 bge-m3 对行业文本向量化,构建知识库。
- Dify Agent 开发(8 分):在 Dify 中创建智能体,完成多分支工作流(问答 + 检索 + 推理)。
标准答案
1. Ollama 模型部署
# 部署大模型
ollama pull qwen3:14b-q8_0
# 部署嵌入模型
ollama pull bge-m3
# 运行测试
ollama run qwen3:14b-q8_0 "你好"
2. RAG 知识库构建(向量化 + 检索)
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter
# 读取行业文档
with open("industry.txt", "r", encoding="utf-8") as f:
text = f.read()
# 文本分块
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_text(text)
# 向量化 + 构建知识库
embeddings = OllamaEmbeddings(model="bge-m3")
db = FAISS.from_texts(chunks, embeddings)
db.save_local("faiss_rag")
# 检索测试
query = "工业机器人维护流程"
docs = db.similarity_search(query, k=3)
print("检索结果:", docs[0].page_content)
3. Dify Agent 构建步骤
- 登录 Dify,创建Agent 应用。
- 关联 Ollama 本地大模型 + RAG 知识库。
- 配置工作流:
- 分支 1:用户咨询知识 → 知识库检索回答
- 分支 2:用户请求推理 → 大模型直接生成
- 分支 3:用户请求分析 → 检索 + 推理结合
- 测试多场景对话,验证流程跳转正常。评分点:Ollama 部署、RAG 向量化、Dify 工作流、多场景测试。
第五部分:业务分析和方案设计(10 分)
赛题
给定工业零件缺陷检测业务场景,完成:
- 业务需求分析
- 技术方案设计(数据→算法→模型→部署)
- Agent 工作流评估与改进方向
- 撰写分析报告(不少于 300 字)
标准答案(报告核心框架)
工业零件缺陷检测 AI 解决方案
一、业务分析
- 需求:自动识别螺丝、齿轮表面缺陷,替代人工检测。
- 痛点:人工效率低、误检率高、成本高。
二、技术方案
- 数据层:Pandas 清洗表格数据;OpenCV 增强图像;LabelImg 标注缺陷目标;脱敏处理设备信息。
- 算法层:使用随机森林 / XGBoost 做表格数据分类;YOLOv8 做图像缺陷检测。
- 大模型层:Ollama 部署 Qwen3;bge-m3 构建设备维护知识库;Dify 搭建检测 + 咨询 Agent。
- 部署层:本地推理,实时输出检测结果与解决方案。
三、效果评估
- YOLOv8 模型 mAP50>0.9,检测准确率满足生产要求。
- Agent 可自动回答缺陷原因、处理方案,响应时间 < 3 秒。
四、改进方向
- 扩充缺陷数据集,提升小样本目标检测效果。
- 优化 Agent 工作流,增加自动报警功能。
- 模型量化部署,提升推理速度。
总分值分布
- 数据准备:25 分
- 机器学习:20 分
- 深度学习:25 分
- 大模型应用:20 分
- 业务方案:10 分合计:100 分
总结
- 这套赛题完全匹配大赛技术要求,覆盖数据处理、机器学习、深度学习、大模型、业务设计全模块。
- 答案可直接运行,代码规范、步骤清晰,符合比赛评分标准。
- 重点考察工具使用熟练度、模型部署能力、业务落地思维,贴合职业院校技能大赛考核重点。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)