- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对 OpenCV 很陌生,正在尝试训练一个可以从侧面检测狗图像的 haar 分类器。我用过this教程作为指南。作者建议可以使用少得惊人的样本图像来训练相对有效的分类器。按照他的指示,我收集了 40 个阳性样本和 600 个阴性样本,然后使用提供的脚本以 .vec 文件的形式生成更多样本。使用以下参数进行 20 个阶段的训练大约需要一周半的时间:
<?xml version="1.0"?>
<opencv_storage>
<params>
<stageType>BOOST</stageType>
<featureType>HAAR</featureType>
<height>64</height>
<width>80</width>
<stageParams>
<boostType>GAB</boostType>
<minHitRate>9.9900001287460327e-01</minHitRate>
<maxFalseAlarm>5.0000000000000000e-01</maxFalseAlarm>
<weightTrimRate>9.4999999999999996e-01</weightTrimRate>
<maxDepth>1</maxDepth>
<maxWeakCount>100</maxWeakCount></stageParams>
<featureParams>
<maxCatCount>0</maxCatCount>
<featSize>1</featSize>
<mode>ALL</mode></featureParams></params>
</opencv_storage>
在最后一个阶段,负计数接受率下降到 0.000579 - 我认为这意味着 0.0579% 的负样本被错误地归类为正样本,即在没有狗的情况下有狗。换句话说,99.942% 的样本被正确识别。这些数字对我来说似乎相当不错,但是当我将分类器 .xml 文件插入面部检测程序时,结果很糟糕。
这是用于分析全黑图像的分类器的图片(设备的摄像头平放在工作台上以防止任何光线进入):
(想象一个黑色屏幕,有几个随机放置的绿色矩形边框,有些重叠。可悲的是,我似乎没有必要的声誉来发布真实的东西......)
我对修复分类器的最佳猜测是我需要使用更大的负样本和正样本池进行再训练。
我真正想知道的是:为什么 Acceptance Ratio 和分类器的实际表现如此不同?我是否误解了接受率的含义?如果我对比率的理解是正确的,我应该期望什么样的数字才能给我一个有效的分类器?
如有任何帮助,我们将不胜感激。
最佳答案
当test acceptance Ratio比train acceptance ratio差很多时,有两种可能:
您可以检查这两种可能性。我建议您测试其他特征提取方法,例如 HOG 和 LBP。为此,您只需将 featureType 更改为 HOG 或 LBP。
正负样本的数量取决于样本的多样性。这意味着如果你有一个外观变化很大的对象(在测试图像中),你需要增加正样本的数量(>500)以覆盖所有可能的外观(负样本是相同的)。
不要忘记更改用于图像测试的输入参数(min-neighbor、scale、minSize 和 maxSize)。
关于OpenCV:良好的训练输出但级联分类器很差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31622620/
嗨,我正在考虑开发一种文件传输程序,想知道我是否想要尽可能好的加密,我应该使用什么? 我会用 C# 开发它,所以我可以访问 .net 库 :P在我的 usb 上有一个证书来访问服务器是没有问题的,如果
我创建的这个计算两个数组的交集是线性的方法的复杂度(在良好、平均、最差的情况下)? O(n) public void getInt(int[] a,int[] b){ int i=0; int
我已经能够使用 RTCPeerConnection.getStats() API 获得 WebRTC 音频调用的各种统计信息(抖动、RTT、丢包等)。 我需要将整体通话质量评为优秀、良好、一般或差。
基本问题: 如果我正在讲述/修改数据,我应该通过索引硬编码索引访问文件的元素,即 targetFile.getElement(5);通过硬编码标识符(内部翻译成索引),即 target.getElem
在 Linux 上,我想知道要调用什么“C”API 来获取每个 CPU 的统计信息。 我知道并且可以从我的应用程序中读取 /proc/loadavg,但这是系统范围的负载平均值,而不是每个 CPU 的
在客户端浏览器中使用 fetch api,GET 或 POST 没有问题,但 fetch 和 DELETE 有问题。它似乎将 DELETE 请求方法更改为 OPTIONS。 大多数研究表明是一个cor
我是一名优秀的程序员,十分优秀!