tusen-ai / simpledet

A Simple and Versatile Framework for Object Detection and Instance Recognition
Apache License 2.0
3.08k stars 488 forks source link

Mask Scoring RCNN Re-implementation #261

Closed zehuichen123 closed 4 years ago

zehuichen123 commented 4 years ago

I've reimplemented the MS-RCNN model. The ResNet-50 based one kept the same performance as MaskRCNN on bbox mAP(37.2) and got a 1.3 point improvement on mask mAP(33.8->35.1), which holds almost the same improvement compared to pytorch implementation(official repo). Besides, I modified the ProposalMaskTarget op which enables it to return one more value(mask ratio) to compute maskIoU afterwards. In order to be compatible with maskrcnn, one more parameter is added into ProposalMaskTarget, the output_ratio. The mask ratio will be computed and returned only if output_ratio is set to be True(default is False).

Dinghow commented 4 years ago

Thx for zehui! I've been waiting for the msrcnn for such a long time, fantastic job!

RogerChern commented 4 years ago

No, you should refactor other mask models to return None for mask score.

On Tue, Nov 26, 2019 at 10:29 AM loveSnowBest notifications@github.com wrote:

@zehuichen123 commented on this pull request.

In ms_test.py https://github.com/TuSimple/simpledet/pull/261#discussion_r350517477:

@@ -0,0 +1,346 @@ +import argparse

Actually, this can be merged into mask_test.py by adding plenty of if and else clauses, since one more field needs to be reserved for mask scoring ( new_score in ms_test.py file). For clarity, I add one more file to avoid this problem. I haven't thought of other elegant solutions. Or, you mean these if and else clauses are just ok?

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/TuSimple/simpledet/pull/261?email_source=notifications&email_token=ABGODH4HFO6WGPIYWJOXEY3QVSCYHA5CNFSM4JQKRY32YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCM57PCQ#discussion_r350517477, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGODH6AEZ4ZCKPOA2RUFZ3QVSCYHANCNFSM4JQKRY3Q .

RogerChern commented 4 years ago

Agreed. And that iou_pred is too specific a name, mask_score is better.

On Tue, Nov 26, 2019 at 10:02 PM Zehao Huang notifications@github.com wrote:

@huangzehao commented on this pull request.

In ms_test.py https://github.com/TuSimple/simpledet/pull/261#discussion_r350757616:

+ +

  • def data_enqueue(loader, data_queue):
  • for batch in loader:
  • data_queue.put(batch)
  • enqueue_worker = Thread(target=data_enqueue, args=(loader, data_queue))
  • enqueue_worker.daemon = True
  • enqueue_worker.start()
  • for index in range(loader.total_record):
  • r = result_queue.get()
  • rid, id, info, post_cls_score, post_box, post_cls, mask, iou_pred = r
  • rid, id, info, post_cls_score, post_box, post_cls, mask, iou_pred = rid.squeeze(), id.squeeze(), info.squeeze(), \

return mask_score instread of iou_pred, and rename new_score as mask_score. For mask_rcnn without rescoring, simply return None or post_cls_score. @RogerChern https://github.com/RogerChern Agree?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/TuSimple/simpledet/pull/261?email_source=notifications&email_token=ABGODH6DPLO2KGEWO6PGAOLQVUT7DA5CNFSM4JQKRY32YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCNAJPQI#pullrequestreview-323000257, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGODH7UZQYCBE2GKS5WPHDQVUT7DANCNFSM4JQKRY3Q .

zehuichen123 commented 4 years ago

I've unified mask-based model prediction by adding a zero output for mask_score and removed redundant ms_test.py file.

RogerChern commented 4 years ago

@zehuichen123 LTGM. A few more things are

zehuichen123 commented 4 years ago

It seems that wheel files and checkpoints are stored on https://1dv.alarge.space, I wonder if i can use it and how? @RogerChern

RogerChern commented 4 years ago

It seems that wheel files and checkpoints are stored on https://1dv.alarge.space, I wonder if i can use it and how? @RogerChern

Pass checkpoints and wheels to zehao.

RogerChern commented 4 years ago

@zehuichen123 The wheels seem not been built correctly. You may consult xiaotao about how to build a static wheel file.