小编Cyp*_*her的帖子

Python OpenCV - imshow不需要从BGR转换为RGB

正如我所知,OpenCV在BGR色彩空间中读取图像,我们通常必须将其转换回RGB,如下所示:

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试简单地读取图像并显示它时,着色似乎很好(无需将BGR转换为RGB):

img_bgr = cv2.imread(image_path)
cv2.imshow('BGR Image',img_bgr)
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
cv2.imshow('RGB Image',img_rgb )
cv2.waitkey(0)
Run Code Online (Sandbox Code Playgroud)

那么是imshow()自动更改函数中的颜色空间(从BGR到RGB)还是颜色空间一直是BGR?

python opencv

16
推荐指数
3
解决办法
3万
查看次数

Android上的人脸识别

我正在尝试在Android上开发一个Face Recognition应用程序,因为我不想在项目上使用NDK(只是没有时间切换),我坚持使用Java开发整个应用程序,因此我遇到了一些问题:

  1. 似乎Contrib模块不包含在OpenCV 2.4.2中.无论如何在项目中使用它?

  2. 我尝试使用JavaCV来使用Contrib Module的"FaceRecognizer"类.有两个类可用,称为"FaceRecognizer"和"FaceRecognizerPtr".有谁知道这两者之间的区别是什么?

  3. 上面提到的类有一个叫做"Train"的方法,它在(C++中)接收两个类型为"Mat&Integer"(model->train(images,labels) & train(Vector<mat> theImages, Vector<int> theLabels)的向量.我尝试ArrayList<mat> & ArrayList<integer>在Java中传递它们和向量,但似乎该方法明确接受"CvArr"数据类型,我不知道如何获取...这是错误:

opencv_contrib.FaceRecognizer类型中的方法train(opencv_core.CvArr,opencv_core.CvArr)不适用于参数(ArrayList,ArrayList)

有谁知道如何将我的ArrayList更改为CvArr?

这是我的第一篇文章,我不确定是在一个帖子还是在三个帖子中提出所有三个问题,对于给您带来的任何不便表示遗憾...如果您需要有关该项目的任何其他信息,请随时提出.

android opencv face-recognition javacv

14
推荐指数
2
解决办法
4万
查看次数

Docker Run 可以访问 GPU,但 Docker Build 不能访问

我正在为 NVIDIA GPU 构建 DeepStream Docker 映像,如本链接中所述。

我安装了NVIDIA 容器工具包,原始 Dockerfile 可以运行,构建后我可以使用以下命令启动具有 GPU 支持的容器:

sudo docker run --runtime=nvidia --gpus all --name Test -it deepstream:dgpu
Run Code Online (Sandbox Code Playgroud)

问题是我想在docker build序列期间安装 PyTorch 并使用它。一旦 PyTorch 在构建序列中导入,Found no NVIDIA driver on your system就会出现错误:

#0 0.895 Traceback (most recent call last):
#0 0.895   File "./X.py", line 15, in <module>
#0 0.895     dummy_input = torch.randn([1, 3, 224, 224], device='cuda')
#0 0.895   File "/usr/local/lib/python3.8/dist-packages/torch/cuda/__init__.py", line 229, in _lazy_init
#0 0.895     torch._C._cuda_init()
#0 0.895 …
Run Code Online (Sandbox Code Playgroud)

gpu docker pytorch nvidia-docker

7
推荐指数
0
解决办法
1787
查看次数

Caffe LeNet:`solver.step(1)`和`solver.net.forward()`之间的区别

我在这里查看Caffe LeNet教程并想到了一个问题:

这两个代码之间有什么区别:

self.solver.step(1)
Run Code Online (Sandbox Code Playgroud)

self.solver.net.forward()  # train net
Run Code Online (Sandbox Code Playgroud)

他们似乎都至少根据评论来训练网络.

我个人认为,第一个训练训练数据网络,并同时更新的权重nettest_net,但第二个似乎只前进了一批数据,并从上一步骤应用学到的权重.

如果我认为是对的,那么教程中第二个代码的目的是什么?为什么代码做了net.forward?不能solver.step(1)做到这一点?

谢谢你的时间

python neural-network deep-learning caffe conv-neural-network

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

Python Numpy - 将非常小的数字视为零

我想用 Numpy 计算奇异矩阵的行列式(行列式为 0),当我打印行列式时,它显示一个非常小的数字(几乎为零 = -7.09974814699e-30)但本身不为零......

当我尝试用 %s、%d 或 %f 打印行列式时,有时它是零,有时是 -0 有时是 -7.09974814699e-30 。

这是代码:

import numpy as np

array = np.arange(16)
array = array.reshape(4, -1)
determinant = np.linalg.det(array)

print("Determinant is %s" % determinant)
print("Determinant is %d" % determinant)
print("Determinant is %f" % determinant)

Determinant is -7.09974814699e-30
Determinant is 0
Determinant is -0.000000
Run Code Online (Sandbox Code Playgroud)

如何让 Numpy 将非常小的数字(例如 -7.09974814699e-30)视为零并向我显示零。我之前也问过这个问题,如果你看一下矩阵,你会发现它充满了非常小的数字但不是零,而它应该是一个对角矩阵,对角线上的数字和其他地方的零......

谢谢...

python numpy matrix linear-algebra determinants

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

Keras - 密集层与 Convolution2D 层的融合

我想制作一个自定义图层,该图层应该将密集图层的输出与 Convolution2D 图层融合。

这个想法来自这篇论文,这里是网络:

网络

融合层尝试将 Convolution2D 张量 ( 256x28x28) 与密集张量 ( 256)融合。这是它的等式:

融合公式

y_global => Dense layer output with shape 256 y_mid => Convolution2D layer output with shape 256x28x28

以下是有关 Fusion 过程的论文的描述:

捕获3

我最终制作了一个新的自定义图层,如下所示:

class FusionLayer(Layer):

    def __init__(self, output_dim, **kwargs):
        self.output_dim = output_dim
        super(FusionLayer, self).__init__(**kwargs)

    def build(self, input_shape):
        input_dim = input_shape[1][1]
        initial_weight_value = np.random.random((input_dim, self.output_dim))
        self.W = K.variable(initial_weight_value)
        self.b = K.zeros((input_dim,))
        self.trainable_weights = [self.W, self.b]

    def call(self, inputs, mask=None):
        y_global = inputs[0]
        y_mid = inputs[1]
        # the code …
Run Code Online (Sandbox Code Playgroud)

python neural-network theano keras keras-layer

5
推荐指数
2
解决办法
1766
查看次数

Tensorflow-总变化损失-reduce_sum与reduce_mean?

为什么建议在Tensorflow中使用总变化损失reduce_sum而不是将其reduce_mean用作损失函数?

可以在优化过程中用作损失函数,以抑制图像中的噪声。如果您有一批图像,则应将标量损耗值计算为总和:
loss = tf.reduce_sum(tf.image.total_variation(images))

tensorflow loss-function

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

Java正则表达式匹配器找不到所有可能的匹配项

我正在看TutorialsPoint的代码,从那以后一直困扰着我......看看这段代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches
{
    public static void main( String args[] ){

      // String to be scanned to find the pattern.
      String line = "This order was placed for QT3000! OK?";
      String pattern = "(.*)(\\d+)(.*)";

      // Create a Pattern object
      Pattern r = Pattern.compile(pattern);

      // Now create matcher object.
      Matcher m = r.matcher(line);
      while(m.find( )) {
         System.out.println("Found value: " + m.group(1));
         System.out.println("Found value: " + m.group(2));
         System.out.println("Found value: " + m.group(3));
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

此代码成功打印:

Found …
Run Code Online (Sandbox Code Playgroud)

java regex

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

Keras - 用于图像和蒙版的大型数据集的生成器

我正在尝试构建一个具有输入和输出(掩码)图像的模型.由于数据集的大小和我有限的内存,我尝试使用Keras文档中引入的Generator方法:

# Provide the same seed and keyword arguments to the fit and flow methods
seed = 1

image_generator = image_datagen.flow_from_directory(
    'data/images',
    class_mode=None,
    seed=seed)

mask_generator = mask_datagen.flow_from_directory(
    'data/masks',
    class_mode=None,
    seed=seed)

# combine generators into one which yields image and masks
train_generator = zip(image_generator, mask_generator)

model.fit_generator(
    train_generator,
    samples_per_epoch=2000,
    nb_epoch=50)
Run Code Online (Sandbox Code Playgroud)

一切似乎都有效,除非代码到达这一行:

train_generator = zip(image_generator, mask_generator)
Run Code Online (Sandbox Code Playgroud)

似乎将这两个列表明确压缩的过程使它们生成了它们的内容,并且系统开始消耗大量的RAM,直到它耗尽内存.

使用Generators的目的是避免在这段代码正好相反的情况下耗尽RAM.

有什么方法可以解决这个问题吗?

python machine-learning computer-vision theano keras

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

与 Photoshop 相比,OpenCV 的 Warp Affine 质量较低

我想使用 OpenCV 的函数从 CelebA 图像(1024x1024 大小)转换和对齐检测到的脸部(320x240 大小),cv2.warpAffine但转换后图像的质量明显低于我尝试在 Photoshop 中手动对齐它时的质量:(左图是由 Photoshop 转换,右图在 OpenCV 中转换)

左图由 Photoshop 转换,右图由 OpenCV 转换

我使用了 OpenCV 的所有插值技术,但它们的质量都无法与 Photoshop 相媲美。

我正在使用的代码是:

warped = cv2.warpAffine(image, TRANSFORM_MATRIX, (240, 320), flags=cv2.INTER_AREA)
Run Code Online (Sandbox Code Playgroud)

到底是什么问题导致转换后的图像质量如此之低?

如果需要,这里是原始 1024x1024 图像的链接。

c++ python opencv image image-processing

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

Ruby Ractor 与 Python 的 MultiProcessing 模块相同吗?

Ruby 3.0 版本引入了 Ractor 以及它们在示例中的表示方式,让人想起了 Python 的 MultiProcessing 模块。

所以...

  1. Ruby 的 Ractor 是否只是伪装的多个进程,而 GIL 仍然统治着线程?

  2. 如果不是,您能否提供一个示例,其中 Ractor 在速度和通信延迟方面都比多处理更具优势?

  3. Ractor 能否像 C/C++ 线程一样快且延迟低?

谢谢

ruby python multithreading multiprocessing gil

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