使用目标检测技术实现更快捷方便的点单方式
基于 ncnn 实现的 Yolov7 网络安卓端部署,并实现了实时推理
21 类菜品的目标检测,并包含点单界面
AI Cateen(基于YOLOv7的食堂菜品智能识别系统)
github仓库
# 安装
只需使用 Android Studio 打开此项目,项目中已经包含 NCNN 和 OpenCV 库
# 如果您需要更改库版本
- https://github.com/Tencent/ncnn/releases
- 下载
ncnn-YYYYMMDD-android-vulkan.zip
或者自行构建 NCNN - 将
ncnn-YYYYMMDD-android-vulkan.zip
解压到app/src/main/jni
,并在app/src/main/jni/CMakeLists.txt
文件中更改 ncnn_DIR 路径
- https://github.com/nihui/opencv-mobile
- 下载
opencv-mobile-XYZ-android.zip
- 将
opencv-mobile-XYZ-android.zip
解压到app/src/main/jni
,并在app/src/main/jni/CMakeLists.txt
文件中更改 OpenCV_DIR 路径
# 使用自定义数据
# 训练模型和模型转换
- 训练 YOLOv7-tiny 网络模型
- 将模型转换为 NCNN 格式,放在
app/src/main/assets
中,我个人的转换方法是使用 PNNX
# 映射数组
定义在 app/src/main/java/com/tencent/ncnnyolov7/MenuActivity.java
中
f = new int[]{1, 2, 3, 15, 20, 21, 4, 22, 16, 5, 6, 7, 8, 9, 10, 17, 11, 12, 23, 18, 13}; |
此数组解决了模型中与点单界面中类别号不对应的问题
# 菜品详细信息
菜品信息存放于本地,位于 app/src/main/res/values/strings.xml
中名为 eleme_json
的 json 字符串,图片通过 url 获取
更多信息请参考 Linkage-RecyclerView
# 参考
数据集: https://universe.roboflow.com/skoopin-data/pandadata
YOLOv7: https://github.com/WongKinYiu/yolov7
YOLOv7 安卓端部署: https://github.com/xiang-wuu/ncnn-android-yolov7
点单界面架构: https://github.com/KunMinX/Linkage-RecyclerView