zoukankan      html  css  js  c++  java
  • 图像识别方案的选择思考

      图像识别方案的选择思考,由于自己选择方案的失策,导致把三种方案都实现了一遍,花了很多时间吸取教训,但是也获得了经验。大体方向上可以分为模板匹配的识别方式,机器学习训练模型,CNN神经网络训练模型三种。

      模板匹配的识别方式,主要是考虑识别速度和需要匹配的模板数量,识别速度和匹配的图像大小,需要匹配的模板数量相关。识别一次匹配的模板数量尽量少,可以提前在光照、颜色上区分成不同的模式,减少需要匹配的模板数量。被识别的图像可以适当缩放,同时模板也进行缩放,可以明显提高匹配速度,但是会牺牲一定的识别精度。裁剪有缺失的图像,模板匹配效果不佳,需要适当扩展外围,会增加匹配时间。光照均匀,角度比较固定,图像和模板差距不大的识别场景,可以考虑使用这种方式,使用opencv加上自己准备的模板就可以实现初步评估。移植的时候需要编译opencv。

      机器学习训练模型,需要自己设计特征,训练速度和需要的训练集图像数量远远少于CNN,识别精度和适应性与自己设计的特征相关,一般来说训练速度快于CNN,识别精度不如CNN,识别速度快于模板匹配,精度可能不如模板匹配。设计特征一般是颜色,灰度,边缘。建议是不同特征各自一个模型,试过直接串联不同特征的效果并不好。移植需要编译opencv和相关机器学习代码,比如SVM。

      CNN卷积神经网络模型,需要自己准备大量训练图像,训练图像尽量贴近实际识别的图像,懂得设计网络模型,简化模型参数。训练依赖GPU,生成训练图像和调整网络模型比较耗时,但是不用自己设计特征了。移植的时候编译ncnn,模型转换为ncnn格式。识别精度和训练的模型相关,一般优于模板匹配和机器学习,识别速度一般快于模板匹配。主要的难度在于生成训练图像和调整网络模型。

      识别精度不需要特别高,速度上要快可以考虑机器学习先测试效果;场景单一,识别速度不需要特别快,可以考虑用模板匹配;场景光源多变,识别精度、速度要求高,直接上CNN,前期多准备训练图像,加上自己生成训练图像,找一些github上的模型结构改良。

  • 相关阅读:
    面向对象高级
    Intellij IDEA 激活码 | Intellij IDEA 注册码
    如何保证核心链路稳定性的流控和熔断机制?
    消息模型:主题和队列有什么区别?
    MySQL中悲观锁和乐观锁到底是什么?
    SQL是如何在数据库中执行的?
    ZooKeeper 面试题(30道ATM精选问题)
    线上服务的FGC问题排查,看这篇就够了!
    一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程
    由多线程内存溢出产生的实战分析
  • 原文地址:https://www.cnblogs.com/linguinost/p/15188615.html
Copyright © 2011-2022 走看看