测试开发之路 记录一次在客户现场进行数据采集的经历与感想

孙高飞 · 2024年04月27日 · 最后由 我去催饭 回复于 2024年04月29日 · 10831 次阅读

事情的起因

大家都知道搞 AI 要有海量的高质量数据才能玩的转,那这些数据要从哪里来?不同的业务有不同的做法,结构化数据领域可能相对简单一些,很多时候都可以通过 sql 语句从线上库中把数据过滤拼接出来,不用很大的采集成本, 甚至数据标注的工作很多时候也可以自动拼接出来。 而 NLP 领域会更恶心一些,它不是恶心在数据采集上, 因为在互联网信息爆炸的现在,很多数据都是爬取出来, NLP 领域的数据恶心在标注上。 因为它往往需要理解一份文档的内容才能进行标注。 比如我们要做一个问答模型, 往往需要标注人员读懂一篇专业的文档,然后从中提取相关的问题和答案(问题和答案就是标注数据了)。 这也是为什么业内很多团队都会选择利用 GPT 进行 “蒸馏” 法,也就是把一个问题发给 GPT 来回答, 然后把 GPT 输出的答案就当是标注数据了。 这样就不用人工的来对数据进行标注了。 当然 Open AI 是不准许这么干的,这也是为什么字节的 Open AI 账号被封掉的原因, 因为 Open AI 发现该账号存在这种行为。

而这一次我接到的任务则是在计算机视觉领域中, 这个领域中的标注是非常简单的,而采集成本却异常的高(跟 NLP 完全相反)。 跟视觉相关的很多场景都设计到了数据隐私安全,所以在网络上很难找得到符合要求的数据。比如在计算机视觉中非常常见的人脸识别,用户的人脸信息是非常敏感的,在以前很多门店(房屋中介,4s 店)都会假设摄像头采集用户人脸信息,这在行业中是默认的潜规则, 但在 2,3 年前已经被国家彻底禁止了。 毫无底线的获取用户信息的时代已经过去了,这时候想要再收集到人脸或者其他信息,就需要用户的授权才可以。 而我们这一次为了提高电动车识别效果(自打某城市电动车着火把整栋楼烧掉后, 电动车识别就成了一个强需求),在与客户沟通后便派人前往客户处构造并采集数据。

为什么是我去

本来数据采集的工作不是测试人员的负责范围的, 公司有专门的数据组, 也有专业的交付人员到客户处进行沟通。 但有些时候怎么说呢, 理想很丰满现实很骨感,网上不是流传一句话么,叫整个世界就是一个草台班子。 所以即便是在顶级的公司内部,大多数地方也都挺乱的,流程并不完善。 所以在这个项目中在一开始就缺失了数据采集的这么个角色, 所以我们总监就临时让测试来顶了数据采集的活。 这也是我们这边的理念或者是现在整个行业中比较流行的理念吧 -- 角色是不设边界的(测试人员不是只关注测试这一块,在发现其他岗位有缺口时也要补上去),大家互相补位把产品做好,在我们公司也有一句话叫能上能下。 但其实也是面向领导编程的工作态度, 很多时候当领导希望你做某件事的时候,抱着岗位边界这个原则来说事往往是非常无力的。

如何采集数据

项目在一开始的时候只需要采集自然数据即可, 就是不会刻意的去构造数据, 就在真实的摄像头中拉流,抽帧。把数据提交到数据组的平台中,再由算法人员核查,核查后提交给标注组标注,之后模型训练即可。 但自然数据必然会带来正样本稀少的缺点,因为现在很多园区的管理也挺好的(尤其高档园区),有很多的保安在站岗,能把电动车推进楼道/电梯/大厅的情况本身就很少。 所以采集了很多天其实也没采集到多少正样本。

PS: 这里贴一下数据采集的工具:

sudo bin/ffmpeg -i rtsp://xxx:xxx@xxxx:554/cam/realmonitor?channel=1\&subtype=0 -r 1/5 -f image2 -q:v 1 -an ./xxx/xxx_7zuoketi_$(date +%Y%m%d-%H%M%S)-%03d.jpg

ffmpeg 和 opencv 都是计算机视觉领域中测试人员常用的工具(其实交付,工程,算法也都用), 尤其 ffmpeg 的使用频率非常高, 它可以把各种形式的视觉数据经过处理转换成另外一种形式。比如在这个场景中我们使用 ffmpeg 从某个摄像头中拉取 rtsp 协议的实时视频流,并设置每 5s 抽一帧并保存到对应的目录中。

所以其实可以看出来,数据采集的技术难度不高, 只要对计算机视觉方向有基本的了解,学会 ffmpeg 这个工具即可。 但数据采集恶心的地方在于如果不认为构造数据, 仅凭自然数据那就收集不到足够的正样本(在本例中就是压根采集不到多少张有人推着电动车进入楼道的图片), 所以这里就需要开展认为构造数据了, 那怎么构造呢, 其实很原始。 招聘演员和租用各种不同的电动车,到客户的各个摄像头下按照固定的路线和姿势推着电动车走来走去就行了。 这里需要注意的是:

  • 电动车的种类/颜色/大小都要不同, 尽量要丰富。 还需要有覆盖雨衣/挡风服等场景。
  • 演员推动电车的方式有左扶,右扶,骑行,停歇等姿势。 因为人对于电动车的遮挡程度也影响算法的识别结果
  • 演员的服装要更换,不能一直固定。因为人和服装等因素会影响算法的识别结果。
  • 要覆盖大厅/电梯/过道等不同的摄像点位和摄像角度

所以根据以上背景, 上周日晚上领导们紧急开会后,当天夜里就定了第二天早上的机票飞往广州客户处。

中间遇到的困难

  • 需要招聘演员/临时工(包括电动车), 好在我们的客户比较给力, 跟我一起去的标注组的妹子也给力,我因为飞机延迟到的比较晚, 她到了后跟客户协商后给了我们 5 个保安协助我们工作, 每人每天 100 块钱酬劳。
  • 盒子与大量的摄像头之间网络不稳定,导致拉流和抽帧会失败,或者图片质量受到影响。 这就使得我必须频繁的检查抽帧质量, 观察摄像头实时画面。
  • 客户摄像头管理混乱,未按规划实施。 比如在 4 期 2 号地 1 座大厅这个点位, 在系统中录入的是 4 期 12 栋。 这导致我们是不能按名字和位置来匹配点位信息的,所以我们采集之前必须踩点,数据组的妹子到点位摄像头下,而我在系统里去挨个点位查看, 看哪个点位能看见她, 就对应到哪个点位了。 这导致采集比较麻烦。
  • 办公环境恶劣。 这一周广州下暴雨, 今天还刮了龙卷风。 所以这一周我们有不少时间其实是在暴雨中作业的。好在很多场景都是在室内构造。但也因为天气过于恶劣给我们造成了很大的麻烦。 比如我们只能在工作日的早上 9 点到下午 5 点之间进行数据构造和采集, 因为其他时间小区的居民要大量的出入小区,使用基础设施比如电梯。 而由于暴雨我们俩是打不到车的,所以需要在暴雨下徒步走到客户小区(好在只有 2,3 公里好像)。 然后现场是没有座位没有厕所没有空调,在地下的点位采集的时候那个闷热的要命,我只能蹲在某个犄角旮旯里开着电脑采集,要不是地下有个消防栓让我放电脑,我估计我都得扎马步了。 为什么不座地上? 因为下暴雨么。。。。地上都是水。。。地下可能还漏水。。。 再然后广州的蚊子。。。嗯。。。太牛逼了。。。第一天我身上就 20 个包起步(小区的绿化太特么好了,肉眼可见的一堆蚊子在我身边飞)。
  • 还有一个事想一想还是说一说么, 就是我被嘲笑了。。。。因为。。。。虽然我是来采集电动车数据的, 但是我不会骑电动车。。。每天都是让标注组的妹子驮着我奔波在各个小区之间采集数据。。。所以我被一众保安大哥们给嘲笑了。 就挺荒诞的:专门来采集电动车数据的人竟然不会骑电动车~~~ 天天让妹子驮着我也是挺丢脸的~~

说说感受吧

最大的感受是一线实施的人真的苦逼, 这钱真的是一个辛苦钱。 上面说的困难里最让我难受的就是办公环境, 我们俩个一天真的是不敢喝水,就怕喝水上厕所,小区里没有公共厕所的, 想去厕所得不行 10 分钟到保安办公区那里。 但我俩都得盯着演员或者盯着监控或者盯着采集。 哪敢一走就是 10 几 20 分钟的。毕竟我们只有早 9 晚 5 这段时间能采集,那都是争分夺秒的(采集压力是很大的,必须在规定时间内采集到足够的数据,长期这么采集是不现实的,因为这扰民啊,比如在电梯场景里采集数据, 那就是占着电梯,居民就用不了这个电梯了只能用别的, 一旦人流量上来了让居民排队了就会被投诉的)。 然后一整天都在喂蚊子, 并且要么站一天,要么蹲着一天。 我基本采集的第二天大腿和腰就酸疼酸疼的,因为我一直在用蹲着的姿势一蹲就几个小时(中间也就偶尔站起来活动活动,或者转点位的时候走动走动)。 所以这一次出来采集数据, 最大的感受就是体会到了一线实施的同学真特么是挣的辛苦钱。演员也挺可怜,跟着我们一走就是一天,结果就百十来块钱的。

这次出来也算是又补全了在 AI 领域里的一个经历了, 以前还真没搞过现场数据构造与采集的活, 算是体验了一把, 也深切的感受到了那句话:人工智能是有多少人工就有多少智能。 一个个牛逼的模型背后,都是大量的一线人员的汗水。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 13 条回复 时间 点赞

这活很危险啊。。。大厂成本太高,大概率只能定制给个 DEMO。。。
至少还得有个另外的活支撑一下。

偷偷采集数据不会构成违法吗?

哈哈,下次有经验了;小板凳、小桌子、驱蚊防雨装备带齐;按出去露营的标准来准备😄

magicyang 回复

额。。。。 不危险吧。。。不是什么高危的工作,不会有生命危险的, 最多就是累点

孙高飞 回复

不是工作内容危险。。。
是干这活产出可能低,有广进的危险。。。

0x88 回复

肯定是要拿到客户的授权的, 现在不拿授权不敢偷偷采数据的

magicyang 回复

不会的, 不论我还是标注组的那个妹子, 我俩都是临时被抓了壮丁干这个活的, 我们都有自己的主营业务。

原来数据采集是这样做的,高端的项目,最后的关键还是落在一线实施的人员的数据采集上

不会骑电驴就不能体验 “骑上我心爱的小摩托” 的快乐,建议学学😀

让我想起来当年隔壁算法组的自导自演,头顶架个摄像头,然后一群人走来走去,很好玩~
前面字太多没挨个品读,说下我旁边两个做安防的做法,在楼下或者园区出入口处固定放置了摄像头,有特定场景需求就手持机器找个下班点去楼下直拍,不知道楼主这边合不合适参考,我是感觉比客户现场采集好弄

你们这样比较危险吧, 没有经过用户授权就直接拍摄人体信息。 我们这里肯定不敢的。

孙高飞 回复

不是我们,是当时的友商,而且研发的事能算危险吗,干就完了,CN 哪还有保密和隐私

学个电动车可比代码简单多了😂

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册