我现在是计算机科学的本科生,明年我将进入最后一年.我发现增强现实是一个非常有趣的话题,但我不知道从哪里开始学习它.
您从哪里开始了解此主题以及可用的库?
language-agnostic computer-science computer-vision augmented-reality
我是否更愿意在CPU或GPU上计算矩阵?
假设我有以下矩阵P * V * M,我应该在CPU上计算它们以便我可以将最终矩阵发送到GPU(GLSL),还是应该将这三个矩阵分别发送到GPU以便GLSL可以计算最终矩阵?
我的意思是在这种情况下,GLSL必须为每个顶点计算MVP矩阵,因此在CPU上预先计算它可能更快.
但是,让我们说GLSL只需要计算一次MVP矩阵,GPU会比CPU更快地计算出最终矩阵吗?
例如,要计算conv3-256一层VGG Net 的参数个数,答案是0.59M =(3*3)*(256*256),即(内核大小)*(两者中的两个通道数的乘积)联合层),但是这样,我无法得到138M参数.
那么请你告诉我计算的错误,或者告诉我正确的计算程序?
拍摄一张纸时(例如,使用电话摄像头),我得到以下结果(左图)(jpg 在此处下载)。所需的结果(使用图像编辑软件手动处理)在右侧:

我想用openCV处理原始图像,以自动获得更好的亮度/对比度(以使背景更白)。
假设:图像具有A4纵向格式(在本主题中,我们无需对其进行透视变形),并且纸页为白色,可能带有黑色或彩色的文本/图像。
到目前为止,我已经尝试过:
各种自适应阈值方法,例如高斯,OTSU(请参阅OpenCV doc 图像阈值)。通常可以与OTSU配合使用:
ret, gray = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)
Run Code Online (Sandbox Code Playgroud)
但仅适用于灰度图像,不适用于彩色图像。此外,输出是二进制(白色或黑色),我不希望这样:我更喜欢保留彩色非二进制图像作为输出
如本建议答案(直方图均衡化不是彩色图像的工作- OpenCV的)或该一个(OpenCV的Python的equalizeHist彩色图像):
img3 = cv2.imread(f)
img_transf = cv2.cvtColor(img3, cv2.COLOR_BGR2YUV)
img_transf[:,:,0] = cv2.equalizeHist(img_transf[:,:,0])
img4 = cv2.cvtColor(img_transf, cv2.COLOR_YUV2BGR)
cv2.imwrite('test.jpg', img4)
Run Code Online (Sandbox Code Playgroud)
或使用HSV:
img_transf = cv2.cvtColor(img3, cv2.COLOR_BGR2HSV)
img_transf[:,:,2] = cv2.equalizeHist(img_transf[:,:,2])
img4 = cv2.cvtColor(img_transf, cv2.COLOR_HSV2BGR)
Run Code Online (Sandbox Code Playgroud)
不幸的是,结果非常糟糕,因为它会在本地创建可怕的微对比度(?):

我还尝试了YCbCr,这很相似。
我还尝试了CLAHE(对比度受限的自适应直方图均衡化),范围tileGridSize从 …
python opencv image-processing computer-vision image-thresholding
我正在使用尺寸为3x3的索贝尔滤波器来计算图像导数.看一下互联网上的一些文章,似乎sobel过滤器的大小为5x5和7x7的内核也很常见,但我无法找到它们的内核值.
有人可以让我知道尺寸为5x5和7x7的sobel滤波器的内核值吗?此外,如果有人可以共享一个方法来生成内核值,那将非常有用.
提前致谢.
我正在寻找一个OpenCV函数,它可以找到连接的组件并对它们执行一些任务(比如获取像素数,轮廓,对象中的像素列表等).
是否有OpenCV(C++)的功能类似于MatLab的regionprops?
我正在研究一种图像类增量分类器方法,使用CNN作为特征提取器和一个完全连接的块进行分类.
首先,我对每个训练有素的VGG网络进行了微调,以完成一项新任务.一旦网络被训练用于新任务,我就为每个班级存储一些示例,以避免在新班级可用时忘记.
当某些类可用时,我必须计算样本的每个输出,包括新类的示例.现在为旧类的输出添加零,并在新类输出上添加与每个新类对应的标签,我有新标签,即:如果有3个新类输入....
旧班类型输出: [0.1, 0.05, 0.79, ..., 0 0 0]
新类类型输出:[0.1, 0.09, 0.3, 0.4, ..., 1 0 0]**最后的输出对应于类.
我的问题是,我如何改变自定义的损失函数来训练新的类?我想要实现的损失函数定义为:
蒸馏损失对应于旧类别的输出以避免遗忘,而分类损失对应于新类别.
如果你能给我一些代码样本来改变keras中的损失函数会很好.
谢谢!!!!!
computer-vision deep-learning conv-neural-network keras loss-function
我知道批量标准化通过将激活转向单位高斯分布,从而有助于更快的训练,从而解决消失的梯度问题.批量标准行为在训练时使用不同(使用每批的平均值/ var)和测试时间(使用训练阶段的最终运行平均值/ var).
另一方面,实例规范化作为对比度规范化,如本文中提到的https://arxiv.org/abs/1607.08022.作者提到输出风格化图像应该不依赖于输入内容图像的对比度,因此实例规范化有所帮助.
但是,我们不应该使用实例规范化进行图像分类,其中类标签不应该依赖于输入图像的对比度.我还没有看到任何使用实例规范化的纸张来进行批量归一化以进行分类.这是什么原因?此外,可以并且应该一起使用批处理和实例规范化.我渴望在何时使用哪种规范化方面获得直观和理论上的理解.
machine-learning computer-vision neural-network conv-neural-network batch-normalization