测试了两个不同的设备——三星SM-A710FD和华为MediaPad T3 10——两者都运行Android版本7.0。一个建议是:不要在房间里测试应用程序,因为任何发射或反射光的东西都会被检测为闪电。这是训练模型的目的,对吧?数据集中大约300张图片都显示了夜晚闪电的景象。这意味着黑色背景和明亮的物体——被检测为闪电。当将手机或平板的摄像头指向电脑屏幕或天花板上的光源时,也会发生同样的事情。建议在户外测试应用程序,最好是在夜晚,以街灯作为闪电的替代品。用iPhone做了测试——在iPhone上打开一张闪电图片,然后用运行应用程序的Android设备对准屏幕。是的:应用程序检测到了闪电!
注意,目标(摄像头指向)应该是突然的,以模仿真实闪电的突然出现。
为了手动测试,将Android手机、华为平板和iPhone(装载了闪电图片)带到了阳台上。那是一个美丽、晴朗的夜晚。然后在Android设备上运行了应用程序。看看结果的视频和截图。
华为平板也是如此——查看视频和截图。
神奇,对吧?正如之前提到的,任何发射或反射的光都会被检测为闪电。要使模型工作得更准确,可以对其进行更多的训练。用大约300张图片进行了训练。试试用更大的数据集,比如说1000张图片。
在下一篇文章中,将讨论项目结果和“经验教训”——所遵循的方法如何用于类似的检测任务。敬请期待!
以下是在Android设备上进行实时测试时可能用到的代码示例。
public void detectLightning() {
// 初始化模型
tfliteModel = new TFLiteModel();
// 加载模型
tfliteModel.loadModelFromAsset(this, "model.tflite");
// 准备输入数据
inputData = new float[inputSize];
// 检测闪电
tfliteModel.runModel(inputData, outputData);
// 分析输出数据
if (outputData[0] > detectionThreshold) {
// 发现闪电
detectLightningCallback.onDetected();
}
}
这段代码展示了如何在Android应用程序中使用TFLite模型进行实时检测。首先,初始化并加载模型,然后准备输入数据。模型运行后,分析输出数据,如果检测到闪电,就调用回调函数。