智能应用项目实践2023独立开发者

基于 Qt 的智能车辆分类系统

从车辆图片采集、DenseNet121 模型训练,到 TCP 模型服务与 Qt 桌面端集成的一次完整 AI 应用实践。

QtTensorFlowDenseNet121Image ClassificationTCP SocketOffline Deployment
ARCHIVE / 2023从图像到可运行的应用

以 Qt、Python 服务与 DenseNet121 串起离线分类流程。

VEHICLE IMAGE↓QT CLIENT↓TCP SOCKET↓PYTHON SERVER↓DENSENET121↓PREDICTION↓QT RESULT UI
根据 2023 年原始课程报告中的模型部署与 Qt 客户端实现重绘。

01 / 项目快照

角色

独立开发者

日期

2023

核心技术

Python · TensorFlow · DenseNet121 · Qt · C++

通信

TCP Socket

环境

Windows · Ubuntu

范围

数据采集 · 分类训练 · 离线部署 · 桌面应用

02 / 问题

模型不是最终交付;应用才是。

这个项目从一个实际问题出发:如何让车辆图片进入系统、由模型完成分类,再把结果返回给普通用户可操作的 Qt 界面。报告支持图片上传、预览与预测结果反馈,而非宏大的交通产品宣称。

03 / 数据采集与增强

从网络图片到可供训练的样本。

WEB↓fetch.py↓RAW IMAGES↓CATEGORY FOLDERS↓TRAIN / VALIDATION

报告记录了使用 fetch.py 通过网页 URL 获取车辆图片,并按类别文件夹整理。报告不同章节的类别举例并不完全一致,因此这里不将它描述为严格固定的三分类系统,而统一表述为多个车辆类别的图像分类。

RESCALEROTATE 20°SHIFT 0.2SHEAR 0.2ZOOM 0.2HORIZONTAL FLIP

04 / 模型

基于预训练 DenseNet121 的分类头。

224 × 224 × 3↓DenseNet121
ImageNet · include_top=false
↓GlobalAveragePooling2D↓Dense 256 / ReLU↓Softmax

报告代码使用 TensorFlow、ImageNet 预训练权重的 DenseNet121、GlobalAveragePooling2D、256 单元 ReLU 层与 Softmax;训练采用 Adam、categorical_crossentropy,batch size 为 32、epochs 为 10。它不是原创 CNN 架构。

05 / 模型训练

真实记录配置;不伪造曲线。

原始报告记录通过 fit() 训练,并保存模型权重、训练与验证的 accuracy / loss 字段;但没有提供可验证的逐 Epoch 数值序列或训练曲线。因此这里不生成 loss curve。报告只支持:课程实验中的训练准确率约为 95%,不等同于测试集、泛化或生产准确率。

06 / 从模型到服务

离线 Python 服务接收图片并返回结果。

VEHICLE IMAGE↓QT CLIENT↓TCP SOCKET↓PYTHON SERVER↓DENSENET121↓PREDICTION↓QT RESULT UI

报告中的服务端以 socket.socket(AF_INET, SOCK_STREAM) 建立 TCP 服务,使用 bind、listen、accept 与 recv 接收图片字节;再以 cv2.imdecode 解码、调用模型预测并 send 返回类别。

07 / Qt 桌面客户端

选择图片、发送字节流、等待预测并呈现结果。

Choose image↓QTcpSocket↓Send bytes↓Read response↓Update UI label

报告的 on_pushButton_clicked() 中创建并配置 QTcpSocket,读取图片文件大小并发送图片字节流;客户端随后读取服务端结果并显示到 UI Label。环境资料记录了 Windows、Ubuntu、Qt 5.9.9、g++ 与 Qt Creator,页面仅保留为部署背景,不展开为安装教程。

08 / TCP 系统集成

让模型能力真正回到应用界面。

VEHICLE IMAGE↓QT CLIENT↓TCP SOCKET↓PYTHON SERVER↓DENSENET121↓PREDICTION↓QT RESULT UI

这不是只停留在训练代码中的模型:图片由 Qt 客户端通过 TCP 发送,Python 服务端完成解码与预测,结果再经 TCP 回到 Qt 界面。

09 / 运行证据

一列档案,保留真实的应用链路。

以下均提取自原始课程报告,经过必要裁切和路径遮挡;不包含虚构的终端、GUI 或训练图。点击可放大。

10 / 实例测试

有限的课程实验,不外推为通用性能。

报告称训练准确率约为 95%,并另选 10 张车辆图片进行实例预测测试,成功输出了部分车辆类别结果。证据范围不足以声明 95% 测试准确率、10/10 正确或真实世界基准表现。

11 / 技术价值

01

Data pipeline

从网络采集、文件夹整理到数据增强。

02

Transfer learning

使用预训练 DenseNet121 构建分类模型。

03

Model serving

Python TCP 服务接收图片并返回预测结果。

04

Application integration

Qt 将模型能力封装为可操作的桌面界面。

12 / 我的收获

模型准确率只是 AI 应用的一部分;真正产生价值,还要解决数据如何进入系统、模型如何被调用、结果如何返回,以及用户如何使用。

这次实践完整串起了数据获取、模型训练、离线部署、网络通信与 GUI 集成。今天回看,数据来源较粗糙、类别定义并不完全统一、训练与测试规模有限,评估指标也不够系统,TCP 通信与 Qt UI 都仍是课程原型。若今天重做,我会固定类别定义和干净的数据集划分,补充独立测试集、confusion matrix、precision / recall / F1,采用更规范的 inference API、自动化测试与更完善的 UI;这些是今天的改进方向,而非 2023 年已经完成的能力。

下一个案例

基于 HarmonyOS 的物联网应用——智能小屋

↗