作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
Michael是一位经验丰富的Python、OpenCV和c++开发人员. 他对机器学习和计算机视觉特别感兴趣.
比赛是提升机器学习技能的好方法. 您不仅可以访问高质量的数据集,还可以获得明确的目标. 这可以帮助您专注于重要的部分:为手头的问题设计高质量的解决方案.
我和我的一个朋友最近参加了 N+1 fish, N+2 fish competition. 这个机器学习竞赛,有很多图像处理,需要你 process video 鱼被识别、测量、保存或扔回大海的片段.
In the article, 我将引导您了解我们如何使用标准图像处理技术和预训练的神经网络模型来解决比赛中的问题. 提交的解决方案的性能是根据一定的公式来衡量的. 凭借我们的解决方案,我们获得了第11名.
关于机器学习的简单介绍,可以参考 this article.
我们在每个片段中都有一条或多条鱼的视频. 这些视频是在缅因湾捕鱼的不同船只上拍摄的.
这些视频是从固定位置的摄像机收集的,这些摄像机被放置在尺子上向下看. 尺子上放着一条鱼, 渔夫把手从尺子上移开, 然后渔夫根据鱼的种类和大小丢弃或保留鱼.
这个项目有三个重要的任务. 最终目标是创建一种算法,可以自动为视频文件生成注释, 其中注释由以下部分组成:
比赛的组织者创建了一个综合指标,对所有这些任务的表现进行总体评估. 该指标是每个任务的单个指标的简单加权组合. 虽然有一定的重量, 他们建议我们专注于一个能够为所有任务做出贡献的全面的算法!
您可以从中了解有关如何通过每个单独任务的性能度量来计算总体性能度量的更多信息 官方竞赛网页.
When working with machine learning 处理图片或视频的项目,您将最有可能使用 卷积神经网络. But, 在我们使用卷积神经网络之前, 我们必须对帧进行预处理,并通过不同的策略解决一些其他的子任务.
对于训练,我们使用了一个nVidia 1080Ti GPU. 为了在竞争中保持竞争力,我们浪费了大量时间去优化代码. 然而,我们确实花了更少的时间在那些更重要的事情上.
通过轮廓分析,找到船只的数量变成了一项相当琐碎的任务. 步骤如下,并利用了一些非常标准的技术:
SURF检测图像中的兴趣点并生成特征描述. 这种方法非常健壮,即使在各种图像转换中也是如此.
一旦图像中感兴趣点的特征已知, 进行K-means聚类, 然后进行轮廓分析,以确定图像中船只的大致数量.
尽管数据集包含单独的视频文件, 每个视频似乎都与数据集中的其他视频有一些重叠. 这可能是因为这些视频是从一个长视频中分离出来的,因此在每个视频的开始或结束处都有一些共同的帧.
识别这样的框架,并在必要时删除它们, 我们在帧上使用了一些快速哈希函数.
通过应用一些标准的图像处理方法, 我们确定了尺子的位置和方向. 然后,我们旋转并裁剪图像,以一致的方式在所有帧中定位标尺. 这也使我们能够将帧尺寸减小到原来的十倍.
检测到的标尺(绘制在平均帧上):
裁剪和旋转区域:
在这次比赛中,执行这个阶段来确定鱼的顺序花费了我大部分的时间. 训练新的卷积神经网络似乎太昂贵了, 所以我们决定使用预训练的神经网络.
为此,我们选择了以下神经网络:
这些神经网络模型是在 ImageNet dataset.
我们只提取模型的卷积层,并通过它们传递竞争数据集. 在输出中,我有一个相当紧凑的特征数组.
Then, 我们只训练具有完全连接的密集层的神经网络,并预测每个预训练模型的结果. 之后,我们对结果求平均值,结果很糟糕.
我们决定用 长短期记忆(LSTM) 神经网络用于更好的预测,其中输入数据是由预训练模型转换的五帧序列.
为了合并所有模型的输出,我们使用了几何均值.
鱼类检测管道为:
一个视频的结果是这样的:
在花费大部分比赛时间执行前一阶段后, 我们试图用前一阶段的模型来确定鱼的种类,以弥补失去的时间.
我们的方法大致如下:
为了确定鱼的长度,我们使用了神经网络. 其中一个被训练来识别鱼头,另一个被训练来识别鱼尾. 鱼的长度近似为两个神经网络识别的两点之间的距离.
以下是各阶段的总体方案:
整体设计相当简单,因为视频帧在合并单独的结果之前经过了上面概述的阶段.
轮廓分析是一种能够区分视觉上彼此分离的数据点簇的技术.
机器学习模型是机器学习算法在数据上训练的产物. 该模型以后可用于为类似的输入产生相关的输出.
Located in 巴统,阿贾拉,格鲁吉亚
Member since September 12, 2016
Michael是一位经验丰富的Python、OpenCV和c++开发人员. 他对机器学习和计算机视觉特别感兴趣.
世界级的文章,每周发一次.
世界级的文章,每周发一次.
Join the Toptal® community.