目录
第1章 项目概述... 3
第2章 可行性分析... 4
2.1 技术可行性... 4
2.2 数据可行性... 4
2.3 应用可行性... 4
第3章 环境搭建... 5
3.1 模型搭建... 5
3.1.1 安装PaddleDetection. 5
3.1.2 自定义数据集... 5
3.2 APP搭建... 5
3.2.1 安装Android Studio. 5
3.2.1 安装Paddle Lite. 5
第4章 项目设计... 6
4.1 模型设计... 6
4.2 应用设计... 6
第5章 项目实现... 7
5.1 自定义数据集部分... 7
5.2 模型训练部分... 2
5.3 模型转换部分... 2
5.4 GUI开发部分... 2
5.5 模型部署部分... 3
第6章 项目测试... 4
6.1 模型性能测试部分... 4
6.2 应用功能测试部分... 4
第1章 项目概述
随着计算机视觉技术的发展,目标检测已经成为一个普遍关注的研究领域。目标检测是计算机视觉中的一项重要任务,主要用于对物品实时的分类与检测。传统的目标检测方法通常基于特征提取和模板匹配,但是这些方法受到了图像质量,光照变化和姿态变化等因素的影响。
最近,深度学习技术已经成为目标检测领域的一个重要研究方向。深度学习技术可以通过多层神经网络学习高级特征,从而提高目标检测的准确率。目前,有许多基于深度学习的目标检测方法已经被提出,其中包括卷积神经网络(Convolutional Neural Network,CNN)和生成对抗网络(Generative Adversarial Network,GAN)等。
本文综述了基于深度学习的目标检测的研究进展,重点介绍了CNN在目标检测中的应用。
本项目旨在开发一款基于 PaddleDetection的生活物品目标检测应用。这款应用能够在手机上实时识别和定位常见的物品,如手机、椅子、碗等。为了实现这个目标,我们首先使用自定义的数据集来训练物品检测模型,然后使用 Paddle Lite将模型转换为 .nb 格式,这种格式适用于在移动设备上部署模型。最后,我们使用 Android Studio 开发应用,应用基于 PaddleDetection 的 android_demo模板。
第2章 可行性分析
2.1 技术可行性
项目使用的技术,包括深度学习、目标检测、PaddleDetection框架、Android开发等,都是目前广泛使用且成熟的技术。使用YOLOv3_MobileNet_V1作为预训练模型,该模型具有实时性和轻量级的特性,适合在移动设备上运行。使用Paddle Lite将模型转换为.nb格式,这是PaddlePaddle针对移动设备推出的轻量级推理框架,可以有效地支持在Android设备上运行模型。因此,从技术角度看,该项目是完全可行的。
2.2 数据可行性
项目通过网络爬虫获取所需的图片数据,并使用LabelImg进行标注。自定义的数据集包含了目标物品(手机、椅子、碗)的图像,这些都是日常生活中常见的物品,获取相应的图片和标注数据相对较容易,因此,从数据获取和处理的角度看,该项目也是可行的。
2.3 应用可行性
该项目的目标是开发一款可以在手机上实时识别和定位常见物品的应用,这种应用在实际生活中具有广泛的应用场景,例如,它可以帮助视障人士识别周围的物品,也可以在智能家居、安防监控等领域中应用。此外,项目使用Android Studio进行应用开发,并基于PaddleDetection的android_demo模板,这可以大大降低开发难度和时间,因此,从应用的需求和开发的角度看,该项目也是可行的。
第3章 环境搭建
3.1 模型搭建
3.1.1 安装PaddleDetection
首先在PaddlePaddle开发环境中安装 PaddleDetection 。其次,模型搭建需要自定义数据集,我们通过网络爬虫爬取所需图片,并在LabelImg中进行后续的处理与分类。
安装命令:pip install paddledetection
3.1.2 自定义数据集
我们自定义的数据集包含标注了我们希望模型能够检测的物品(即手机、椅子、碗)的图像。每个图像的标注包含物品的类别和边界框。
3.2 APP搭建
在APP环境搭建部分,我们依次安装 了Android Studio 和 Paddle Lite。
3.2.1 安装Android Studio
我们从Android Studio 的官方网站下载并安装它.
3.2.1 安装Paddle Lite
Paddle Lite 则是在PaddlePaddle开发环境中通过以下命令进行安装:
安装命令:pip install paddlelite
第4章 项目设计
图4.1 模型网络结构
4.1 模型设计
我们选择了YOLOv3_MobileNet_V1作为目标检测预训练模型。它结合了YOLOv3和MobileNet V1两种模型的优点。YOLOv3是一种实时目标检测算法,而MobileNet V1是一种轻量级的卷积神经网络。这种组合使得模型在保持较高精度的同时,具有较快的推理速度。在训练过程中,我们将使用我们的自定义数据集来优化这个模型的参数。
4.2 应用设计
应用的设计基于 PaddleDetection 的 android_demo 模板。它包括一个用户界面(UI),用于显示摄像头捕捉的实时图像和模型检测到的物品,以及一个后端,用于处理图像并运行模型。后端的设计包括了图像预处理、模型推理、和结果后处理三个主要步骤。
第5章 项目实现
图5.1 设计过程思维导图
5.1 自定义数据集部分
使用程序将处理过的图片及标注信息的xml文件进行匹配并打乱,生成训练及测试列表。
图5.1.1 数据集
图5,1.2 图片数据
图5.1.3 xml数据
5.2 模型训练部分
我们选择了一个预训练YOLOv3_MobileNet_V1模型,并使用我们的数据集对它进行微调。
训练模型命令:python tools/train.py -c configs/yolov3_mobilenet_v1.yml –eval
导出模型命令:python tools/export_model.py -c configs/yolov3/yolov3_mobilenet_v1.yml -o weights=output/yolov3_mobilenet_v1/ --output_dir=/home/aistudio/model
图5.2.1 导出的模型文件
5.3 模型转换部分
模型训练完成后,我们需要使用 Paddle Lite 将它转换为 .nb 格式,以便在移动设备上部署。
模型转化命令:paddle_lite_opt --model_dir=/home/aistudio/model/ --model_file=/home/aistudio/model/__model__ --param_file=/home/aistudio/model/__params__ --optimize_out_type=naive_buffer --optimize_out=./best_mobilenet_modelv1.nb --valid_targets=arm
图5.3.1 转化后的模型文件
5.4 GUI开发部分
我们使用 Android Studio 来开发应用的用户界面。这个界面包含一个用于显示实时图像和模型检测到的物品的视图。
图5.4.1 APP页面
5.5 模型部署部分
使用 Android Studio ,将.nb模型文件部署到APP中。
第6章 项目测试
6.1 模型性能测试部分
在模型的性能测试部分,我们使用一部分自定义数据集作为测试集,来评估模型的准确率。
模型测试命令:python tools/infer.py -c configs/yolov3_mobilenet_v1.yml -o use_gpu=true --infer_img=demo/bowl.png
图6.1.1 测试结果
6.2 应用功能测试部分
在应用的功能测试部分,我们在一台 Android 设备上安装并运行我们的应用,来检查它的功能是否正常。
图6.2.1 实时测试结果
图6.2.2 图片测试结果