我正在尝试构建一种简单的图像检测算法,该算法将对不同的对象(例如塑料杯,瓶子,手机等)进行分类。使用openCV和python实现此目的的最佳方法是什么?谢谢
答案 0 :(得分:0)
如果您正在寻找可以检测各种物体(即对给定图像进行分类)的算法或模型,则必须查看Conv Nets(CNN)。
CNN是一种深度学习模型,可以在要检测的图像类别上进行训练。以后,可以将不同的图像提供给训练有素的CNN以获得预测。
如果您对此内容感兴趣,建议您阅读this博客文章。
您可以尝试对图像进行一些图案匹配,但是如果变化很大,则准确性会大大降低。
答案 1 :(得分:0)
据我所知,您无法在OpenCV上训练/构建自己的网络。您宁愿使用OpenCV来加载预训练的模型并在一组图像上执行检测。
要创建新模型,您可以使用caffe,torch或tensorflow框架,并使用它在OpenCV中执行检测。
要执行检测,您需要执行以下操作:
contrib
模块编译了OpenCV。如果您不只是在您的终端上输入以下内容:pip install opencv-contrib-python
。cv2.dnn
。如果您不这样做,则需要更新OpenCV的版本。readNetFromCaffe
readNetFromDarknet
readNetFromTensorflow
readNetFromTorch
在阅读this blogpost by Adrian之后,我遇到了dnn
模块。
仅重申一下,您可以在OpenCV上使用预先训练的模型执行检测,但不能创建新模型。
caffe :model= cv2.dnn.readNetFromCaffe(ResNet.prototxt.txt, ResNet.caffemodel)
,其中prototxt.txt
文件包含架构,另一个文件包含模型权重。
tensorflow :model = cv2.dnn.readNetFromCaffe(ResNet.pb, ResNet.pbtxt)
,其中.pb
文件包含netwrok体系结构,.pbtxt
包含模型权重。
有关更多详细信息,请参见链接。