掌纹识别:RandomForest 模型训练与 Android 端轻量化推理部署实践

支持技术分享,转载或复制,请指出文章来源 此博客作者为Jack__0023

1、简介

最近有个定制掌纹识别+命理分析的项目,目前暂时找不到合适的第三方使用,也对AI和深度学习这些比较感兴趣,自己学习后处理成对应的模型+实现,这篇文章目前只分享如何入门模型训练的。

2、环境简介

每个我都大概写下版本和用途,然后我会将环境脚本安装命令放到第3章配置简介中,如果不需要的可以直接跳过第3章

2-1、Anacoda Navigator (核心开发环境)

用途:这里面集成很多东西,并且支持环境分割,用来学习和集成训练模型的,处理东西也方便。
版本建议:Anaconda3 2022.10(兼容 Python 3.7~3.9,适配代码依赖的库版本)。

2-2、Python(训练模型语言)

用途:作为模型训练、特征提取、模型导出的开发语言
版本建议:我用的是Python3.9.25

2-3、OpenCV

用途:用于图像处理和特征提取。
版本建议:我用的4.5.5.62

2-4、scikit-learn(RF 模型训练与评估)

用途:提供 RandomForestClassifier(随机森林模型训练)、train_test_split(数据集划分)、StandardScaler(特征标准化)、classification_report(模型评估)机器学习模型开发的核心库。
版本建议:1.0.2(兼容 Python 3.7~3.9,避免新版 API 变更导致代码报错)。

2-5、NumPy

用途:是 OpenCV 和 scikit-learn 的底层依赖。
版本建议:1.21.6(与 Python 3.7~3.9 适配,保证数组运算稳定性)。

2-6、Android 环境(不需要将模型放到Android推理的可以不看这个)

我的项目到时候是把python训练的模型放到Android使用,是一个物联网项目,所以我用的是最低兼容Android7,包括上面的配置都是为了兼容所以有的版本,你们看到时候具体来修改版本,详细我放环境配置里面

3、环境配置

3-1、Anaconda 基础环境配置脚本

Anaconda Navigator提供界面安装环境,但是我还是习惯用命令行脚本安装,打开命令行位置如下图
在这里插入图片描述

# 安装的OpenCV
pip install opencv-python==4.9.0.80 --force-reinstall -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装scikit-learn
pip install scikit-learn==1.2.2 --force-reinstall -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装NumPy
pip install numpy==1.26.4 --force-reinstall -i https://pypi.tuna.tsinghua.edu.cn/simple

# 验证最终版本
pip list | findstr /i "opencv-python scikit-learn numpy"

3-2、Android 基础环境配置内容

因为就算有模型,但是我们还是需要有提取特征功能,方便更加贴近Python上进行分析的效果,所以需要Opencv,我下面说几个主要的,可以直接看build配置

3-2-1、Opencv配置

Opencv版本是4.7.0,因为我之前有项目已经使用了,所以我是以module的形式导入使用的,你们可以改为build里面引用

3-2-2、Java版本指定Java8
3-2-3、ndkVersion ‘22.1.7171670’

具体build配置内容如下(dependencies 里面只有关键的,你复制那个就行)

plugins {
   
   
    id 'com.android.application'
}

android {
   
   
    compileSdkVersion 29
    ndkVersion '22.1.7171670'

    defaultConfig {
   
   
        applicationId "com.yxm.palm"
        minSdkVersion 24
        targetSdkVersion 29
        versionCode 1
        versionName "1.0.0"
        missingDimensionStrategy 'PDF-Libaray', "system"
    }

    lintOptions {
   
   
        checkReleaseBuilds false
        abortOnError false
    }

    applicationVariants.all {
   
    variant ->
        variant.outputs.each {
   
    output ->
            variant.outputs.all {
   
   
                outputFileName = "sample-app-core-java.apk"
            }
        }
    }

    compileOptions {
   
   
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildTypes 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值