Как перевести dar knet веса в модель CoreML без потери точности? - PullRequest
0 голосов
/ 19 января 2020

Я обучил модель YOLOv3-SPP и пытаюсь преобразовать ее в CoreML, чтобы использовать ее в своем приложении. Тем не менее, я не могу найти способ сделать это без потери значительного количества точности. Я попытался преобразовать файл .weights в файл Keras .h5, а затем преобразовать его в модель CoreML, но при тестировании модели h5 кажется, что он не может обнаружить что-либо на некоторых изображениях, где веса dar knet работают отлично. Также на изображениях, где модель Keras обнаруживает объект, (во многих случаях) ограничивающий прямоугольник является либо большим, либо маленьким. Я предполагаю, что это означает, что моя модель CoreML была примерно такой же точной, как и модель h5 (и, следовательно, не применимой в моем случае). Мне нужно обнаруживать относительно небольшие объекты на расстоянии, поэтому мне нужно использовать YOLOv3-SPP, поскольку он более точен, чем модели YOLOv3 и YOLOv3-Tiny. Мне не нужно много скорости. Я также только что попробовал обучить модель CoreML с использованием тех же данных с помощью Turi Create (размер пакета составлял 8 и 50000 итераций), однако, похоже, он тоже не очень хорошо работает (для сравнения я обучил модель dar knet с размером пакета 64 для 3000 итераций в Google Colab). Как я могу преобразовать мои веса Дар knet в CoreML без потери как можно меньшей точности? Есть ли что-то, что мне не хватает? Я довольно новичок в машинном обучении и всех концепциях, поэтому написание собственного сценария в принципе невозможно. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 20 января 2020

Вы, наверное, что-то пропустили. ;-) Этого не должно быть. Я предполагаю, что предварительная обработка на модели Core ML неверна. Это случается так часто, что я написал в блоге сообщение: https://machinethink.net/blog/help-core-ml-gives-wrong-output/

...