AIWintermuteAI / aXeleRate

Keras-based framework for AI on the Edge
MIT License
174 stars 72 forks source link

Add YOLO MobileNetV2 support #56

Closed yangtuo250 closed 3 years ago

yangtuo250 commented 3 years ago
  1. add YOLO MobileNetV2 support
  2. fix style problem(bad param split format) in train.py
  3. scaling w&h in bndbox same as x&y
  4. save model checkpoints by Callback
AIWintermuteAI commented 3 years ago

Hello! Hmmmm, I had a look at Files changed and I don't think I can merge this, even in unstable branch. 1) Too many unrelated changes in one PR. It is generally better to have different features/bug fixes split into different PRs, makes review easier. 2) I do not plan to add MobileNet v2 yet. Main reason is that I actually plan to re-work backends completely after I'm done with YOLOv3. The other reason is that because of large amount of Add operations, MobileNet v2 is rather slow on K210. Have you tested it and compared accuracy/latency to MobileNet v1? I think the accuracy improvement will be negligible, but latency will suffer a lot. 3) Additionally, I'm really not sure about this line https://github.com/AIWintermuteAI/aXeleRate/blob/88cf433d5e632e6a8385fb09e68fb20a91487af7/axelerate/networks/yolo/backend/decoder.py#L38 The division actually depends on batch generator preprocessing code - mine is slightly different from the original K210_YOLOv3 repository. So I think your change will make decoder make erroneous predictions. Apologies, but I'll have to close this PR for now.

yangtuo250 commented 3 years ago

Hello, sir! Thank you for your kindly reply. 1.

Too many unrelated changes in one PR. It is generally better to have different features/bug fixes split into different PRs, makes review easier.

Sorry about that, apologize for the inconvenience from my huge PR.

2.

Main reason is that I actually plan to re-work backends completely after I'm done with YOLOv3.

I'll be waiting for your great job and make PR afterwards.

The other reason is that because of large amount of Add operations, MobileNet v2 is rather slow on K210. Have you tested it and compared accuracy/latency to MobileNet v1? I think the accuracy improvement will be negligible, but latency will suffer a lot.

In my 2 tasks with different dataset, MobileNetV2-0.75 lead to 2-3% mAP increase on GPU evaluation and ~10FPS reduce on K210 comparing to MobileNetV1-0.75 with one output layer. But I didn't test it's mAP on K210 for now, because I do model transform by ncc version 0.1 (kmodel v3) and ran it on kendryte-stansdalone-sdk,

  1. Additionally, I'm really not sure about this line https://github.com/AIWintermuteAI/aXeleRate/blob/88cf433d5e632e6a8385fb09e68fb20a91487af7/axelerate/networks/yolo/backend/decoder.py#L38

    The division actually depends on batch generator preprocessing code - mine is slightly different from the original K210_YOLOv3 repository. So I think your change will make decoder make erroneous predictions.

Sorry but I just walked through your batch generator and found netout postprocess related code. Sincerely apologize again for my carelessness.

Thank you!