第155章 攻坚(2/2)
有人说起调代码调到崩溃,做梦都在写算法;
还有人说起吃了两周的泡面,现在闻到泡面味就想吐。
陈阳坐在主位上,微笑着听他们吐槽,时不时举杯敬一下。
技术人真的很纯粹,他想。
给他们一个难题,他们就会拼了命去攻克。不为别的,就为了证明自己能行。
这种人,是公司最宝贵的财富。
酒过三巡,众人渐渐散开,三三两两地聊天。
陈阳端着酒杯,走到徐力身边坐下。
徐力脸上带着微醺的红晕,但精神还算不错。
“老徐,ISP的事情搞定了,接下来还有一个更重要的功能。
66
陈阳压低声音,语气认真起来。
徐力放下酒杯,看向他:“什么功能?
“人形检测。”
徐力微微皱眉,酒意似乎消散了几分。
“人形检测————这个确实是核心功能。“他沉吟道,“目前市面上的摄像头,大多是用前后帧对比来检测移动物体,风吹草动都会触发报警,误报率很高。
“如果我们能做到精准识别人形,只有检测到人才报警,那确实是一个很大的卖点。”
他顿了顿,神色有些为难:“但问题是,用深度学习模型来做人形检测,对算力的要求很高。咱们用的海思Hi3518,算力太弱了,根本跑不动标准的AI模型。”
“如果强行跑,要么卡死,要么延迟高到没法用。
陈阳点点头,他知道徐力说的是实话。
2013年的嵌入式晶片,性能和十年后完全不是一个量级。
要在这种“破铜烂铁“上跑深度学习,在别人看来简直是天方夜谭。
但他不是别人。
“老徐,我有一个思路。
陈阳放下酒杯,目光变得锐利起来。
“传统的做法,是让CPU每秒钟处理25帧画面,每一帧都跑AI检测。这样做,CPU肯定扛不住。”
徐力点头:“对,这就是问题所在。”
“但换个角度想,“陈阳嘴角微微上扬,“为什么要每一帧都跑AI?大部分时候,画面里根本没有人,我们却在浪费算力处理空画面,这不是傻吗?”
徐力愣了一下:“你的意思是——
“让摄像头学会“偷懒“。“陈阳说道,“第一步,我们不用CPU去检测运动,而是直接从H.264编码器的硬体里,把“运动矢量“偷出来。”
“运动矢量?“徐力眼睛一亮,似乎抓住了什么。
“对。H.264编码的时候,硬体本身就会计算每个像素块的运动方向和幅度,这个数据叫运动矢量。”
陈阳解释道,“我们可以利用这个数据,让摄像头平时处于“半睡眠“状态。只有当编码器检测到画面里有东西在动,系统才会被唤醒。”
“而且,我们不需要扫描整个画面,直接锁定“动了的那一小块区域“就行。
徐力的眼神越来越亮,酒意完全醒了。
“妙啊————让硬体替我们站岗。这一招,釜底抽薪!
“这只是第一层。“陈阳笑了笑,伸出第二根手指,“第二步,就算知道哪里在动,也不能直接上大模型,太慢了。”
“我们要做快慢结合。先用一个极小的算子,只需要1毫秒,判断这个东西像不像人影。”
“如果只是树叶晃动丶窗帘飘动丶宠物走过,直接丢弃;只有像人影的,才启动核心Al。”
“这样一来,系统既快又准,误报率会大幅下降。
徐力忍不住拍了一下大腿:“级联检测!先用轻量算子快速筛选,再用大模型精准确认。这样大模型的负担就小多了。”
“没错。“陈阳点头,“别人的摄像头风吹草动就乱叫,我们的摄像头要像老练的狙击手,不见兔子不撒鹰。”
徐力听得连连点头,眼神里满是兴奋。
但紧接着,他又皱起眉头:“可是陈总,就算用了这两招,最后还是要跑模型啊。标准模型太大了,光是塞进内存就能把晶片撑死。”
“这个问题怎么解决?
陈阳笑了笑,伸出第三根手指。
“第三步,也是最核心的一步,模型压缩。
他压低声音,语气变得神秘起来:“标准模型用的是32位浮点数,我们把它全部砍成8位整数。
66
“INT8量化?“徐力瞪大眼睛,“这样精度损失会很大吧?
“损失是有,但可以接受。“陈阳说道,“而且我们还可以用稀疏化技术,把模型里不重要的参数直接砍掉。
“这样一来,模型体积能缩小75%,运算速度能提升20倍。原本需要算5秒的过程,现在只需要0.2秒。”
徐力彻底愣住了。
INT8量化,稀疏化————这些技术他听说过,但2013年根本没有成熟的方案。
“陈总,你这些想法————“他看着陈阳,眼神复杂,“是从哪里来的?
陈阳端起酒杯,笑而不答。
“老徐,这只是一个思路,具体实现还需要你来攻关。
“今天先好好吃饭,明天我把细节整理一下,咱们再仔细讨论。”