從 Trace Code 去看問題點,我輸入的圖片 的 images.shape 是:
(1, 1024, 1024, 4)
....
看最後一個元素的值是 4 ,這應該是一個 RGBA 的圖片,但回去看程式碼: https://github.com/matterport/Mask_RCNN/blob/1ad9feaae3d87b52495413e6c8ea0e92f0e5bc34/mrcnn/model.py#L2798
測試後可以發現程式碼中的 mold_image 進行運算的 mean_pixel 是 3 個值的陣列:
[123.7, 116.8, 103.9]
...
此時只要拿掉 alpha channel 即可,直接在 mold_image return 之前加上判斷式修改:
if images.shape[-1] is 4: images = images[..., :3]
拿掉 channel 之後, image shape 變成:
(1, 1024, 1024, 3)
且正常運行 splash 了。
Reference:
https://stackoverflow.com/questions/35902302/discarding-alpha-channel-from-images-stored-as-numpy-arrays/35902359
https://github.com/matterport/Mask_RCNN/blob/1ad9feaae3d87b52495413e6c8ea0e92f0e5bc34/mrcnn/model.py#L2798
https://github.com/matterport/Mask_RCNN/issues/578
沒有留言:
張貼留言