#python #numpy #tensorflow
Вопрос:
Я пытаюсь преобразовать эту пользовательскую модель yolov3: https://drive.google.com/drive/folders/17jysPykGMkNw66lDMd0kryybCvGOesKi?usp=sharing с помощью этого файла .cfg: https://github.com/heltonmaia/ECT-proj-cnn-mice/blob/master/cfg/yolov3.cfg
в tensorflow формат, который уже работал над моделью, которая была связана в видео из этого РЕПО:https://github.com/emasterclassacademy/Single-Multiple-Custom-Object-Detection-and-Tracking (для проверки, и это сработало 😄) тем не менее я попытался применить тот же подход к пользовательской обученную модель, которая обнаруживает «мышей» (тест для анализа), и я получаю эту ошибку:
in load_darknet_weights
conv_shape).transpose([2, 3, 1, 0])
ValueError: cannot reshape array of size 4607 into shape (18,256,1,1)
Поэтому я добавил эти строки в utils.py:
conv_shape = (math.floor(filters), math.floor(in_dim), size, size)
conv_weights = np.fromfile(wf, dtype=np.float32, count=np.product(conv_shape))
if conv_weights.shape[0]<filters*in_dim:
conv_weights = np.append(conv_weights,[0])
До: conv_weights = conv_weights.reshape(conv_shape).transpose([2, 3, 1, 0])
и это сработало, но когда пришло время запускать object_tracker.py
, у меня возникла эта ошибка:
tensorflow.python.framework.errors_impl.InvalidArgumentError: 2 root error(s) found.
(0) Invalid argument: Input to reshape is a tensor with 3042 values, but the requested shape requires a multiple of 43095
[[{{node yolo_output_0/lambda/Reshape}}]]
[[yolo_nms/Reshape_9/_1477]]
(1) Invalid argument: Input to reshape is a tensor with 3042 values, but the requested shape requires a multiple of 43095
[[{{node yolo_output_0/lambda/Reshape}}]]
Комментарии:
1. Проблема заключалась в неправильно обученной модели, чтобы правильно обучить пользовательскую модель, используйте это видео: youtube.com/watch?v=10joRJt39Nsamp;t=2071s и любое другое видео, которое этот канал предлагает вам посмотреть, чтобы получить правильно обученную модель, которую вы хотите позже преобразовать в любой тип