这个问题很笼统,我知道。
但我会在这里澄清一点,这样就不会那么含糊了。
- 对一般压缩理论感兴趣。最好的文章是什么?
- 对当前的 C# 库感兴趣
- 对已经在几个变体中创建的想法的近似实现感兴趣 - 你向神经元提供许多图像对:大的和小的。神经元学会用小的做大的,然后比较做成的大的和喂给它的大的,以了解哪里做错了。为这项任务选择哪个神经元更好?
- 考虑到我在神经网络中根本不是 boom-boom,它是不是太复杂了,在 3 中有多少真正的问题?
- 如果国大新手无法承担任务,那么从什么训练任务入手比较好?
这个问题很笼统,我知道。
但我会在这里澄清一点,这样就不会那么含糊了。
本文给出了 NN 最复杂的任务之一,您可以了解用于解决此类问题的问题和算法的级别以及真正需要 NN 的地方。OpenCV上的示例,这也很棒。
OpenCV - 用 C++ 编写的最开源和许可的库。有用于 C# 的包装器 - EmguCV,用于 Unity 的 OpenCV(您可以在没有 Unity 的情况下使用它)。有针对 Visual Studio (C++)、Objective C、Android Studio、Python 的改编。
即使对于中等复杂的任务,NN 通常也不需要,也不是很适用——通常你必须对视频流进行实时处理,而 NN 并不是目前最快的。出于这个原因和其他一些原因,大多数最初确定他们需要神经网络的开发人员随后拒绝了这个想法。幸运的是,OpenCV 实现了适用于所有场合的大量算法——几乎所有与视频和图像处理相关的东西都在那里。
在问题作者编辑后,我编辑答案:-)
可用包中实现的大多数算法主要是为缩小比例而设计的,对此的需求是显而易见的——相机以高分辨率拍摄,最好在缩小照片后发布到互联网上——所有活跃用户互联网和社交网络使用它。
放大任务也得到了很好的发展,只是对它的需求不成比例 - 尽管如此,任何设计师都非常清楚需要做什么才能放大图像而不会出现问题 - 使用 Corel Draw 或其他矢量图形封装,即把图像做成矢量图。
因此,如果我们将一个小的光栅图像转换为矢量,进行放大,我们很可能已经得到了一些有趣的东西——注意Potrace程序。在 OpenCV 中没有准备好光栅->矢量。虽然可以用可用的工具塑造一些东西,但结果不太可能比 Potrace 更好——毕竟,那里的人是故意处理这个问题的。Potrace 附带源代码和算法的详细描述,因此有足够的创意空间:-)
甜点中最有趣的事情 - 是时候查看放大的图像,并通过与矢量化和放大后获得的结果进行比较,找出偏差。揭示的偏差可以作为学习神经网络的材料。例如,您可以对大图像进行矢量化、匹配曲线并比较它们的特征。根据训练结果,NN 将开始发布一些建议,用于校正任意图像中的曲线。您甚至可以考虑添加曲线,例如额外的渐变颜色轮廓(尽管使用模糊函数等可以更轻松地平滑生成图像中的渐变)
我将补充以前关于CNTK的答案。最近发布的 2.2 版已经有了成熟的 C# 绑定。因此,您不仅可以应用,还可以在不切换到 Python 或 BrainScript 的情况下训练网络。