我正在尝试计算视频的密集特征轨迹,如https://hal.inria.fr/hal-00725627/document中所示。我正在尝试使用 openCV hog 描述符,如下所示:
winSize = (32,32)
blockSize = (32,32)
blockStride = (2,2)
cellSize = (2,2)
nbins = 9
hog = cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins)
hist = hog.compute(img)
Run Code Online (Sandbox Code Playgroud)
然而,这会返回一个非常大的特征向量,其大小为:(160563456, 1)。
什么是窗户?(winSize) 什么是块?什么是细胞?该文档对于解释每个参数的含义并不是特别有帮助。
从http://www.learnopencv.com/histogram-of-orient-gradients/ 我看到,为了计算HOG,我们为图像块的每个单元创建一个直方图,然后对块进行标准化。
我想要的是图像的每个 (32, 32) 块的 4 个 9bin 直方图,应该根据该块的 (16,16) 单元格的直方图计算。因此,我预计 (480,640) 图像的最终 hog 特征大小为 40716。
(((32*32) / (16*16)) * 9) * (((480-16*640-16)/(32*32)*4)) = 40716
((PatchSize / 像元大小) * numBins) * numPatches = hogSize
我也见过有人做这样的事情:
winStride = (8,8)
padding = (8,8)
locations = ((10,20),)
hist = hog.compute(image,winStride,padding,locations) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用tensorflow训练序列到序列模型,并且一直在查看它们的示例代码.
我希望能够访问编码器创建的矢量嵌入,因为它们似乎有一些有趣的属性.
但是,我真的不清楚这是怎么回事.
在单词示例的向量表示中,他们谈论了很多关于这些嵌入可以用于什么的内容,然后似乎没有提供访问它们的简单方法,除非我弄错了.
任何帮助搞清楚如何访问它们将不胜感激.
我正在使用tensorflow并且已经使用该tf.saver()方法训练了一些模型并在每个时期之后保存它们 .我能够很好地保存和加载模型,我正在以通常的方式做到这一点.
with tf.Graph().as_default(), tf.Session() as session:
initialiser = tf.random_normal_initializer(config.mean, config.std)
with tf.variable_scope("model",reuse=None, initializer=initialiser):
m = a2p(session, config, training=True)
saver = tf.train.Saver()
ckpt = tf.train.get_checkpoint_state(model_dir)
if ckpt and tf.gfile.Exists(ckpt.model_checkpoint_path)
saver.restore(session, ckpt.model_checkpoint_path)
...
for i in range(epochs):
runepoch()
save_path = saver.save(session, '%s.ckpt'%i)
Run Code Online (Sandbox Code Playgroud)
我的代码设置为保存每个时期的模型,应该相应地标记.但是,我注意到,在十五个训练时期之后,我只有最后五个时期的检查点文件(10,11,12,13,14).文档没有说明这一点,所以我不知道为什么会发生这种情况.
保护者是否仅允许保留五个检查点或我做错了什么?
有没有办法确保保留所有检查点?