machine-learning - 如何处理 YUV422 (YUYV) 图像作为 CNN 的输入?
问题描述
我想将以 YUV422 (YUYV) 格式存储的图像输入 CNN。YUV422 表示两个像素用四个字节表示,基本上两个像素共享色度但有不同的亮度。
我知道对于卷积神经网络,空间性起着重要作用,即过滤器“看到”亮度像素及其相应的色度像素。那么如何解决这个问题呢?或者这根本没有问题?
出于性能原因,我想避免额外的预处理步骤。
解决方案
在 TensorFlow、PyTorch 等常见框架中实现的卷积神经网络以平面方式存储通道。也就是说,每个通道(R、G、B 或 Y、U、V)都存储在图像中所有像素(宽度 x 高度)的连续区域中。这与通道数据在每个像素内交错的格式形成对比。因此,您需要对二次采样的 UV 通道进行上采样以匹配 Y 通道的大小,然后以与 RGB 数据相同的方式将其输入网络。
其他人发现它工作正常,但没有达到 RGB 的性能。请参阅https://github.com/ducha-aiki/caffenet-benchmark/blob/master/Colorspace.md 和K Sumanth Reddy的图像色彩空间对卷积神经网络性能的影响;乌帕斯纳辛格;普拉卡什·K·乌塔姆。
YUV 到 RGB 的转换不太可能成为瓶颈。RGB 具有明显的优势,即可以重用许多优秀的预训练模型(迁移学习)。
推荐阅读
- php - 我不断收到此错误:第 8 行的语法错误,意外 ':',期待 ')'
- python - 使用“子进程调用”调用未知目录中的程序
- laravel - 基于 Laravel API 的验证/身份验证
- python - 奇怪的 GUDHI + rpy2 交互
- c - 我想在 C 中创建一个链表并对其执行某些功能。但在我的代码中找不到错误
- css - bootstrap row-cols-sm-1 不适用于卡片。应该为 1 的单元格屏幕上出现两张卡片
- visual-studio-code - SUMX 为所有行提供相同的值
- c# - 更新 BSON 文档添加一条新记录 C# ,然后更新新记录
- windows - 从哪里获得适用于 Windows 的最新 GCC 版本
- ruby-on-rails - 我的顺风实用程序类在生产中不起作用