tensorflow - 如何在 tf/keras 中训练自己的(不带 YOLO 等)对象检测器
问题描述
我成功地训练了多分类器模型,这很容易通过简单的类相关文件夹结构和keras.preprocessing.image.ImageDataGenerator
(flow_from_directory
顺便说一句没有手动编码!)在我刚刚compile
fit
和evaluate
- Keras 的管道做得非常好!
但!当我决定制作自己的(不是猫,不是狗,不是你的名字)物体检测器时 - 这变成了一场噩梦......
TFRecord 和 tf.Example 简直是疯了!但是好的,我几乎明白了(我的数据集很小,我有很多内存,但是谁在乎呢,写 f.样板文件,这么多嗯......)
主要的事情-我只是找不到任何文档/教程如何使用简单的 tf/keras 来制作它,每个人都只想在某个模型 YOLO SSD FRCNN 之上构建它,即使他们试图检测全新的对象!!!
官方文档中有两个关于OD的链接,它们都在下面使用了一些模型。
所以我的主要问题是为什么???或者我只是瞎了..?-__-
解决方案
它变成了一场噩梦,因为目标检测比分类困难得多。最简单的对象检测器是这样的:首先在所有对象上训练一个分类器。然后,当您想要检测图像中的对象时,在图像上滑动一个窗口,并对每个窗口进行分类。然后,如果您的分类器确定某个窗口是对象之一,则将其标记为成功检测。
但是这种方法有很多问题,主要是它的方式(比如 waaaay)太慢了。因此,研究人员对其进行了改进并发明了 RCNN。这有问题,所以他们发明了 Faster-RCNN、YOLO 和 SSD,所有这些都是为了让它更快、更准确。你不会在网上找到任何关于如何实现滑动窗口技术的教程,因为它无论如何都没用,你也不会找到任何关于如何实现更高级的东西的教程,因为网络很快就会变得复杂。
另请注意, usingYOLO
并不意味着您应该使用与 in 相同weights
的内容YOLO
。YOLO
如果您愿意,可以通过随机初始化网络层中的所有权重来从头开始训练自己的数据。所以even if they trying to detect completely new objects!!!
你提到的不是真的有效。另请注意,我仍然建议您使用他们在Yolo
网络中使用的权重。Transfer Learning
通常被认为是一个好主意,尤其是在刚开始时,尤其是在图像处理领域,因为许多图像具有共同的特征(例如边缘)。
推荐阅读
- django - 尝试保留数据时出现凭据错误
- drupal - Drupal 出现问题,获取 http://example.com 404 和 favicon.ico 丢失
- typescript - 如何在 Typescript 中正确键入条件对象分配函数
- python - Pandas:在 Python 中将多个数据列合并为一列
- c# - 我做了一个 asp.net mysql 查询。如何获取姓氏数据?
- shell - VSCode 添加随机百分比
- mikro-orm - 如何正确使用 EntityRepository 实例?
- python - 猴子补丁 - 更改不会反映在其他模块中
- java - 如何使用 jbpm/wildfly 中的元数据字段以 jsonformat 打印日志?
- url - 如何将特殊参数从 CLI 传递到浏览器 URL 栏