5分钟给全天相机加上云量识别功能

对天文爱好者来说,过云是一件非常痛苦的事情。我们的对焦和导星都会受到影响,有时候即使云过了,天晴了,结果我们的对焦也飞了,视野也变了,接下来整晚的时间都被浪费,更别提可能会下雨,对我们的设备造成的损害了。所以在这种时候,如果有一个人或者AI来帮我们看摊,这可就太好了。云来了,我们就停拍;云走了,我们就恢复;天晴了,就报警,把我们从被窝里振醒起床收摊。

事实上,直观想象一下,这件事并不难。只要我们用个闲置的天文相机,甚至暗光强一点的手机对着天拍,然后对照片中的云量进行一个识别就可以了。这件事对人来说非常简单,比如哪怕是一个小学生,也可以对着照片看图说话,告诉我们里面有一点云、很多云,还是完全阴天。那为什么我们不试试看用人工智能来做呢?

Framework

这个就牵扯到一个近两年的大变革。一些经验比较多的天文爱好者可能知道,其实在专业天文台里已经有了基于红外光的云量传感器和基于激光的云高仪。但有一个问题非常值得思考。云量检测本身对人来说是一个非常简单的问题,就算用普通的可见光相机拍出来,人也很容易定量识别有百分之多少的天空有云层。那为什么这些专业天文台要舍近求远,去用那些又贵又难用的红外光和激光来做这些传感器呢?就算我们退一步说,这可能是因为科研和工业等领域对精度有非常高的要求,它希望精确到小数点后多少位,所以需要更高端的设备。那为什么对于一些市场更大、精度要求更低的领域,比如业余天文摄影领域,我们只需要知道哪怕是三四档的云量对我们都非常有用,那为什么一直到近几年才逐渐出现低成本的云量传感器呢?

这其中的一个重要原因是人工智能或者说电脑智能的限制。很多时候人可以轻松做到的事情,电脑未必能轻松做到。一个最简单的例子是对人来说判断一个动物是猫还是狗是一件很简单的事情,但是电脑直到2010年代才算可以比较可靠地做到这一点。而遗憾的是,云量检测就是一种对人来说很简单,但是对电脑来说很难的事情。在AI时代以前,从一张可见光图像上判断云量是一个非常专门的博士级别的领域。而且就算我们开发出了一种算法,如何让它在不同的器材、不同的环境中稳定可靠地工作,也是很困难、需要技术攻关的事情。

但最近两年,随着GPT包括带有图像和视频理解能力的多模态GPT的迅猛发展,人类和电脑在智能方面的这个鸿沟正在逐渐缩小。这给我们做云量检测这样的应用带来了全新的思路。比如说在AI时代以前,如果我们要去做一个云量检测传感器的话,我们可能需要先解决红外相机的问题,然后去做多波段合成,然后去设计各种非常专门的图像处理和机器学习算法,针对各种不同的情况调参,而且效果还未必特别可靠。

但是在AI时代我们有了一个新的武器,这就是直接去问GPT,问它在给定的这张图里它的云量到底是多少。下面这张图就是我们真的去问了GPT的结果,这几张图都来自于我们的远程天文台的实际监控。可以看见即使我们是普通人,哪怕我们没有任何关于多波段检测或者云量检测的专业知识,只要我们能够清晰地向GPT表达我们的需求,就可以特别简单地做出来一个看起来相当靠谱的云量检测系统。

GPT response

这是一个非常重要而且甚至有点可怕的改变。它意味着AI时代的一个普通人花两分钟的时间,就可以创造接近于AI时代之前一整个专业科研团队几个月甚至一年的工作量,创造类似的价值。这是对生产力的巨大提升,完全可以类比于工业革命。同时也是对整个市场的巨大冲击。

但是我们现在还面临一个问题,这其实并不是一个完整的系统。它还是需要我们把相机拍摄的照片手工复制粘贴到GPT里面,问它云量是多少。如果我每分钟都要手工去干一次这样的事情的话,还不如我直接告诉系统,我人眼看上去云量是多少算了。所以我们还是需要用编程的方式来把这个过程自动化。

这是我想说的第二点,就是在AI时代之前编程是码农的超能力,他们受过很多专业的训练,懂得如何使用专业知识来把想法翻译成代码。但是在AI时代我们完全可以让AI来做这样的事情。那么下面就是另一个例子,我们用同样的方式描述了一下我们的需求,同时为了方便GPT准确地编写代码,我们附上了从它的官方文档里面复制粘贴的一些例子程序。

GPT API

在这个提示词下,GPT很快写出了符合要求的程序,我们把这个程序复制粘贴到本地的开发环境中,做一些简单的更改就可以得到正确的结果了。完整的代码参见这个gist

GPT code result

所以从我们有使用可见光相机来做云量识别的这个想法,到初步验证这个想法的可行性,到我们真正有了一个程序来每分钟输出,根据全天相机的内容输出一个云量的数字,一共只用了五分钟左右。这是一个颠覆性的效率改进。当然这个产品如果真的要走向市场还得经历很多打磨,比如是不是不同的光害环境、不同的设备它都可以正常工作。对这个感兴趣的读者不妨用自己的数据,用我们的提示词来试一试。

但是总的来看在这个全新的AI年代,我们能做多厉害的东西,能有多方便的生活,已经不再受制于我们自己的技术能力,比如编程有多厉害,而最大的限制是我们的想象力和使用AI的能力。

这里有一个思考题留给读者:为什么当我们在向AI描述需求的时候,我们使用这样的提示词呢?你能看到中间我们用了哪些技巧吗?

Comments