- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
请帮助获得更多关于我第一次 haar 训练结果的知识。所以我想训练 Haar 分类器来识别简单的笔,如下 Dileep Kumar’s文章。
我用手机拍了 14 幅钢笔画。这些图片尺寸很大:263x2814
然后收集底片,有的是从网上下载的,大小640x480,有的是用手机拍的,大小:1920x1080,5313x2388
其中一些负面图像确实很大。我总共有 158 张底片。
之后创建负面和正面图像列表并运行:createsamples 命令:
perl createtrainsamples.pl positives.dat negatives.dat samples 250 "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 0.5 -maxyangle 0.5 maxzangle 0.5 -maxidev 40 -w 160 -h 20"
我不确定 160 的高度和 20 的高度是否合适?
然后在获得 samples.vec 文件后,我使用以下命令运行级联训练:
opencv_traincascade -data firstTry -vec samples.vec -bg negatives.dat -numPos 250 -numNeg 99 -numStages 25 –featureType HAAR -mode ALL -w 160 -h 20 -mem 2048
我使用了相同的宽度和高度,但不确定这是否正确。我从一些引用脚本中获取了宽度和高度值。获取 cascade.xml 文件后,我使用以下参数在我的图片上运行 detectMultiScale:
faces = faceCascade.detectMultiScale( image, scaleFactor=1.4, minNeighbors=3, minSize=(30, 30) )
检测效果不佳。它只是检测笔的某些部分,而不是整个笔。
此外,当我有一些将笔放在环境中的照片时,未检测到笔。
我想我需要调整所有正面和负面图像的大小并使它们大小相同,但不确定这一点。
您能否就我在这里做错了什么以及如何改进我的结果提供一些意见。
你可以找到我所有的文件here :
最佳答案
这些仅基于我自己的经验:
您可以在 traincascade 命令中更改一些重要的变量,这些变量可以使检测效果更好,但它们会使训练变得极其漫长:
-minHitRate 0.999 -maxFalseAlarmRate 0.1 -maxWeakCount 1000
警告:如果您要使用上述数字,您基本上必须使用 LBP 而不是 HAAR。 HAAR 具有更好的检测能力,但对于 LBP,您可以使用更好的值,因为它花费的时间更少(尽管使用这些数字和大量图像 (+10000) 可能仍需要几天时间,但将这些与 HAAR 一起使用,我可能 几个月后见)。以下是如何使其成为 LBP:-featureType LBP
。
-minHitRate 越接近 1 越好。 -maxFalseAlarmRate 越低到 0 越好。而且 -maxWeakCount 越高越好。
另请注意,您将这些设置得越好,您需要进行的阶段数就越少。您可能有一个 25 级级联,其性能比具有良好设置的 6 级级联差。另请注意,当您使用这些数字时,您的 traincascade 似乎一直停留在获取负面图像上(不过没关系)。
奇怪的是:为什么要检测笔时使用 faces = faceCascade.detectMultiScale
。 :D 不要让计算机比它已经是伴侣的更加困惑。 :D
关于opencv - 改进 Haar 训练结果的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45798288/
real adaboost Logit boost discrete adaboost 和 gentle adaboost in train cascade parameter 有什么区别.. -bt
我想为 book crossing 构建训练数据矩阵和测试数据矩阵数据集。但作为 ISBN 代码的图书 ID 可能包含字符。因此,我无法应用此代码(来自 tutorial ): #Create two
我找到了 JavaANPR 库,我想对其进行自定义以读取我所在国家/地区的车牌。 似乎包含的字母表与我们使用的字母表不同 ( http://en.wikipedia.org/wiki/FE-Schri
我有一个信用卡数据集,其中 98% 的交易是非欺诈交易,2% 是欺诈交易。 我一直在尝试在训练和测试拆分之前对多数类别进行欠采样,并在测试集上获得非常好的召回率和精度。 当我仅在训练集上进行欠采样并在
我打算: 在数据集上从头开始训练 NASNet 只重新训练 NASNet 的最后一层(迁移学习) 并比较它们的相对性能。从文档中我看到: keras.applications.nasnet.NASNe
我正在训练用于分割的 uNet 模型。训练模型后,输出全为零,我不明白为什么。 我看到建议我应该使用特定的损失函数,所以我使用了 dice 损失函数。这是因为黑色区域 (0) 比白色区域 (1) 大得
我想为新角色训练我现有的 tesseract 模型。我已经尝试过 上的教程 https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesser
我的机器中有两个 NVidia GPU,但我没有使用它们。 我的机器上运行了三个神经网络训练。当我尝试运行第四个时,脚本出现以下错误: my_user@my_machine:~/my_project/
我想在python的tensorflow中使用稀疏张量进行训练。我找到了很多代码如何做到这一点,但没有一个有效。 这里有一个示例代码来说明我的意思,它会抛出一个错误: import numpy as
我正在训练一个 keras 模型,它的最后一层是单个 sigmoid单元: output = Dense(units=1, activation='sigmoid') 我正在用一些训练数据训练这个模型
所以我需要使用我自己的数据集重新训练 Tiny YOLO。我正在使用的模型可以在这里找到:keras-yolo3 . 我开始训练并遇到多个优化器错误,添加了错误代码以防止混淆。 我注意到即使它应该使用
将 BERT 模型中的标记化范式更改为其他东西是否有意义?也许只是一个简单的单词标记化或字符级标记化? 最佳答案 这是论文“CharacterBERT: Reconciling ELMo and BE
假设我有一个非常简单的神经网络,比如多层感知器。对于每一层,激活函数都是 sigmoid 并且网络是全连接的。 在 TensorFlow 中,这可能是这样定义的: sess = tf.Inte
有没有办法在 PyBrain 中保存和恢复经过训练的神经网络,这样我每次运行脚本时都不必重新训练它? 最佳答案 PyBrain 的神经网络可以使用 python 内置的 pickle/cPickle
我尝试使用 Keras 训练一个对手写数字进行分类的 CNN 模型,但训练的准确度很低(低于 10%)并且误差很大。我尝试了一个简单的神经网络,但没有效果。 这是我的代码。 import tensor
我在 Windows 7 64 位上使用 tesseract 3.0.1。我用一种新语言训练图书馆。 我的示例数据间隔非常好。当我为每个角色的盒子定义坐标时,盒子紧贴角色有多重要?我使用其中一个插件,
如何对由 dropout 产生的许多变薄层进行平均?在测试阶段要使用哪些权重?我真的很困惑这个。因为每个变薄的层都会学习一组不同的权重。那么反向传播是为每个细化网络单独完成的吗?这些细化网络之间的权重
我尝试训练超正方语言。我正在使用 Tess4J 进行 OCR 处理。我使用jTessBoxEditor和SerakTesseractTrainer进行训练操作。准备好训练数据后,我将其放在 Tesse
我正在构建一个 Keras 模型,将数据分类为 3000 个不同的类别,我的训练数据由大量样本组成,因此在用一种热编码对训练输出进行编码后,数据非常大(item_count * 3000 * 的大小)
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我是一名优秀的程序员,十分优秀!