我在Python中使用Keras制作了一个图像分类模型,该模型为".h5">格式。我正在尝试使用Deeplearning4j在我的Android应用程序中使用它。
当我尝试通过使用 NativeImageLoader 构造函数加载Mat图像来进行图像分类时,我遇到了一个问题。代码如下:
NativeImageLoader nativeImageLoader = new NativeImageLoader(60, 60, 3);
INDArray image = nativeImageLoader.asMatrix(testImage); // testImage is of Mat format
// 0-255 to 0-1
DataNormalization scaler = new ImagePreProcessingScaler(0, 1);
scaler.transform(image);
// Pass through to neural Net
INDArray output = model.output(image);
INDArray labels = model.getLabels();
当应用程序构建时,它会在上面代码的第二行给出错误,即INDArray image = nativeImageLoader.asMatrix(testImage);
构建apk时出现以下错误:
Error:(1109, 51) error: cannot access BufferedImage
class file for java.awt.image.BufferedImage not found
我试图找到解决方案,但这和这说 AWT 包在 Android 中不受支持。
请帮助我提供解决方案或解决方法。谢谢。
你必须重构 Deeplearning4j 才能将 java-awt 特定的库移植到一个独立的平台 java lib with platfrom 特定于 android 和 awt/j2se 的处理程序
在java Deeplearning4j lib中,你必须将所有java-awt特定的类(如BufferedImage)隐藏在接口IBitmap后面,并为j2se和Android独立实现该接口。
我已经成功地完成了exif/icc/ipc元数据处理和实现接口 pixymeta-lib/.../IBitmap.java 与实施 j2se pixymeta-j2se-lib/.../j2se/BitmapNative.java 和安卓 pixymeta-android-lib/.../android/BitmapNative.java
所以我有这些包
- pixymeta-lib
- 转换后独立于平台的库,其中所有 awt 引用都由 IBitmap 接口替换
- pixymeta-j2se-lib
- IBitmap 的 awt/j2se 实现
- pixymeta-android-lib
- IBitmap 的安卓实现
这个答案的一部分是从这里复制的