android - OpenCV Android 的 DNN 输入大小是否存在隐含限制?
问题描述
我训练了一个没有指定输入大小的 Caffe 模型。然后我使用 OpenCV 在 Android 上运行它。代码如下所示。
private void runEntireImageTest(Mat inY) {
float scaleFactor = 1.0f / 255.0f;
Scalar mean = new Scalar(0);
Mat resized = new Mat();
// (550, 441) runs OK. (smaller sized runs also fine)
// (551, 441), (550, 442) crash.
// (441, 550) crashes
Imgproc.resize(inY, resized, new Size(550, 441));
Mat segBlob = Dnn.blobFromImage(resized, scaleFactor, resized.size(), mean, false, false);
mNet.setInput(segBlob);
// if input size is above some value, crash will happen here
Mat lastLayer = mNet.forward();
Mat outY = lastLayer.reshape(1, 1);
}
正如评论中所写,输入大小似乎存在一些内在或隐含的限制。(550, 441)
运行正常,但(551, 441)
会导致SIGSEGV
:
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x6d494bd744 in tid 19693 (myappname), pid 19661 (myappname)
我认为这不是内存问题,因为(550, 441)
运行良好但(441, 550)
会崩溃。这个问题的原因是什么?
解决方案
推荐阅读
- html - 使用引导程序的 flex 实用程序的垂直居中文本在 IE11 中不起作用
- c - 如何连接拼图以使右边缘与另一个拼图的左边缘具有相同的长度?
- facebook - 使用 php 在 facebook 中创建重定向 url
- android - android,LiveData 会带来什么开销
- javascript - 如何从Angular中的构建中排除文件类型?
- c++ - 如何找出哪个窗口触发了 WM_PARENTNOTIFY?
- python - Airflow 上 S3KeySensor 中的多个文件路径
- python - 无法让 nameko-injector Python 包工作
- java - 将数据从一个片段传递到另一个片段而不更改片段
- java - 将 JInternalFrame 添加到持有 JScrollPane 的 JTabbedPane 持有 JPanel 与 Gridbag 布局