小编tri*_*ta2的帖子

如何从可变数量的图像描述符(SURF)创建单个恒定长度特征向量

我的问题如下:

  • 我有6种类型的图像或6类。例如,猫,狗,鸟等。
  • 对于每种类型的图像,我都有该图像的许多变体。例如,棕猫,黑狗等。
  • 我目前正在使用支持向量机(SVM)通过“一站式”与“休息”的分类对图像进行分类。我正在将每个图像展开为单个像素向量,并将其用作给定图像的特征向量,我正在经历不错的分类精度,但是我想尝试一些不同的方法。
  • 我想使用图像描述符(尤其是SURF特征)作为每个图像的特征向量。问题是,每个给定的图像只能有一个特征向量,并且在特征提取过程中得到的SURF特征数不一。例如,一张猫的照片可以给我40个SURF特征,而一张狗的照片可以给我68个SURF特征。我可以选择n个最强的功能,但是无法保证所选的SURF功能可以描述我的图像(例如,它可以聚焦于背景)。也不能保证找到任何SURF功能。

因此,我的问题是,如何获得许多观测值(每个观测值都是SURF特征向量),然后将这些观测值“折叠”到一个描述原始图像的单一特征向量中,并可以输入到SVM中进行训练?

谢谢你的帮助!

machine-learning image-processing computer-vision surf

5
推荐指数
1
解决办法
1279
查看次数

如何将训练集特定的学习参数与sklearn在线(核心外)学习相结合

我的数据集太大了,我正在寻找sklearn中的在线学习解决方案,他们称之为核心外学习.

它们提供了一些使用部分拟合API的类,它基本上允许您将数据的子集保存在内存中并对其进行操作.然而,许多预处理阶段(例如数据缩放)在其拟合阶段期间在训练数据上保留参数,然后将其用于变换.

例如,如果您使用最小 - 最大缩放器将要素绑定到[-1,1]或标准化您的数据,那么他们学习并最终用于转换数据的参数将从他们碰巧正在运行的训练数据的子集中学习在给定的迭代中.

这意味着在一个训练数据子集的拟合阶段期间学习的参数可能与另一个训练数据子集不同,因为它们是训练集特定的.我的问题的核心在于:

当学习参数是训练数据的函数时,如何在使用在线/核外学习的预处理步骤的拟合阶段中学习参数?

python machine-learning data-mining data-analysis scikit-learn

5
推荐指数
1
解决办法
358
查看次数

如何在 Spyder 编辑器中使用 IPython 魔术命令?

我使用 Spyder 作为我的 IDE,我想知道我是否可以%reset在文本编辑器中使用 IPython 魔法(例如)并在我的 IPython 客户端中正确解释它。

目前我遇到了语法错误(这没有错),但我想知道是否有一种方法可以以普通 python 解释器忽略它的方式编写魔法(比如#%reset或其他什么)。

python ipython spyder

5
推荐指数
1
解决办法
3604
查看次数

如何编写测试并发性的 Tornado 单元测试

我有兴趣确保我的 Tornado 处理程序不会阻塞,所以我想编写一些单元测试作为完整性检查。

我想到的是一个异步休眠 2 秒的处理程序。在测试中,我想连续两次调用此处理程序以模拟“同时”请求。

如果我没记错的话,这两个请求应该同时运行,因此在 4 秒内完成。问题是我不确定如何通过AsyncHTTPTestCase.

这是我到目前为止所拥有的:

class SyncSleepHandler(tornado.web.RequestHandler):
    def get(self):
        time.sleep(2)


class AsyncSleepHandler(tornado.web.RequestHandler):
    @gen.coroutine
    def get(self):
        yield gen.sleep(2)


class SleepTest(AsyncHTTPTestCase):
    def get_app(self):
        return Application([(r'/sync', SyncSleepHandler),
                            (r'/async', AsyncSleepHandler)], debug=True)

    def test_async_sleep(self):
        start = time.time()
        resp1 = self.fetch(r'/async', method='GET')
        resp2 = self.fetch(r'/async', method='GET')
        diff = time.time() - start
        self.assertTrue(2 < diff < 4, msg="Difference is {:}".format(diff))
Run Code Online (Sandbox Code Playgroud)

python asynchronous tornado

5
推荐指数
1
解决办法
928
查看次数

如何让 PyC​​harm 在现有控制台中运行当前文件?

如果我尝试运行当前正在编辑的文件,它每次都会打开一个新的 Python 控制台窗口。

如何让 PyC​​harm 使用我已经打开的控制台(即在“工具”>“Python 控制台...”下打开的控制台)运行当前文件?

我知道有一个“在控制台中执行选择”功能,但我不想繁琐地选择代码。我想运行整个文件。

我正在尝试在 Spyder 中模拟 F5 运行功能。

编辑:

Spyder 还具有用户模块重新加载器 (UMR) 功能,每次在交互式控制台中运行文件时都会重新加载用户定义的模块(而不是手动执行imp.reload())。PyCharm也有这样的功能吗?

python pycharm

5
推荐指数
1
解决办法
2568
查看次数

如何在视频中删除剧烈的亮度变化?

我有一个图像流,我从摄像机.我发现有时来自流的图像亮度会有很大的峰值(每个像素跳跃或下降值),然后在下一个图像中返回到正常的亮度级别.

这对我的算法来说是个大问题.无论如何我可以防止这种亮度上升?我在考虑像每个像素上的低通滤波器,但我想知道是否有人有更多这方面的经验.

我将在MATLAB中进行设计并在OpenCV中实现.如果任何一个平台都有一些漂亮的功能,我很乐意听到它们.

谢谢你的时间!

matlab opencv image-processing computer-vision

4
推荐指数
1
解决办法
4109
查看次数

如何索引和修改OpenCV矩阵

如果我有一个OpenCV cv :: Mat,我有一个整数列:

[1;2;3;1;2;3;1;2;3]
Run Code Online (Sandbox Code Playgroud)

如何按值(即1)选择一系列指数,将这些指数设置为不同的值(即0),并保持其余值不变?

如果这是MATLAB,我可以很容易地做到:

A = [1;2;3;1;2;3;1;2;3];
A(A==1) = 0;
Run Code Online (Sandbox Code Playgroud)

导致:

[0;2;3;0;2;3;0;2;3]
Run Code Online (Sandbox Code Playgroud)

c++ opencv

3
推荐指数
1
解决办法
1838
查看次数

如何对抗由 KMeans 聚类引起的随机性

我正在开发一种算法来根据图像数据对不同类型的狗进行分类。该算法的步骤是:

  1. 遍历所有训练图像,检测图像特征(即 SURF),并提取描述符。收集所有图像的所有描述符。

  2. 在收集的图像描述符中聚类并在集合中找到 k 个“词”或质心。

  3. 重申所有图像,提取 SURF 描述符,并将提取的描述符与通过聚类找到的最接近的“词”进行匹配。

  4. 将每个图像表示为聚类中找到的单词的直方图。

  5. 将这些图像表示(特征向量)提供给分类器并训练...

现在,我遇到了一些问题。在图像描述符集合中找到“单词”是非常重要的一步。由于聚类的随机性,每次运行我的程序时都会发现不同的聚类。不幸的结果是,有时我的分类器的准确度会非常好,而有时则非常差。我把这归结为聚类算法有时会找到“好”词,有时会找到“坏”词。

有谁知道我如何通过查找“坏”词来对冲聚类算法?目前我只是聚类几次并取分类器的平均准确度,但必须有更好的方法。

感谢您花时间阅读本文,并感谢您的帮助!

编辑:

我没有使用 KMeans 进行分类;我正在使用支持向量机进行分类。我使用 KMeans 来查找图像描述符“单词”,然后使用这些单词创建描述每个图像的直方图。这些直方图作为特征向量被馈送到支持向量机进行分类。

cluster-analysis machine-learning computer-vision k-means

3
推荐指数
1
解决办法
2013
查看次数

Cocos2D - 为什么我的FPS如此之低?单个场景与tilemap

我用Cocos2D写了一个简单的游戏,我有一个动画精灵在纯绿色的田野里走来走去.

步行精灵是64x64px,操纵杆来自Sneakyjoystick类,绿色区域由5-6个32x32像素组成,使用Tiled制作成tilemap.使用Tiled,我创建了一个50 x 50的瓷砖地图.

我得到20-30 FPS,我不知道为什么.我将瓷砖地图尺寸减小到10x10瓷砖,最高可达50-60 FPS.我不知道该怎么办?

编辑:我已经为游戏玩法层添加了初始化块.我在模拟器上测试.

-(id) init
{
    if( (self=[super init] ))
    {

        self.tileMap = [CCTMXTiledMap tiledMapWithTMXFile:@"TileMap.tmx"];
        self.background = [_tileMap layerNamed:@"Background"];
        self.meta = [_tileMap layerNamed:@"Meta"];
        self.topLayer = [_tileMap layerNamed:@"TopLayer"];

        _topLayer.visible = YES;
        _background.visible = YES;
        _meta.visible = YES;

        [self addChild:_tileMap z:-1];

        [[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@"male_walkcycle.plist"];

        sceneSpriteBatchNode = [CCSpriteBatchNode batchNodeWithFile:@"male_walkcycle.png"];
        [self addChild:sceneSpriteBatchNode z:0]; 

        CCTMXObjectGroup *objects = [_tileMap objectGroupNamed:@"Objects"];
        NSAssert(objects != nil, @"'Objects' object group not found");

        NSMutableDictionary *spawnPoint = [objects objectNamed:@"SpawnPoint"];
        NSAssert(spawnPoint != nil, @"SpawnPoint object not found");

        int x …
Run Code Online (Sandbox Code Playgroud)

iphone cocos2d-iphone

1
推荐指数
1
解决办法
1353
查看次数

如何访问上下文管理器的属性?

我想完成以下事情:

class my_context(object):
    def __init__(self):
        self.obj1 = Obj()
        self.obj2 = Obj()
        ...

    def __enter__(self):
        ''' initialize objects '''

    def __exit__(self, type, value, tb):
        ''' uninitialize objects '''
Run Code Online (Sandbox Code Playgroud)

有许多Obj属性是需要关闭/删除/等的资源.我希望使用上下文管理器来设置它们然后摆脱它们.但是我发现我尝试时无法访问属性:

with my_context() as cont:
    cont.obj1  # doesn't work
Run Code Online (Sandbox Code Playgroud)

有没有办法可以访问这些属性?

python contextmanager

1
推荐指数
1
解决办法
223
查看次数