问题标签 [mobilenet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
object-detection-api - 使用对象检测 API 微调具有不同类数的模型
范围
我正在尝试使用对象检测 API 迁移学习 SSD MobileNet v3(小型)模型,但我的数据集只有 8 个类,而提供的模型是在 COCO(90 个类)上预训练的。如果我保持模型的类数不变,我可以毫无问题地训练。
问题
更改 pipeline.config num_classes 会产生分配错误,因为图层形状与检查点变量不匹配:
问题
- 有没有办法改变类的数量并且仍然进行迁移学习(比如只加载具有匹配大小的变量)?还是我必须在只有 8 节课的从头训练或 90 节课的微调之间应付?
- 是否有任何工具可以手动“修剪”预训练的检查点变量?
数据集:ITD 数据集
型号:SSD MobileNetV3 - 小型(来自Model Zoo)
管道配置:
android - 是否可以在 Android 上运行 ssd_mobilenet_v1_fpn 进行推理?
我正在为 Android 制作一个对象检测应用程序,我在使用 ssd_mobilenet_v1_fpn 模型进行训练时获得了良好的性能。
我导出了冻结推理图,转换为 tflite 并对其进行量化以提高性能。但是当我在TensorFlow Lite Object Detection Android Demo上尝试它时 ,应用程序崩溃了。
该应用程序与默认模型 (ssd_mobilenet_v1) 完美配合,但不幸的是不适合小物体检测和分类。
这是我的量化 ssd_mobilenet_v1_fpn 模型:
谷歌云端硬盘:https ://drive.google.com/file/d/1rfc64nUJzHQjxigD6hZ6FqxyGhLRbyB1/view?usp=sharing
这里是未量化的模型:
谷歌驱动器:https ://drive.google.com/file/d/11c_PdgobP0jvzTnssOkmcjp19DZoBAAQ/view?usp=sharing
对于量化,我使用了这个命令行:
bazel run -c opt tensorflow/lite/toco:toco -- \ --input_file=tflite_graph.pb \ --output_file=detect_quant.tflite \ --input_shapes=1,640,480,3 \ --input_arrays=normalized_input_image_tensor \ --output_arrays=TFLite_Detection_PostProcess ,TFLite_Detection_PostProcess:1,TFLite_Detection_PostProcess:2,TFLite_Detection_PostProcess:3 \ --inference_type=QUANTIZED_UINT8 \ --mean_values=128 \ --std_values=128 \ --change_concat_input_ranges=false \ --allow_custom_ops --default_ranges_min=0 --default_ranges_max=6
我也尝试了 tflite 转换器 python api,但它不适用于这个模型。
这里是android logcat错误: 错误
2020-09-16 18:54:06.363 29747-29747/org.tensorflow.lite.examples.detection E/Minikin:无法获取 cmap 表大小!
2020-09-16 18:54:06.364 29747-29767/org.tensorflow.lite.examples.detection E/MemoryLeakMonitorManager:MemoryLeakMonitor.jar 不存在!
2020-09-16 18:54:06.871 29747-29747/org.tensorflow.lite.examples.detection E/BufferQueueProducer: [] 无法获得 hwsched 服务
2020-09-16 18:54:21.033 29747-29786/org.tensorflow.lite.examples.detection A/libc:致命信号 6 (SIGABRT),tid 29786 中的代码 -6(推理)
有没有人设法在android上使用fpn模型?还是 ssd_mobilenet_v1 以外的模型?
javascript - 如何从 Node 中的 TensorFlow.js 获取最可能的类名
我想做的事:我想用mobileNet从TensorFlow.js图像分类中得到概率最高的className。我想将类名作为字符串。
问题:我不知道如何将类名隔离为字符串。有这个命令吗?或者你知道我该如何解决我的问题吗?
我的代码:
和输出:
所以在这种情况下,我想得到字符串('chain mail, ring mail, mail, chain armor, chain armour, ring armour, ring armour')。
tensorflow - 如何提高目标检测的准确性,主要跟踪人工智能的计算机视觉应用到工业部署规模?
我目前正在使用来自 tensorflow.js 的 coco-ssd mobilenet。我正在使用这个模型来预测 coco 数据集中存在的运动球周围的边界框。但准确度相当低。我基本上是通过在javascript中使用质心跟踪算法在两者之间建立关联来进行对象检测和跟踪的。一切都很好,但是当默认模型无法预测 n 帧的球时,跟踪器会丢弃该球并假定它是一个新球。所以,我想提高准确性,这样我的检测就不会失败。
这就是我从 tensorflow 导入 coco-ssd 模型的方式
这就是我加载模型以进一步预测边界框的方式
推论一下,这里的video是html的实际video元素。
那么,如何通过丢失检测来改进对象跟踪。任何建议或想法!
machine-learning - Deeplabv3 不预测类
我正在尝试使用 mobilenetv3_small_seg 架构训练 deeplabv3 模型。我训练了模型,但我得到的预测是一个完整的空白掩码,没有类预测。我遵循的培训步骤是:
在 Google Colab 中克隆了官方存储库。
我准备了只有一个类的数据集(在脸上分割嘴唇)。我遵循 Pascal VOC12 数据集格式。我创建了 RGB 蒙版 (0, 255, 0),其周围有白色边界 (255, 255, 255) 和黑色背景 (0, 0, 0),如下所示。
然后我在此脚本的帮助下将 RGB 蒙版转换为具有背景:0、前景:1 和边界:255 的单通道 png(8 位),如下所示:
然后,我通过修改此脚本成功地将数据集转换为 tfrecord 。
然后我在 data_generator.py 中添加了我的数据集描述,其中 ignore_label=255 和 num_classes=2。
最后,我开始使用以下命令进行训练:
训练完成后,我用几张不同的图像测试了模型。模型的输出是 (256, 256) 数组,所有值都等于 0。没有一个值我得到 1 或其他任何值。
我是机器学习的新手。我想知道
- 我的流程有什么问题?我看了很多教程,但我找不到答案。
- 我的数据集有什么问题吗?该数据集共包含 2000 张图像。
- 我找不到 mobilenetv3_small 的预训练权重。如果有人知道,请分享,以便我进行迁移学习。
- 我将类数设置为 2(背景和前景)。那正确吗?
tensorflow - 我们可以显示与 mobilenet 的欠拟合吗?
是否有任何示例可以证明/证明我们在使用 mobilenet 对图像进行分类时也可以看到欠拟合?
我已经尝试在 ml5.js 中使用 mobilenet 进行迁移学习和特征提取,因为它已经在数千张图像上进行了训练,即使我只添加和训练 3 张新图像,我似乎也得到了正确的结果。
我正在寻找一个示例,以便我可以向用户证明 mobilenet 也可能欠拟合。可能是在构建模型时更改特定参数或类似的东西。对任何技术堆栈开放(tensorflow.js / Ml5.js / keras)。
例如,这是来自 keras 的文档:
那么是否存在用户可以更改并观察差异/欠拟合的变量?
此外,这是一个使用 mobilenet 和 tensorflow.js 进行图像分类的代码实验室链接。基本上,我想做类似的事情,但只是向用户展示这里也可能出现欠拟合。有什么办法可以修改这段代码吗?
https://codelabs.developers.google.com/codelabs/tensorflowjs-teachablemachine-codelab#0
machine-learning - mobilenet 的训练数据大小 (ImageNet)
有没有关于 ImageNet 中有多少图像/类用于训练 MobileNet 架构的信息?我已阅读论文“MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications”,但那里没有此类信息。
有什么线索吗?
python - 寻求有关移动设备近实时对象检测的建议(检测图像中的垃圾)
嗨伙计,
目前我正在尝试构建一个应该在移动设备上运行的近实时对象检测模型。由于我是计算机视觉这一特定领域的新手,我将不胜感激关于我当前进展的每一个建议,以及关于我可以采取哪些不同方式来实现目标的反馈。
目标
目标是检测图像中的垃圾并将其分类为以下处理方法之一(3个目标类):
- 黄色麻袋/罐头(德语)
- 纸
- 玻璃
除此之外,模型应该是轻量级的,以便可以在移动设备上有效地运行它。
数据集
我正在使用垃圾网数据集,其中包含分布在以下类别中的 2527 张图像:玻璃、纸张、塑料、垃圾、纸板、金属。值得注意的是,每张图片只有一个项目。每个图像的背景也是相同的(纯白色)。
方法论
坦率地说,我正在关注 Sentdex 关于 Mac'n'cheese 检测的 YouTube 教程和这篇关于枪支检测的中等帖子。因此,我使用 Google Colab 作为我的环境。此外,我正在尝试重新训练预训练模型(ssd_mobilenet_v2_coco_2018_03_29)。通过使用 tensorflow API(model_main.py 和 export_inference_graph.py)提供的方法来训练模型和导出推理图。我正在为这个模型使用来自 tensorflow的示例配置。
到目前为止我的步骤
- 我已经设置了我的 Google Colab 环境,类似于我之前提到的 Medium 帖子中的 Colab Notebook。
- 我将数据分别按 3/4 和 1/4 分成训练和测试数据。
- 我使用流行的 labelImg 工具标记了我的数据,以便每个对象都有一个边界框。
- 我删除了对象填充整个空间或超出图像范围的每个图像,因为边界框没有那么大的意义。
- 我创建了
label_map
,csv
和tfrecord
文件。 - 我玩弄了盒子预测器和特征提取器
initial_learning_rate
的l2_regularizer > weight
速率,设置use_dropout=true
并增加了batch_size=32
.
我目前的结果
我构建的大多数模型的 AP/AR 都很差,损失有点高,而且往往会过拟合。此外,该模型一次只能在新图像中检测一个对象(可能是因为数据集?)。
这是我的张量板上的一些屏幕截图。这些是在大约 12k 步之后制作的。我认为这也是过度拟合开始显现的关键,因为 AP 突然上升并且预测图像的准确度在 90-100% 左右。
标量:
预测图像:
我身边的问题
- 每个图像中只有一个对象是否有问题?在视频流上运行模型时,这可能会导致问题吗?
- 这些图像是否足以构建准确的模型?
- 有没有人在这方面有经验,可以就如何微调预训练模型给我建议?
- 我还在网络摄像头的视频流上运行模型,但所有模型都倾向于对整个屏幕进行分类。因此,模型似乎正在检测一个对象,但在整个屏幕上绘制了边界框。这可能与数据集的性质/模型质量差有关吗?
这是一篇很长的帖子,所以提前感谢您抽出时间阅读本文。我希望我能够明确我的目标,并为你们提供足够的细节来跟踪我目前的进展。
我感谢每一条反馈!
此致
扬尼克
预训练的 ssd_mobilenet_v2_coco_2018_03_29 模型的当前调整配置:
python-3.x - MobileNetV2 如何为不同的自定义输入形状提供相同数量的参数?
我正在关注关于使用 MobileNetV2 作为基础架构进行微调和迁移学习的 tensorflow2教程。
我注意到的第一件事是,可用于预训练的“imagenet”权重的最大输入形状是 (224, 224, 3)。我尝试使用自定义形状 (640, 640, 3) 并且根据文档,它会发出警告说 (224, 224, 3) 形状的权重已加载。
因此,如果我加载这样的网络:
它给出了警告:
如果我尝试使用像 (224, 224, 3) 这样的输入形状,那么警告就会消失,但是,我尝试使用两种情况检查可训练参数的数量
发现可训练参数的数量是一样的
即使卷积过滤器的数量大小会根据自定义输入形状发生相应变化。那么,即使卷积滤波器具有更大(空间)尺寸,参数的数量如何保持不变呢?
python - 不理解 OpenCV GitHub Wiki 的“TensorFlow 对象检测”
我正在尝试使用这个 wiki来检测带有 Python OpenCV 的对象。但我不明白我们应该使用的这行代码:
我想使用 MobileNet-SSD v3,所以我下载了这个,以及tf_text_graph_ssd.py 文件和ssdlite_mobilenet_v3_large_320x320_coco.config 文件。
但是没有一个文件具有 python 命令行中列出的 *.pb 扩展名,并且该文件已经具有 *.pbtxt 输出扩展名,所以我不明白该行必须做什么?
这可能是一个非常基本的问题,但我已经为此苦苦挣扎了一段时间,所以我想我可以问一下。
谢谢!