这个项目现在已经死掉了,这些经历还是有些价值,这里记录下来,供大家批评。
背景
首先回顾一下这个项目的背景。2009年,国家连续出台了多个关于网络扫黄打非的政策和文件,也对一些管理不力的电信机房进行曝光,限时整治。
2009年底的曝光中,当时我们的客户单位某地电信,以一名之差没有被曝光(这个情况是当时他们自己讲的,具体内情不是很了解)。所以,2010年初,当时他们的主管领导找到我们公司,希望我们能给开发一套不良信息监测的系统。
在老总和当时的技术总监的主导下,2010年3月份,这个项目就这么立项了。
当时的我还是进入公司后不久,(我是2009年10月份进入的公司),职位是图像算法工程师,这个项目之前主要在做人脸识别的一些算法研究,以及辅助语义网络项目完成一套图像算法语义词典。
项目初始阶段
起始时项目的分工情况我已不太了解了(我当时刚入公司,并且还是远程做,主要负责图像方面的工作,公司的很多讨论我都没有参与),大体上是分成网络、语义和图像三个部分来做这个事情,网络部负责抓包组包,将还原出的的网页或图片信息分别交给文字检测(语义)和图像检测两部分进行处理,处理后将结果返回给网络部,网络部通过网页的形式展现结果,并提供相应的操作接口。
我很自然的被分配到图像组进行基于内容的不良图片检测的研究。开始时图像组是由老总亲自带,具体研发过程我就不细说了,反正到了4月份的时候,推出了一个window版本的demo。检测结果当时还是比较粗糙的,大约过检(false positive)20%,不良检测率在60%~70%吧,因为当时的训练和测试集都整理的比较少,也没有经过系统的测试。
4月份有一次开会,老总说是要选择一名项目经理负责图像组的研发,不过选择的结果不是任命,竟然是大家一起推选。他先提名了一名资格最老的女员工M,但M是又推托,她又推荐了远程工作的X,X又推到我……当时很是滑稽,我当时也搞不懂为什么是这样(后来虽然有些懂了,但这里还是不要说了吧),后来我竟然跟X是平票,两个都是远程工作的……再后来,远在加拿大的副总AC又投了我一票,并且说要我多负点责任云云。对于责任我确是不容推托的,年终总结里我也曾表过要以主人翁的姿态来工作,所以,当时虽然对远程进行团队管理研发型团队没有什么信心,对员工这种“推”选时的心态很是不解,还是一口应了下来。后来自己担心的这两点都有让自己尝到了苦头。
首先,这是一个研发型的团队,主要是围绕新算法新模型打转,我是一点管理经验都没有。我在以前的公司做企业信息化,倒是带过一个四五个人的团队,但是纯粹的软件开发的话,工作量比较容易量化,进度也容易控制。而研发型的团队,从提出方案思路,到最终形成可以交付使用的系统,中间的不确定性因素太多。
对于一个新的算法的确立,一般的过程是:每遇到一个问题,(1)大家分头调研,查看最新论文,然后汇总,确定采用哪几个方法,(2)然后再实现,进行实验对比。(3)确定最合适的算法,然后进行封装,提交使用。
来看看这中间的不确定性和管理的难度主要集中在哪里:
(1) 我沿用以前的方式来做调查,调查的时候,大家一人分一个方向去调研,看相关论文。但这样的弊病是太过分散,大家各自忙各自的,讨论的时候彼此的细节都不太了解。返回来的结果也经常是:没发现什么好的思路,我调查的那个方法好像不怎么好……往往听到这里我脑子里就炸了
(2) 实现的时候,过程拖的太长,或者因为实现的过程中掺进了人为错误:我的算法还有点问题,我的结果不太好。还有一个比较大的问题是试验数据的整理。很多在标准测试库上跑的很好的算法,到实际图片上会大大降低精度,很多算法都经不起验证。所以,要想测的好,就得针对自己的实际图片进行训练或测试,而样本整理要不失去普遍性就得注意数据来源以及人工筛选的尺度等等。这个在管理上也是比较难控制的。
(3) 封装是风险最小的一个环节,但是往往也会有很多意外出现,比如,在matlab中测试好好的算法,由于对细节的理解不同,用c+改写出来,也会遇到这样那样的问题。
对于人员方向过于分散的问题,我后来采用的办法是尽量集中几个比较可靠的算法,让两个以上的人去负责一个方向,这样一是可以让成员在研究的时候可以相互讨论,相互促进,实验的时候可以彼此验证,二是缩小了范围后,大家可以有精力去了解对方算法的一些情况看,在小组讨论的时候可以提出有用的意见。研究后要整理相关的文档进行总结。
对于样本采集当时是让网络部的人员为我们写爬虫爬了几个网站,然后让实习生什么的一起来分类。至于分类尺度,分类之前总体给他们定一个标准,分类过程中就没有别的方法进行控制了。
这都是后来的一些做法了,一开始可以说是一团糟。我本身远程做,通过skype进行沟通讨论,许多时候沟通不到位。所以搞得自己很是被动。任务安排下去以后,进度一拖再拖,老员工对我这样的新员工也不满抱怨……组员又很少有做文档的习惯,经常我让他们做个实验,返回给我一个最后的数据,连测过多少图片都不知道,问起来还说图片已经删掉……
有点长,先写这些,稍后再续,欢迎批评,留下您的宝贵意见。
推荐阅读:
一次项目经历[2]
http://haibuo1981.iteye.com/blog/1408235
一次项目经历[3]
http://haibuo1981.iteye.com/blog/1409142
分享到:
相关推荐
本项目经历过4个月的测试,bug总量在一个非常低的水平。 方案包括以下部分:Dtu硬件代码:(MCU:STM32F103C8T6?模块:移远m26) Dtu上位机代码:(环境C++和VB) Dtu配置软件代码:(环境C++和VB) Dtu生产测试软件...
记录一次vue-cli项目上线到阿里云并配置Nginx服务器的经历-附件资源
我一次性通过信息系统项目管理师考试,现分享软考信息系统项目管理师考试资料、经验、经历、复习方法
2013年1月第1次印刷 完整版,含全部书签目录 非常不错的资源 整本书以亲身经历的故事穿插理论知识的写法,很容易让人接受。 里面讲了多种控制项目的工具和方法,以及项目的不同周期要思考和解决的问题,写得很不错...
在互联网领域MySql作为最主流的关系性数据库,一直是各种互联网项目的首选,在本文档中对Mysql在各种系统下的安装、配置、优化、开发等操作有详细描述。
主要给大家介绍了关于一次centos Docker网桥模式无法访问宿主机Redis服务的故障排除经历,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
根据系统分析阶段得到的数据流图,采用软件设计的概念和原理,以上一次参照的学生信息管理信息系统为实例,给出学生信息管理系统功能结构图
棉花糖我的第一次体验 Marshmallow 是一个电视节目预览项目
记一次糟糕的开发经历[文本匹配器]–swing框架使用一.前言1.写在前面2.实现目标及效果图A.实现目标B.效果图二.Swing框架和POI介绍1.Swing框架介绍1.什么是Swing?2.Swing中的容器介绍3.一些容器与按钮的写法2.POI...
因为一般的 hr 或者技术经理都是从读你的简历开始才第一次接触到你的,所以你简历的质量直接决定了他对你的第一印象,以及后续你是否会拥有一次面试的机会。 简言之:简历是个人能力名片,面试的敲门砖。 “简历投...
简历最好能覆盖以下三方面的项目经历: 基础平台搭建与线上问题解决 一方面,许多中小型企业,大数据这一块其实还处于刚刚起步阶段,对于平台搭建这一块是刚需;另一方面,一线大厂对于线上基础组件,比方说hdfs与...
《Java 开发手册》是阿里巴巴和开课吧技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与打磨完善,系统化地整理成册,当前的最新版本是黄山版。...
此次部署项目是我亲身经历,而且是一次性部署成功,没有部署超过两次甚至多次的情况,过程虽然很艰难,但结果还是很满意的,我希望大家用心去部署这个项目,你会发现部署这个项目其实不难
Docker容器部署RuoYi-Vue...此次部署项目是我亲身经历,而且是一次性部署成功,没有部署超过两次甚至多次的情况,过程虽然很艰难,但结果还是很满意的,我希望大家用心去部署这个项目,你会发现部署这个项目其实不难
“作家灵魂的每一个秘密,他的生活的每一次经历,他的思想的每一个特质都写在他的作品中。” —弗吉尼亚·伍尔夫(Virginia Woolf) Night Writer是一个博客项目,旨在简化设计,提高速度并提高质量
随着技术的发展,Visual Basic也经历了多个版本的更新,包括VB.NET等,以支持更多的功能和更好的性能。然而,尽管VB在某些领域仍然有其用途,但在现代软件开发中,许多开发者可能更倾向于使用更现代、更强大的编程...
这份名为《商品住宅开发项目可行性研究报告》的文件,是一份专门为大学生创业计划而设计的文档。它详尽地阐述了一个商品住宅开发项目的各个方面,包括市场分析...通过这份报告,大学生可以获得一次宝贵的模拟创业经历,
这个项目是一天建成的。 ###Technologies 使用 Node.js 和 HTML/CSS/Javascript 构建并托管在 Heroku 上。 ###Use 应用程序的默认挑战是一张美国地图,用户尝试在其中选择通过所有 48 个连接州的最短路径。 创建...
5 安排一次真正的实习,了解社会 5 失败的实习生 6 如何找到适合的实习机会 7 实习成功的三有一无 8 开发人员实习应该这样 9 参加一个社团让自己融入团队 9 承担一份责任 10 感受项目经理的无奈 11 真正感受...