open-mmlab / mmdetection

OpenMMLab Detection Toolbox and Benchmark
https://mmdetection.readthedocs.io
Apache License 2.0
28.9k stars 9.35k forks source link

Test use train datasets(only 10 sample) but nothing output(train acc=0.97) #176

Closed haoran1062 closed 5 years ago

haoran1062 commented 5 years ago

I just overwrite CustomDatasets to eval my data, and for test, I try to use a very little datasets(only ten picture) to train base on cascade_mask_rcnn_r50_fpn_1x.py(change 81class to 1023 class, ),and the log is

2018-12-12 14:14:57,070 - INFO - Start running, host: ubuntu@ubuntu-AX370-Gaming-K5, work_dir: /home/ubuntu/project/mmdetection-master/work_dir
2018-12-12 14:14:57,070 - INFO - workflow: [('train', 1)], max: 5 epochs
2018-12-12 14:14:58,065 - INFO - Epoch [1][1/10]    lr: 0.00083, time: 0.993, data_time: 0.196, loss_rpn_cls: 0.6797, loss_rpn_reg: 0.0126, s0.loss_cls: 7.1445, s0.acc: 0.0000, s0.loss_reg: 0.0215, s0.loss_mask: 0.7367, s1.loss_cls: 3.3454, s1.acc: 0.0000, s1.loss_reg: 0.0000, s1.loss_mask: 0.3878, s2.loss_cls: 1.7227, s2.acc: 0.0000, s2.loss_reg: 0.0000, s2.loss_mask: 0.1798, loss: 14.2309
2018-12-12 14:14:58,838 - INFO - Epoch [1][2/10]    lr: 0.00084, time: 0.773, data_time: 0.002, loss_rpn_cls: 0.6812, loss_rpn_reg: 0.0270, s0.loss_cls: 6.8451, s0.acc: 0.0977, s0.loss_reg: 0.0114, s0.loss_mask: 0.7208, s1.loss_cls: 3.2535, s1.acc: 0.5859, s1.loss_reg: 0.0000, s1.loss_mask: 0.3796, s2.loss_cls: 1.6957, s2.acc: 0.0000, s2.loss_reg: 0.0000, s2.loss_mask: 0.1788, loss: 13.7930
2018-12-12 14:14:59,587 - INFO - Epoch [1][3/10]    lr: 0.00084, time: 0.750, data_time: 0.022, loss_rpn_cls: 0.6841, loss_rpn_reg: 0.0682, s0.loss_cls: 6.1523, s0.acc: 53.4180, s0.loss_reg: 0.0289, s0.loss_mask: 0.7215, s1.loss_cls: 3.0358, s1.acc: 60.0586, s1.loss_reg: 0.0000, s1.loss_mask: 0.3561, s2.loss_cls: 1.6479, s2.acc: 0.2930, s2.loss_reg: 0.0000, s2.loss_mask: 0.1869, loss: 12.8817
2018-12-12 14:15:00,297 - INFO - Epoch [1][4/10]    lr: 0.00084, time: 0.710, data_time: 0.002, loss_rpn_cls: 0.6735, loss_rpn_reg: 0.0282, s0.loss_cls: 5.1729, s0.acc: 99.2188, s0.loss_reg: 0.0112, s0.loss_mask: 0.7180, s1.loss_cls: 2.7568, s1.acc: 94.9219, s1.loss_reg: 0.0042, s1.loss_mask: 0.3772, s2.loss_cls: 1.5797, s2.acc: 13.5742, s2.loss_reg: 0.0000, s2.loss_mask: 0.1688, loss: 11.4905
2018-12-12 14:15:01,020 - INFO - Epoch [1][5/10]    lr: 0.00085, time: 0.723, data_time: 0.018, loss_rpn_cls: 0.6658, loss_rpn_reg: 0.0141, s0.loss_cls: 3.3782, s0.acc: 99.3164, s0.loss_reg: 0.0063, s0.loss_mask: 0.7524, s1.loss_cls: 2.2258, s1.acc: 99.4141, s1.loss_reg: 0.0035, s1.loss_mask: 0.4131, s2.loss_cls: 1.4680, s2.acc: 80.2734, s2.loss_reg: 0.0000, s2.loss_mask: 0.1928, loss: 9.1201
2018-12-12 14:15:01,755 - INFO - Epoch [1][6/10]    lr: 0.00085, time: 0.735, data_time: 0.002, loss_rpn_cls: 0.6451, loss_rpn_reg: 0.0136, s0.loss_cls: 1.0277, s0.acc: 98.6328, s0.loss_reg: 0.0142, s0.loss_mask: 0.7406, s1.loss_cls: 1.1800, s1.acc: 98.9258, s1.loss_reg: 0.0083, s1.loss_mask: 0.3744, s2.loss_cls: 1.1710, s2.acc: 96.5820, s2.loss_reg: 0.0009, s2.loss_mask: 0.1962, loss: 5.3720
2018-12-12 14:15:02,524 - INFO - Epoch [1][7/10]    lr: 0.00085, time: 0.768, data_time: 0.020, loss_rpn_cls: 0.6126, loss_rpn_reg: 0.0122, s0.loss_cls: 0.2617, s0.acc: 98.3398, s0.loss_reg: 0.0281, s0.loss_mask: 0.7869, s1.loss_cls: 0.4101, s1.acc: 99.2188, s1.loss_reg: 0.0028, s1.loss_mask: 0.3766, s2.loss_cls: 0.7501, s2.acc: 99.3164, s2.loss_reg: 0.0006, s2.loss_mask: 0.1820, loss: 3.4236
2018-12-12 14:15:03,269 - INFO - Epoch [1][8/10]    lr: 0.00086, time: 0.745, data_time: 0.002, loss_rpn_cls: 0.5336, loss_rpn_reg: 0.0297, s0.loss_cls: 0.3887, s0.acc: 98.0469, s0.loss_reg: 0.0332, s0.loss_mask: 0.8812, s1.loss_cls: 0.0698, s1.acc: 99.0234, s1.loss_reg: 0.0077, s1.loss_mask: 0.4602, s2.loss_cls: 0.1427, s2.acc: 99.3164, s2.loss_reg: 0.0008, s2.loss_mask: 0.1857, loss: 2.7333
2018-12-12 14:15:04,035 - INFO - Epoch [1][9/10]    lr: 0.00086, time: 0.767, data_time: 0.014, loss_rpn_cls: 0.3892, loss_rpn_reg: 0.0632, s0.loss_cls: 0.8732, s0.acc: 97.9492, s0.loss_reg: 0.0386, s0.loss_mask: 0.9280, s1.loss_cls: 0.1175, s1.acc: 98.9258, s1.loss_reg: 0.0120, s1.loss_mask: 0.5046, s2.loss_cls: 0.0275, s2.acc: 99.2188, s2.loss_reg: 0.0024, s2.loss_mask: 0.2503, loss: 3.2066
2018-12-12 14:15:04,773 - INFO - Epoch [1][10/10]   lr: 0.00086, time: 0.737, data_time: 0.002, loss_rpn_cls: 0.2519, loss_rpn_reg: 0.0612, s0.loss_cls: 0.3205, s0.acc: 99.5117, s0.loss_reg: 0.0049, s0.loss_mask: 0.8554, s1.loss_cls: 0.0845, s1.acc: 99.6094, s1.loss_reg: 0.0021, s1.loss_mask: 0.6040, s2.loss_cls: 0.0196, s2.acc: 99.7070, s2.loss_reg: 0.0000, s2.loss_mask: 0.2431, loss: 2.4474
2018-12-12 14:15:06,202 - INFO - Epoch [2][1/10]    lr: 0.00087, time: 0.959, data_time: 0.164, loss_rpn_cls: 0.1719, loss_rpn_reg: 0.0170, s0.loss_cls: 1.2126, s0.acc: 97.8516, s0.loss_reg: 0.0436, s0.loss_mask: 0.9162, s1.loss_cls: 0.2200, s1.acc: 98.8281, s1.loss_reg: 0.0180, s1.loss_mask: 0.4651, s2.loss_cls: 0.0381, s2.acc: 99.3164, s2.loss_reg: 0.0028, s2.loss_mask: 0.2572, loss: 3.3626
2018-12-12 14:15:07,064 - INFO - Epoch [2][2/10]    lr: 0.00087, time: 0.862, data_time: 0.008, loss_rpn_cls: 0.1656, loss_rpn_reg: 0.0083, s0.loss_cls: 1.7760, s0.acc: 96.1914, s0.loss_reg: 0.0782, s0.loss_mask: 0.8238, s1.loss_cls: 0.3782, s1.acc: 97.8516, s1.loss_reg: 0.0352, s1.loss_mask: 0.4408, s2.loss_cls: 0.0588, s2.acc: 98.9258, s2.loss_reg: 0.0056, s2.loss_mask: 0.1837, loss: 3.9542
2018-12-12 14:15:07,922 - INFO - Epoch [2][3/10]    lr: 0.00087, time: 0.858, data_time: 0.012, loss_rpn_cls: 0.4101, loss_rpn_reg: 0.0332, s0.loss_cls: 0.6715, s0.acc: 94.1406, s0.loss_reg: 0.1329, s0.loss_mask: 0.7138, s1.loss_cls: 0.1793, s1.acc: 97.3633, s1.loss_reg: 0.0421, s1.loss_mask: 0.3517, s2.loss_cls: 0.3122, s2.acc: 98.5352, s2.loss_reg: 0.0084, s2.loss_mask: 0.1800, loss: 3.0354
2018-12-12 14:15:08,664 - INFO - Epoch [2][4/10]    lr: 0.00088, time: 0.742, data_time: 0.008, loss_rpn_cls: 0.4111, loss_rpn_reg: 0.0139, s0.loss_cls: 0.2011, s0.acc: 98.3398, s0.loss_reg: 0.0350, s0.loss_mask: 0.6840, s1.loss_cls: 0.1225, s1.acc: 99.4141, s1.loss_reg: 0.0061, s1.loss_mask: 0.3547, s2.loss_cls: 0.3271, s2.acc: 99.6094, s2.loss_reg: 0.0010, s2.loss_mask: 0.1742, loss: 2.3307
2018-12-12 14:15:09,450 - INFO - Epoch [2][5/10]    lr: 0.00088, time: 0.786, data_time: 0.011, loss_rpn_cls: 0.3330, loss_rpn_reg: 0.0107, s0.loss_cls: 0.5107, s0.acc: 96.3867, s0.loss_reg: 0.0847, s0.loss_mask: 0.6979, s1.loss_cls: 0.0953, s1.acc: 98.6328, s1.loss_reg: 0.0201, s1.loss_mask: 0.3606, s2.loss_cls: 0.1737, s2.acc: 99.5117, s2.loss_reg: 0.0000, s2.loss_mask: 0.1727, loss: 2.4595
2018-12-12 14:15:10,246 - INFO - Epoch [2][6/10]    lr: 0.00088, time: 0.796, data_time: 0.010, loss_rpn_cls: 0.2655, loss_rpn_reg: 0.0265, s0.loss_cls: 0.6398, s0.acc: 96.6797, s0.loss_reg: 0.0700, s0.loss_mask: 0.6789, s1.loss_cls: 0.1345, s1.acc: 98.4375, s1.loss_reg: 0.0224, s1.loss_mask: 0.3821, s2.loss_cls: 0.0830, s2.acc: 99.1211, s2.loss_reg: 0.0021, s2.loss_mask: 0.1808, loss: 2.4856
2018-12-12 14:15:11,043 - INFO - Epoch [2][7/10]    lr: 0.00089, time: 0.797, data_time: 0.008, loss_rpn_cls: 0.2234, loss_rpn_reg: 0.0215, s0.loss_cls: 0.6483, s0.acc: 96.1914, s0.loss_reg: 0.0941, s0.loss_mask: 0.7086, s1.loss_cls: 0.1346, s1.acc: 98.4375, s1.loss_reg: 0.0229, s1.loss_mask: 0.3625, s2.loss_cls: 0.0409, s2.acc: 99.2188, s2.loss_reg: 0.0014, s2.loss_mask: 0.1782, loss: 2.4362
2018-12-12 14:15:11,808 - INFO - Epoch [2][8/10]    lr: 0.00089, time: 0.766, data_time: 0.010, loss_rpn_cls: 0.1600, loss_rpn_reg: 0.0292, s0.loss_cls: 0.5065, s0.acc: 97.7539, s0.loss_reg: 0.0581, s0.loss_mask: 0.7124, s1.loss_cls: 0.0831, s1.acc: 99.3164, s1.loss_reg: 0.0043, s1.loss_mask: 0.3487, s2.loss_cls: 0.0245, s2.acc: 99.4141, s2.loss_reg: 0.0018, s2.loss_mask: 0.1776, loss: 2.1060
2018-12-12 14:15:12,612 - INFO - Epoch [2][9/10]    lr: 0.00089, time: 0.803, data_time: 0.007, loss_rpn_cls: 0.1297, loss_rpn_reg: 0.0199, s0.loss_cls: 0.6126, s0.acc: 96.8750, s0.loss_reg: 0.0599, s0.loss_mask: 0.7211, s1.loss_cls: 0.1820, s1.acc: 98.3398, s1.loss_reg: 0.0209, s1.loss_mask: 0.3675, s2.loss_cls: 0.0404, s2.acc: 99.0234, s2.loss_reg: 0.0036, s2.loss_mask: 0.1808, loss: 2.3385
2018-12-12 14:15:13,440 - INFO - Epoch [2][10/10]   lr: 0.00090, time: 0.829, data_time: 0.009, loss_rpn_cls: 0.1691, loss_rpn_reg: 0.0257, s0.loss_cls: 0.5893, s0.acc: 96.0938, s0.loss_reg: 0.0728, s0.loss_mask: 0.7536, s1.loss_cls: 0.2018, s1.acc: 97.6562, s1.loss_reg: 0.0382, s1.loss_mask: 0.3957, s2.loss_cls: 0.0379, s2.acc: 98.9258, s2.loss_reg: 0.0038, s2.loss_mask: 0.2144, loss: 2.5025
2018-12-12 14:15:14,927 - INFO - Epoch [3][1/10]    lr: 0.00090, time: 1.016, data_time: 0.181, loss_rpn_cls: 0.1426, loss_rpn_reg: 0.0107, s0.loss_cls: 0.4584, s0.acc: 95.8984, s0.loss_reg: 0.0945, s0.loss_mask: 0.6870, s1.loss_cls: 0.1323, s1.acc: 98.1445, s1.loss_reg: 0.0325, s1.loss_mask: 0.3624, s2.loss_cls: 0.0293, s2.acc: 99.3164, s2.loss_reg: 0.0026, s2.loss_mask: 0.1731, loss: 2.1254
2018-12-12 14:15:15,728 - INFO - Epoch [3][2/10]    lr: 0.00090, time: 0.801, data_time: 0.003, loss_rpn_cls: 0.1686, loss_rpn_reg: 0.0164, s0.loss_cls: 0.2786, s0.acc: 98.7305, s0.loss_reg: 0.0250, s0.loss_mask: 0.6806, s1.loss_cls: 0.0442, s1.acc: 99.6094, s1.loss_reg: 0.0000, s1.loss_mask: 0.3292, s2.loss_cls: 0.0325, s2.acc: 99.6094, s2.loss_reg: 0.0000, s2.loss_mask: 0.1646, loss: 1.7397
2018-12-12 14:15:16,560 - INFO - Epoch [3][3/10]    lr: 0.00091, time: 0.832, data_time: 0.017, loss_rpn_cls: 0.1840, loss_rpn_reg: 0.0342, s0.loss_cls: 0.4474, s0.acc: 95.8008, s0.loss_reg: 0.0953, s0.loss_mask: 0.6873, s1.loss_cls: 0.1174, s1.acc: 98.1445, s1.loss_reg: 0.0273, s1.loss_mask: 0.3452, s2.loss_cls: 0.0451, s2.acc: 98.8281, s2.loss_reg: 0.0059, s2.loss_mask: 0.1733, loss: 2.1624
2018-12-12 14:15:17,413 - INFO - Epoch [3][4/10]    lr: 0.00091, time: 0.852, data_time: 0.002, loss_rpn_cls: 0.1446, loss_rpn_reg: 0.0150, s0.loss_cls: 0.6610, s0.acc: 93.2617, s0.loss_reg: 0.1540, s0.loss_mask: 0.6980, s1.loss_cls: 0.1934, s1.acc: 96.8750, s1.loss_reg: 0.0545, s1.loss_mask: 0.3544, s2.loss_cls: 0.0437, s2.acc: 98.6328, s2.loss_reg: 0.0106, s2.loss_mask: 0.1735, loss: 2.5027
2018-12-12 14:15:18,278 - INFO - Epoch [3][5/10]    lr: 0.00091, time: 0.866, data_time: 0.016, loss_rpn_cls: 0.1262, loss_rpn_reg: 0.0108, s0.loss_cls: 0.7001, s0.acc: 93.5547, s0.loss_reg: 0.1639, s0.loss_mask: 0.6899, s1.loss_cls: 0.1420, s1.acc: 97.8516, s1.loss_reg: 0.0335, s1.loss_mask: 0.3592, s2.loss_cls: 0.0382, s2.acc: 98.8281, s2.loss_reg: 0.0062, s2.loss_mask: 0.1747, loss: 2.4446
2018-12-12 14:15:19,087 - INFO - Epoch [3][6/10]    lr: 0.00092, time: 0.809, data_time: 0.002, loss_rpn_cls: 0.1420, loss_rpn_reg: 0.0264, s0.loss_cls: 0.4960, s0.acc: 94.8242, s0.loss_reg: 0.1275, s0.loss_mask: 0.7064, s1.loss_cls: 0.0939, s1.acc: 98.4375, s1.loss_reg: 0.0204, s1.loss_mask: 0.3489, s2.loss_cls: 0.0298, s2.acc: 99.0234, s2.loss_reg: 0.0051, s2.loss_mask: 0.1871, loss: 2.1836
2018-12-12 14:15:19,954 - INFO - Epoch [3][7/10]    lr: 0.00092, time: 0.867, data_time: 0.017, loss_rpn_cls: 0.1351, loss_rpn_reg: 0.0279, s0.loss_cls: 0.7418, s0.acc: 93.5547, s0.loss_reg: 0.1585, s0.loss_mask: 0.6975, s1.loss_cls: 0.1835, s1.acc: 97.6562, s1.loss_reg: 0.0382, s1.loss_mask: 0.3531, s2.loss_cls: 0.0429, s2.acc: 98.9258, s2.loss_reg: 0.0038, s2.loss_mask: 0.1774, loss: 2.5596
2018-12-12 14:15:20,756 - INFO - Epoch [3][8/10]    lr: 0.00092, time: 0.803, data_time: 0.002, loss_rpn_cls: 0.1186, loss_rpn_reg: 0.0091, s0.loss_cls: 0.4154, s0.acc: 96.6797, s0.loss_reg: 0.0733, s0.loss_mask: 0.6978, s1.loss_cls: 0.0908, s1.acc: 98.5352, s1.loss_reg: 0.0206, s1.loss_mask: 0.3444, s2.loss_cls: 0.0241, s2.acc: 99.4141, s2.loss_reg: 0.0012, s2.loss_mask: 0.1665, loss: 1.9618
2018-12-12 14:15:21,552 - INFO - Epoch [3][9/10]    lr: 0.00093, time: 0.796, data_time: 0.007, loss_rpn_cls: 0.0863, loss_rpn_reg: 0.0126, s0.loss_cls: 0.3921, s0.acc: 96.1914, s0.loss_reg: 0.0915, s0.loss_mask: 0.6917, s1.loss_cls: 0.0911, s1.acc: 98.6328, s1.loss_reg: 0.0208, s1.loss_mask: 0.3507, s2.loss_cls: 0.0221, s2.acc: 99.3164, s2.loss_reg: 0.0042, s2.loss_mask: 0.1691, loss: 1.9321
2018-12-12 14:15:22,388 - INFO - Epoch [3][10/10]   lr: 0.00093, time: 0.836, data_time: 0.008, loss_rpn_cls: 0.0894, loss_rpn_reg: 0.0115, s0.loss_cls: 0.6039, s0.acc: 94.5312, s0.loss_reg: 0.1342, s0.loss_mask: 0.6912, s1.loss_cls: 0.1580, s1.acc: 97.7539, s1.loss_reg: 0.0385, s1.loss_mask: 0.3720, s2.loss_cls: 0.0334, s2.acc: 99.1211, s2.loss_reg: 0.0037, s2.loss_mask: 0.1827, loss: 2.3187
2018-12-12 14:15:23,827 - INFO - Epoch [4][1/10]    lr: 0.00093, time: 0.974, data_time: 0.160, loss_rpn_cls: 0.0753, loss_rpn_reg: 0.0074, s0.loss_cls: 0.3829, s0.acc: 96.3867, s0.loss_reg: 0.0788, s0.loss_mask: 0.6829, s1.loss_cls: 0.0890, s1.acc: 98.4375, s1.loss_reg: 0.0252, s1.loss_mask: 0.3465, s2.loss_cls: 0.0240, s2.acc: 99.2188, s2.loss_reg: 0.0057, s2.loss_mask: 0.1693, loss: 1.8872
2018-12-12 14:15:24,743 - INFO - Epoch [4][2/10]    lr: 0.00094, time: 0.917, data_time: 0.011, loss_rpn_cls: 0.1317, loss_rpn_reg: 0.0240, s0.loss_cls: 0.6987, s0.acc: 93.1641, s0.loss_reg: 0.1618, s0.loss_mask: 0.6902, s1.loss_cls: 0.1441, s1.acc: 97.3633, s1.loss_reg: 0.0468, s1.loss_mask: 0.3528, s2.loss_cls: 0.0345, s2.acc: 98.9258, s2.loss_reg: 0.0026, s2.loss_mask: 0.1787, loss: 2.4659
2018-12-12 14:15:25,558 - INFO - Epoch [4][3/10]    lr: 0.00094, time: 0.815, data_time: 0.008, loss_rpn_cls: 0.0816, loss_rpn_reg: 0.0111, s0.loss_cls: 0.3693, s0.acc: 96.5820, s0.loss_reg: 0.0771, s0.loss_mask: 0.6824, s1.loss_cls: 0.0905, s1.acc: 98.5352, s1.loss_reg: 0.0247, s1.loss_mask: 0.3508, s2.loss_cls: 0.0210, s2.acc: 99.4141, s2.loss_reg: 0.0019, s2.loss_mask: 0.1716, loss: 1.8819
2018-12-12 14:15:26,455 - INFO - Epoch [4][4/10]    lr: 0.00094, time: 0.897, data_time: 0.008, loss_rpn_cls: 0.0916, loss_rpn_reg: 0.0118, s0.loss_cls: 0.7929, s0.acc: 91.7969, s0.loss_reg: 0.2097, s0.loss_mask: 0.6903, s1.loss_cls: 0.1647, s1.acc: 97.2656, s1.loss_reg: 0.0467, s1.loss_mask: 0.3531, s2.loss_cls: 0.0415, s2.acc: 98.7305, s2.loss_reg: 0.0065, s2.loss_mask: 0.1731, loss: 2.5819
2018-12-12 14:15:27,261 - INFO - Epoch [4][5/10]    lr: 0.00095, time: 0.806, data_time: 0.008, loss_rpn_cls: 0.0744, loss_rpn_reg: 0.0141, s0.loss_cls: 0.3550, s0.acc: 97.0703, s0.loss_reg: 0.0537, s0.loss_mask: 0.7035, s1.loss_cls: 0.1138, s1.acc: 98.4375, s1.loss_reg: 0.0243, s1.loss_mask: 0.3653, s2.loss_cls: 0.0256, s2.acc: 99.3164, s2.loss_reg: 0.0028, s2.loss_mask: 0.1834, loss: 1.9159
2018-12-12 14:15:28,144 - INFO - Epoch [4][6/10]    lr: 0.00095, time: 0.883, data_time: 0.009, loss_rpn_cls: 0.1014, loss_rpn_reg: 0.0241, s0.loss_cls: 0.7185, s0.acc: 92.3828, s0.loss_reg: 0.1951, s0.loss_mask: 0.6965, s1.loss_cls: 0.1424, s1.acc: 97.5586, s1.loss_reg: 0.0426, s1.loss_mask: 0.3481, s2.loss_cls: 0.0350, s2.acc: 98.9258, s2.loss_reg: 0.0033, s2.loss_mask: 0.1714, loss: 2.4783
2018-12-12 14:15:28,989 - INFO - Epoch [4][7/10]    lr: 0.00095, time: 0.845, data_time: 0.009, loss_rpn_cls: 0.0869, loss_rpn_reg: 0.0138, s0.loss_cls: 0.5485, s0.acc: 94.3359, s0.loss_reg: 0.1171, s0.loss_mask: 0.6876, s1.loss_cls: 0.1448, s1.acc: 97.2656, s1.loss_reg: 0.0467, s1.loss_mask: 0.3509, s2.loss_cls: 0.0367, s2.acc: 98.7305, s2.loss_reg: 0.0083, s2.loss_mask: 0.1716, loss: 2.2129
2018-12-12 14:15:29,851 - INFO - Epoch [4][8/10]    lr: 0.00096, time: 0.862, data_time: 0.010, loss_rpn_cls: 0.1144, loss_rpn_reg: 0.0306, s0.loss_cls: 0.5761, s0.acc: 94.3359, s0.loss_reg: 0.1426, s0.loss_mask: 0.6776, s1.loss_cls: 0.1315, s1.acc: 97.5586, s1.loss_reg: 0.0426, s1.loss_mask: 0.3420, s2.loss_cls: 0.0301, s2.acc: 99.0234, s2.loss_reg: 0.0034, s2.loss_mask: 0.1714, loss: 2.2625
2018-12-12 14:15:30,700 - INFO - Epoch [4][9/10]    lr: 0.00096, time: 0.849, data_time: 0.008, loss_rpn_cls: 0.0812, loss_rpn_reg: 0.0127, s0.loss_cls: 0.5655, s0.acc: 94.6289, s0.loss_reg: 0.1193, s0.loss_mask: 0.6854, s1.loss_cls: 0.1480, s1.acc: 97.4609, s1.loss_reg: 0.0489, s1.loss_mask: 0.3519, s2.loss_cls: 0.0313, s2.acc: 99.0234, s2.loss_reg: 0.0041, s2.loss_mask: 0.1732, loss: 2.2216
2018-12-12 14:15:31,514 - INFO - Epoch [4][10/10]   lr: 0.00096, time: 0.814, data_time: 0.007, loss_rpn_cls: 0.0674, loss_rpn_reg: 0.0113, s0.loss_cls: 0.4352, s0.acc: 95.8984, s0.loss_reg: 0.0949, s0.loss_mask: 0.6772, s1.loss_cls: 0.0938, s1.acc: 98.5352, s1.loss_reg: 0.0185, s1.loss_mask: 0.3501, s2.loss_cls: 0.0216, s2.acc: 99.4141, s2.loss_reg: 0.0002, s2.loss_mask: 0.1677, loss: 1.9379
2018-12-12 14:15:33,086 - INFO - Epoch [5][1/10]    lr: 0.00097, time: 1.101, data_time: 0.193, loss_rpn_cls: 0.0814, loss_rpn_reg: 0.0234, s0.loss_cls: 0.6687, s0.acc: 92.7734, s0.loss_reg: 0.1819, s0.loss_mask: 0.6785, s1.loss_cls: 0.1373, s1.acc: 97.5586, s1.loss_reg: 0.0387, s1.loss_mask: 0.3446, s2.loss_cls: 0.0349, s2.acc: 98.8281, s2.loss_reg: 0.0057, s2.loss_mask: 0.1708, loss: 2.3658
2018-12-12 14:15:33,996 - INFO - Epoch [5][2/10]    lr: 0.00097, time: 0.909, data_time: 0.011, loss_rpn_cls: 0.0576, loss_rpn_reg: 0.0128, s0.loss_cls: 0.7014, s0.acc: 93.9453, s0.loss_reg: 0.1289, s0.loss_mask: 0.6861, s1.loss_cls: 0.1736, s1.acc: 97.1680, s1.loss_reg: 0.0521, s1.loss_mask: 0.3544, s2.loss_cls: 0.0413, s2.acc: 98.8281, s2.loss_reg: 0.0070, s2.loss_mask: 0.1685, loss: 2.3837
2018-12-12 14:15:34,822 - INFO - Epoch [5][3/10]    lr: 0.00097, time: 0.826, data_time: 0.010, loss_rpn_cls: 0.0681, loss_rpn_reg: 0.0132, s0.loss_cls: 0.3660, s0.acc: 96.0938, s0.loss_reg: 0.0844, s0.loss_mask: 0.6914, s1.loss_cls: 0.0830, s1.acc: 98.5352, s1.loss_reg: 0.0198, s1.loss_mask: 0.3485, s2.loss_cls: 0.0280, s2.acc: 99.0234, s2.loss_reg: 0.0067, s2.loss_mask: 0.1720, loss: 1.8811
2018-12-12 14:15:35,633 - INFO - Epoch [5][4/10]    lr: 0.00098, time: 0.811, data_time: 0.010, loss_rpn_cls: 0.0545, loss_rpn_reg: 0.0078, s0.loss_cls: 0.3588, s0.acc: 96.1914, s0.loss_reg: 0.0933, s0.loss_mask: 0.6835, s1.loss_cls: 0.0786, s1.acc: 98.6328, s1.loss_reg: 0.0238, s1.loss_mask: 0.3496, s2.loss_cls: 0.0157, s2.acc: 99.5117, s2.loss_reg: 0.0005, s2.loss_mask: 0.1718, loss: 1.8380
2018-12-12 14:15:36,566 - INFO - Epoch [5][5/10]    lr: 0.00098, time: 0.933, data_time: 0.010, loss_rpn_cls: 0.1056, loss_rpn_reg: 0.0224, s0.loss_cls: 0.8869, s0.acc: 91.0156, s0.loss_reg: 0.2043, s0.loss_mask: 0.6824, s1.loss_cls: 0.2191, s1.acc: 95.8984, s1.loss_reg: 0.0742, s1.loss_mask: 0.3435, s2.loss_cls: 0.0507, s2.acc: 98.2422, s2.loss_reg: 0.0126, s2.loss_mask: 0.1719, loss: 2.7736
2018-12-12 14:15:37,411 - INFO - Epoch [5][6/10]    lr: 0.00098, time: 0.845, data_time: 0.009, loss_rpn_cls: 0.0710, loss_rpn_reg: 0.0135, s0.loss_cls: 0.5004, s0.acc: 94.4336, s0.loss_reg: 0.1288, s0.loss_mask: 0.6903, s1.loss_cls: 0.1256, s1.acc: 97.8516, s1.loss_reg: 0.0338, s1.loss_mask: 0.3420, s2.loss_cls: 0.0329, s2.acc: 98.9258, s2.loss_reg: 0.0050, s2.loss_mask: 0.1688, loss: 2.1122
2018-12-12 14:15:38,224 - INFO - Epoch [5][7/10]    lr: 0.00099, time: 0.813, data_time: 0.007, loss_rpn_cls: 0.0545, loss_rpn_reg: 0.0135, s0.loss_cls: 0.4038, s0.acc: 95.6055, s0.loss_reg: 0.1002, s0.loss_mask: 0.6771, s1.loss_cls: 0.0849, s1.acc: 98.3398, s1.loss_reg: 0.0264, s1.loss_mask: 0.3406, s2.loss_cls: 0.0232, s2.acc: 99.1211, s2.loss_reg: 0.0067, s2.loss_mask: 0.1683, loss: 1.8993
2018-12-12 14:15:39,078 - INFO - Epoch [5][8/10]    lr: 0.00099, time: 0.854, data_time: 0.010, loss_rpn_cls: 0.0751, loss_rpn_reg: 0.0218, s0.loss_cls: 0.5453, s0.acc: 94.0430, s0.loss_reg: 0.1387, s0.loss_mask: 0.6969, s1.loss_cls: 0.1401, s1.acc: 97.3633, s1.loss_reg: 0.0506, s1.loss_mask: 0.3461, s2.loss_cls: 0.0242, s2.acc: 99.1211, s2.loss_reg: 0.0038, s2.loss_mask: 0.1800, loss: 2.2227
2018-12-12 14:15:39,953 - INFO - Epoch [5][9/10]    lr: 0.00099, time: 0.875, data_time: 0.008, loss_rpn_cls: 0.0582, loss_rpn_reg: 0.0204, s0.loss_cls: 0.6741, s0.acc: 92.9688, s0.loss_reg: 0.1741, s0.loss_mask: 0.6870, s1.loss_cls: 0.1446, s1.acc: 97.3633, s1.loss_reg: 0.0489, s1.loss_mask: 0.3512, s2.loss_cls: 0.0265, s2.acc: 99.2188, s2.loss_reg: 0.0012, s2.loss_mask: 0.1715, loss: 2.3577
2018-12-12 14:15:40,814 - INFO - Epoch [5][10/10]   lr: 0.00100, time: 0.861, data_time: 0.007, loss_rpn_cls: 0.0528, loss_rpn_reg: 0.0126, s0.loss_cls: 0.7033, s0.acc: 92.4805, s0.loss_reg: 0.1947, s0.loss_mask: 0.6850, s1.loss_cls: 0.1314, s1.acc: 97.6562, s1.loss_reg: 0.0365, s1.loss_mask: 0.3600, s2.loss_cls: 0.0308, s2.acc: 99.0234, s2.loss_reg: 0.0036, s2.loss_mask: 0.1796, loss: 2.3903

and I try to test the model by two ways:

from mmdet.models import build_detector from mmdet.apis import inference_detector, show_result import numpy as np, pycocotools.mask as maskUtils, mmcv from mmdet.core import tensor2imgs, get_classes from glob import glob

config_path = 'configs/my_cascade_mask_rcnn_r50.py' model_path = 'work_dir/latest.pth'

config_path = 'configs/cascade_mask_rcnn_r50_fpn_1x.py' model_path = '/home/ubuntu/Downloads/cascade_mask_rcnn_r50_fpn_20e_20181123-6e0c9713.pth'

cfg = mmcv.Config.fromfile(config_path) cfg.model.pretrained = None

img_norm_cfg = dict( mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)

def show_mask_result(img, result, dataset='mydata', score_thr=0.3): assert isinstance(result, tuple) bbox_result, segm_result = result

    if isinstance(dataset, str):# here I have add my data label to mmdet.core.class_name.py
        class_names = get_classes(dataset)
        # print(class_names)
    elif isinstance(dataset, list):
        class_names = dataset
    else:
        raise TypeError('dataset must be a valid dataset name or a list'
                        ' of class names, not {}'.format(type(dataset)))

    h, w, _ = img.shape
    img_show = img[:h, :w, :]
    labels = [
        np.full(bbox.shape[0], i, dtype=np.int32)
        for i, bbox in enumerate(bbox_result)
    ]
    labels = np.concatenate(labels)
    bboxes = np.vstack(bbox_result)
    segms = mmcv.concat_list(segm_result)

    inds = np.where(bboxes[:, -1] > score_thr)[0]
    for i in inds:
        color_mask = np.random.randint(0, 256, (1, 3), dtype=np.uint8)
        mask = maskUtils.decode(segms[i]).astype(np.bool)
        img_show[mask] = img_show[mask] * 0.5 + color_mask * 0.5

    mmcv.imshow_det_bboxes(
        img_show,
        bboxes,
        labels,
        class_names=class_names,
        score_thr=score_thr)

construct the model and load checkpoint

model = build_detector(cfg.model, test_cfg=cfg.testcfg) = load_checkpoint(model, model_path)

img_list = glob('/data/PycharmProjects/mask_rcnn/other_code/datasets/25class_v1_badcase/*.jpg')

img_list = glob('/home/ubuntu/project/ConvertToCOCOData/data/miniData/100class_mini/imgs/*.jpg')

for i, result in enumerate(inference_detector(model, img_list[:1], cfg, device='cuda:0')): print(i, img_list[i]) print(result[0]) show_mask_result(mmcv.imread(img_list[i]), result)

show_result(mmcv.imread(img_list[i]), result[0])

and nothing output by my model , I try to load the `pre-trained` model, it `show` the right bbox and masks

### my overwrite data class

encoding:utf-8

import os.path as osp import mmcv, cv2, numpy as np

from .custom import CustomDataset

class MyDataset(CustomDataset): """Custom dataset for detection.

Annotation format:
[
    {
        'filename': 'a.jpg',
        'width': 1280,
        'height': 720,
        'ann': {
            'bboxes': <np.ndarray> (n, 4),
            'labels': <np.ndarray> (n, ),
            'bboxes_ignore': <np.ndarray> (k, 4),
            'labels_ignore': <np.ndarray> (k, 4) (optional field)
            'masks': path to mask img file 
        }
    },
    ...
]

The `ann` field is optional for testing.
"""

def load_annotations(self, ann_file):
    return mmcv.load(ann_file)

def get_ann_info(self, idx):

    def get_bit_mask(mask_img):
        '''
            mask_img : cv2 numpy mat BGR
            return [NxHxW] numpy
        '''
        b = mask_img[:, :, 0]
        n = np.max(b)
        h, w = b.shape
        bit_mask = np.zeros((n, h, w), np.uint8)
        for i in range(1, n+1):
            bit_mask[i-1, :, :] = np.where(b==i, 1, 0)

        return bit_mask

    def load_mask(now_labelImg_path):
        now_mask = cv2.imread(now_labelImg_path)
        mask_np = get_bit_mask(now_mask)
        return mask_np

    temp_ann = self.img_infos[idx]['ann']
    # print(type(temp_ann['masks']), idx)
    # exit()
    for k in temp_ann.keys():
        if k == 'masks':
            print(temp_ann[k])
            if type(temp_ann[k]) == type('a'):
                temp_ann[k] = load_mask(temp_ann[k])
            else:
                print('should be a mask path str!!!')

        elif k == 'labels':
            temp_ann[k] = np.asarray(temp_ann[k], np.int64)
        else:
            temp_ann[k] = np.asarray(temp_ann[k], np.float32)
    return temp_ann

I just overwrite two function according to readme, and read json from path, load ann and so on.
help me please ...
haoran1062 commented 5 years ago

this is my config base on cascade_mask_rcnn_r50_fpn_1x.py

# model settings
model = dict(
    type='CascadeRCNN',
    num_stages=3,
    pretrained='modelzoo://resnet50',
    backbone=dict(
        type='ResNet',
        depth=50,
        num_stages=4,
        out_indices=(0, 1, 2, 3),
        frozen_stages=1,
        style='pytorch'),
    neck=dict(
        type='FPN',
        in_channels=[256, 512, 1024, 2048],
        out_channels=256,
        num_outs=5),
    rpn_head=dict(
        type='RPNHead',
        in_channels=256,
        feat_channels=256,
        anchor_scales=[8],
        anchor_ratios=[0.5, 1.0, 2.0],
        anchor_strides=[4, 8, 16, 32, 64],
        target_means=[.0, .0, .0, .0],
        target_stds=[1.0, 1.0, 1.0, 1.0],
        use_sigmoid_cls=True),
    bbox_roi_extractor=dict(
        type='SingleRoIExtractor',
        roi_layer=dict(type='RoIAlign', out_size=7, sample_num=2),
        out_channels=256,
        featmap_strides=[4, 8, 16, 32]),
    bbox_head=[
        dict(
            type='SharedFCBBoxHead',
            num_fcs=2,
            in_channels=256,
            fc_out_channels=1024,
            roi_feat_size=7,
            num_classes=1023,
            target_means=[0., 0., 0., 0.],
            target_stds=[0.1, 0.1, 0.2, 0.2],
            reg_class_agnostic=True),
        dict(
            type='SharedFCBBoxHead',
            num_fcs=2,
            in_channels=256,
            fc_out_channels=1024,
            roi_feat_size=7,
            num_classes=1023, #
            target_means=[0., 0., 0., 0.],
            target_stds=[0.05, 0.05, 0.1, 0.1],
            reg_class_agnostic=True),
        dict(
            type='SharedFCBBoxHead',
            num_fcs=2,
            in_channels=256,
            fc_out_channels=1024,
            roi_feat_size=7,
            num_classes=1023,
            target_means=[0., 0., 0., 0.],
            target_stds=[0.033, 0.033, 0.067, 0.067],
            reg_class_agnostic=True)
    ],
    mask_roi_extractor=dict(
        type='SingleRoIExtractor',
        roi_layer=dict(type='RoIAlign', out_size=14, sample_num=2),
        out_channels=256,
        featmap_strides=[4, 8, 16, 32]),
    mask_head=dict(
        type='FCNMaskHead',
        num_convs=4,
        in_channels=256,
        conv_out_channels=256,
        num_classes=1023))
# model training and testing settings
train_cfg = dict(
    rpn=dict(
        assigner=dict(
            pos_iou_thr=0.7,
            neg_iou_thr=0.3,
            min_pos_iou=0.3,
            ignore_iof_thr=-1),
        sampler=dict(
            num=256,
            pos_fraction=0.5,
            neg_pos_ub=-1,
            add_gt_as_proposals=False,
            pos_balance_sampling=False,
            neg_balance_thr=0),
        allowed_border=0,
        pos_weight=-1,
        smoothl1_beta=1 / 9.0,
        debug=False),
    rcnn=[
        dict(
            assigner=dict(
                pos_iou_thr=0.5,
                neg_iou_thr=0.5,
                min_pos_iou=0.5,
                ignore_iof_thr=-1),
            sampler=dict(
                num=512,
                pos_fraction=0.25,
                neg_pos_ub=-1,
                add_gt_as_proposals=True,
                pos_balance_sampling=False,
                neg_balance_thr=0),
            mask_size=28,
            pos_weight=-1,
            debug=False),
        dict(
            assigner=dict(
                pos_iou_thr=0.6,
                neg_iou_thr=0.6,
                min_pos_iou=0.6,
                ignore_iof_thr=-1),
            sampler=dict(
                num=512,
                pos_fraction=0.25,
                neg_pos_ub=-1,
                add_gt_as_proposals=True,
                pos_balance_sampling=False,
                neg_balance_thr=0),
            mask_size=28,
            pos_weight=-1,
            debug=False),
        dict(
            assigner=dict(
                pos_iou_thr=0.7,
                neg_iou_thr=0.7,
                min_pos_iou=0.7,
                ignore_iof_thr=-1),
            sampler=dict(
                num=512,
                pos_fraction=0.25,
                neg_pos_ub=-1,
                add_gt_as_proposals=True,
                pos_balance_sampling=False,
                neg_balance_thr=0),
            mask_size=28,
            pos_weight=-1,
            debug=False)
    ],
    stage_loss_weights=[1, 0.5, 0.25])
test_cfg = dict(
    rpn=dict(
        nms_across_levels=False,
        nms_pre=2000,
        nms_post=2000,
        max_num=2000,
        nms_thr=0.7,
        min_bbox_size=0),
    rcnn=dict(
        score_thr=0.05,
        nms=dict(type='nms', iou_thr=0.5),
        max_per_img=100,
        mask_thr_binary=0.5),
    keep_all_stages=False)
# dataset settings
dataset_type = 'MyDataset'# 'CustomDataset'
data_root = '/home/ubuntu/project/ConvertToCOCOData/'
img_norm_cfg = dict(
    mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
data = dict(
    imgs_per_gpu=2,
    workers_per_gpu=2,
    train=dict(
        type=dataset_type,
        ann_file=data_root + 'data/OutCOCOData/test.json',
        img_prefix='/home/ubuntu/project/ConvertToCOCOData/',
        img_scale=(1280, 720),
        img_norm_cfg=img_norm_cfg,
        size_divisor=32,
        flip_ratio=0.5,
        with_mask=True,
        with_crowd=True,
        with_label=True),
    val=dict(
        type=dataset_type,
        ann_file=data_root + 'data/OutCOCOData/test.json',
        img_prefix='/home/ubuntu/project/ConvertToCOCOData/',
        img_scale=(1280, 720),
        img_norm_cfg=img_norm_cfg,
        size_divisor=32,
        flip_ratio=0,
        with_mask=True,
        with_crowd=True,
        with_label=True),
    test=dict(
        type=dataset_type,
        ann_file=data_root + 'data/OutCOCOData/test.json',
        img_prefix='/home/ubuntu/project/ConvertToCOCOData/',
        img_scale=(1280, 720),
        img_norm_cfg=img_norm_cfg,
        size_divisor=32,
        flip_ratio=0,
        with_mask=True,
        with_label=False,
        test_mode=True))
# optimizer
optimizer = dict(type='SGD', lr=0.0025, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
# learning policy
lr_config = dict(
    policy='step',
    warmup='linear',
    warmup_iters=500,
    warmup_ratio=1.0 / 3,
    step=[8, 11])
checkpoint_config = dict(interval=1)
# yapf:disable
log_config = dict(
    interval=1,
    hooks=[
        dict(type='TextLoggerHook'),
        # dict(type='TensorboardLoggerHook')
    ])
# yapf:enable
# runtime settings
total_epochs = 5
dist_params = dict(backend='nccl')
log_level = 'INFO'
work_dir = './work_dirs/cascade_mask_rcnn_r50_fpn_1x'
load_from = None
resume_from = None
workflow = [('train', 1)]
haoran1062 commented 5 years ago

@hellock hi, could you please take a look about this problem😭 thank you

hellock commented 5 years ago

I guess that the model predict very low scores so you didn't get any output. The loss is still high according to your training log. You may first try training for more iterations and see if the loss can decrease to very small.

haoran1062 commented 5 years ago

I guess that the model predict very low scores so you didn't get any output. The loss is still high according to your training log. You may first try training for more iterations and see if the loss can decrease to very small.

OK I try to train more iter, but I just change the score_thrto 0.003 even 0. but still output nothing and I try to train a faster-rcnn_r50 get same result to mask-rcnn.

show_mask_result(img,
                    result,
                    dataset='mydata',
                    score_thr=0.3):

BTW, the bboxes in customDatasetis np <n, minX, minY, maxX, maxY> dtype is np.float32, masks is ndarray <n, h, w>, dtype is np.uint8, labels is np <n> dtype is np.int64, right?

hellock commented 5 years ago

The annotation format looks good. I suggest that you print more info during the model forwarding, such as the rpn bboxes, raw classification scores of bboxes, etc.

haoran1062 commented 5 years ago

The annotation format looks good. I suggest that you print more info during the model forwarding, such as the rpn bboxes, raw classification scores of bboxes, etc.

hellock commented 5 years ago

For the training, you can refer to L106, and for testing, you can refer to L188.

haoran1062 commented 5 years ago

For the training, you can refer to L106, and for testing, you can refer to L188.

hi, I try to print tensor when testing(without mask, only print bbox's), the code:

def simple_test(self, img, img_meta, proposals=None, rescale=False):
        x = self.extract_feat(img)

        for i in range(len(x)):
            x_np = torch.Tensor.cpu(x[i]).numpy()
            print('feature %d shape : '%(i), x_np.shape)
        # print(x0_np[0][0].shape)
        print('type of proposals: ', type(proposals))

        proposal_list = self.simple_test_rpn(
            x, img_meta, self.test_cfg.rpn) if proposals is None else proposals

        print('type of proposal_list: ', type(proposal_list), 'len of prop list: %d'%(len(proposal_list)))
        prop_np = torch.Tensor.cpu(proposal_list[0]).numpy()
        print('proposal list shape : ', prop_np.shape)
        print('proposal list first 10 : ')
        for i in range(10):
            print('%.2f, %.2f, %.2f, %.2f, %.2f'%(prop_np[i][0], prop_np[i][1], prop_np[i][2], prop_np[i][3], prop_np[i][4]))

        img_shape = img_meta[0]['img_shape']
        ori_shape = img_meta[0]['ori_shape']
        scale_factor = img_meta[0]['scale_factor']

        # "ms" in variable names means multi-stage
        ms_bbox_result = {}
        ms_segm_result = {}
        ms_scores = []
        rcnn_test_cfg = self.test_cfg.rcnn

        rois = bbox2roi(proposal_list)
        rois_np = torch.Tensor.cpu(rois).numpy()
        print('rois list shape : ', prop_np.shape)
        print('roi first 10: ')
        for i in range(10):
            print('%.2f, %.2f, %.2f, %.2f, %.2f'%(rois_np[i][0], rois_np[i][1], rois_np[i][2], rois_np[i][3], rois_np[i][4]))
        for i in range(self.num_stages):
            bbox_roi_extractor = self.bbox_roi_extractor[i]
            print(type(bbox_roi_extractor))
            bbox_head = self.bbox_head[i]
            print(type(bbox_head))
            bbox_feats = bbox_roi_extractor(x[:len(bbox_roi_extractor.featmap_strides)], rois)
            print(type(bbox_feats), bbox_feats.shape)
            cls_score, bbox_pred = bbox_head(bbox_feats)
            print('cls score shape : ', cls_score.shape, 'bbox pred shape: ', bbox_pred.shape)
            cls_score_np = torch.Tensor.cpu(cls_score).numpy()
            bbox_pred_np = torch.Tensor.cpu(bbox_pred).numpy()
            print('first score argmax : ', np.argmax(cls_score_np[0]), 'first bbox pred: ', bbox_pred_np[0])
            # print(cls_score_np[0])
            ms_scores.append(cls_score)

            if self.test_cfg.keep_all_stages:
                det_bboxes, det_labels = bbox_head.get_det_bboxes(
                    rois,
                    cls_score,
                    bbox_pred,
                    img_shape,
                    scale_factor,
                    rescale=rescale,
                    cfg=rcnn_test_cfg)
                print(det_bboxes.shape, det_labels.shape)
                bbox_result = bbox2result(det_bboxes, det_labels,
                                          bbox_head.num_classes)
                ms_bbox_result['stage{}'.format(i)] = bbox_result

                if self.with_mask:
                    mask_roi_extractor = self.mask_roi_extractor[i]
                    mask_head = self.mask_head[i]
                    if det_bboxes.shape[0] == 0:
                        segm_result = [
                            [] for _ in range(mask_head.num_classes - 1)
                        ]
                    else:
                        _bboxes = (det_bboxes[:, :4] * scale_factor
                                   if rescale else det_bboxes)
                        mask_rois = bbox2roi([_bboxes])
                        mask_feats = mask_roi_extractor(
                            x[:len(mask_roi_extractor.featmap_strides)],
                            mask_rois)
                        mask_pred = mask_head(mask_feats)
                        segm_result = mask_head.get_seg_masks(
                            mask_pred, _bboxes, det_labels, rcnn_test_cfg,
                            ori_shape, scale_factor, rescale)
                    ms_segm_result['stage{}'.format(i)] = segm_result

            if i < self.num_stages - 1:
                bbox_label = cls_score.argmax(dim=1)
                rois = bbox_head.regress_by_class(rois, bbox_label, bbox_pred,
                                                  img_meta[0])
                # print(bbox_label.shape, rois.shape)
        print('roi prop over')
        cls_score = sum(ms_scores) / self.num_stages
        print('cls_score shape: ', cls_score.shape)
        det_bboxes, det_labels = self.bbox_head[-1].get_det_bboxes(
            rois,
            cls_score,
            bbox_pred,
            img_shape,
            scale_factor,
            rescale=rescale,
            cfg=rcnn_test_cfg)
        bbox_result = bbox2result(det_bboxes, det_labels,
                                  self.bbox_head[-1].num_classes)
        print('bbox result len: ', len(bbox_result))
        cnt = 0
        for j in bbox_result:
            if j.shape[0] > 0:
                cnt += 1

        print('bbox not empty len: ', cnt )
        print('bbox result first 10:')
        for tbox in bbox_result[:10]:
            print(tbox.shape, tbox)
            # print() here all bbox []
        ms_bbox_result['ensemble'] = bbox_result

and here is the result (my model):

feature 0 shape :  (1, 256, 184, 320)
feature 1 shape :  (1, 256, 92, 160)
feature 2 shape :  (1, 256, 46, 80)
feature 3 shape :  (1, 256, 23, 40)
feature 4 shape :  (1, 256, 12, 20)
type of proposals:  <class 'NoneType'>
type of proposal_list:  <class 'list'> len of prop list: 1
proposal list shape :  (2000, 5)
proposal list first 10 :
1043.42, 324.31, 1227.31, 617.22, 0.54
1003.49, 316.51, 1189.31, 609.10, 0.53
829.29, 130.20, 1230.14, 685.36, 0.53
927.52, 245.51, 1134.38, 524.43, 0.53
993.44, 274.77, 1192.89, 553.80, 0.53
167.99, 202.93, 361.99, 419.62, 0.53
11.98, 237.19, 475.66, 719.00, 0.53
374.18, 95.05, 854.00, 625.56, 0.52
126.01, 183.36, 333.22, 428.06, 0.52
928.76, 295.10, 1113.42, 582.58, 0.52
rois list shape :  (2000, 5)
roi first 10:
0.00, 1043.42, 324.31, 1227.31, 617.22
0.00, 1003.49, 316.51, 1189.31, 609.10
0.00, 829.29, 130.20, 1230.14, 685.36
0.00, 927.52, 245.51, 1134.38, 524.43
0.00, 993.44, 274.77, 1192.89, 553.80
0.00, 167.99, 202.93, 361.99, 419.62
0.00, 11.98, 237.19, 475.66, 719.00
0.00, 374.18, 95.05, 854.00, 625.56
0.00, 126.01, 183.36, 333.22, 428.06
0.00, 928.76, 295.10, 1113.42, 582.58
<class 'mmdet.models.roi_extractors.single_level.SingleRoIExtractor'>
<class 'mmdet.models.bbox_heads.convfc_bbox_head.SharedFCBBoxHead'>
<class 'torch.Tensor'> torch.Size([2000, 256, 7, 7])
cls score shape :  torch.Size([2000, 1023]) bbox pred shape:  torch.Size([2000, 4])
first score argmax :  0 first bbox pred:  [ 0.05841054  0.05216831 -0.40474734 -0.5283198 ]
<class 'mmdet.models.roi_extractors.single_level.SingleRoIExtractor'>
<class 'mmdet.models.bbox_heads.convfc_bbox_head.SharedFCBBoxHead'>
<class 'torch.Tensor'> torch.Size([2000, 256, 7, 7])
cls score shape :  torch.Size([2000, 1023]) bbox pred shape:  torch.Size([2000, 4])
first score argmax :  0 first bbox pred:  [-0.09872378  0.24430281  0.02129897 -0.39382043]
<class 'mmdet.models.roi_extractors.single_level.SingleRoIExtractor'>
<class 'mmdet.models.bbox_heads.convfc_bbox_head.SharedFCBBoxHead'>
<class 'torch.Tensor'> torch.Size([2000, 256, 7, 7])
cls score shape :  torch.Size([2000, 1023]) bbox pred shape:  torch.Size([2000, 4])
first score argmax :  0 first bbox pred:  [-0.08043834  0.03939664  0.05188651 -0.08744178]
roi prop over
cls_score shape:  torch.Size([2000, 1023])
bbox result len:  1022
bbox not empty len:  0
bbox result first 10:
(0, 5) []
(0, 5) []
(0, 5) []
(0, 5) []
(0, 5) []
(0, 5) []
(0, 5) []
(0, 5) []
(0, 5) []
(0, 5) []

I also try the pre-trained model, here is the output:

feature 0 shape :  (1, 256, 192, 336)
feature 1 shape :  (1, 256, 96, 168)
feature 2 shape :  (1, 256, 48, 84)
feature 3 shape :  (1, 256, 24, 42)
feature 4 shape :  (1, 256, 12, 21)
type of proposals:  <class 'NoneType'>
type of proposal_list:  <class 'list'> len of prop list: 1
proposal list shape :  (2000, 5)
proposal list first 10 :
113.35, 153.32, 820.05, 749.00, 1.00
193.74, 689.14, 1332.00, 749.00, 1.00
0.00, 0.00, 498.83, 598.44, 1.00
259.92, 0.00, 1046.26, 591.30, 1.00
0.00, 48.25, 668.69, 749.00, 1.00
0.00, 0.00, 333.35, 605.46, 1.00
348.27, 145.80, 1195.93, 749.00, 1.00
0.00, 107.74, 425.09, 731.72, 1.00
450.58, 651.62, 1332.00, 749.00, 1.00
0.00, 0.00, 423.40, 489.42, 1.00
rois list shape :  (2000, 5)
roi first 10:
0.00, 113.35, 153.32, 820.05, 749.00
0.00, 193.74, 689.14, 1332.00, 749.00
0.00, 0.00, 0.00, 498.83, 598.44
0.00, 259.92, 0.00, 1046.26, 591.30
0.00, 0.00, 48.25, 668.69, 749.00
0.00, 0.00, 0.00, 333.35, 605.46
0.00, 348.27, 145.80, 1195.93, 749.00
0.00, 0.00, 107.74, 425.09, 731.72
0.00, 450.58, 651.62, 1332.00, 749.00
0.00, 0.00, 0.00, 423.40, 489.42
<class 'mmdet.models.roi_extractors.single_level.SingleRoIExtractor'>
<class 'mmdet.models.bbox_heads.convfc_bbox_head.SharedFCBBoxHead'>
<class 'torch.Tensor'> torch.Size([2000, 256, 7, 7])
cls score shape :  torch.Size([2000, 81]) bbox pred shape:  torch.Size([2000, 4])
first score argmax :  61 first bbox pred:  [ 1.1075324  -0.10280555  0.5707533  -0.5377309 ]
<class 'mmdet.models.roi_extractors.single_level.SingleRoIExtractor'>
<class 'mmdet.models.bbox_heads.convfc_bbox_head.SharedFCBBoxHead'>
<class 'torch.Tensor'> torch.Size([2000, 256, 7, 7])
cls score shape :  torch.Size([2000, 81]) bbox pred shape:  torch.Size([2000, 4])
first score argmax :  61 first bbox pred:  [ 0.90631825  0.32633534  1.0231922  -0.44916588]
<class 'mmdet.models.roi_extractors.single_level.SingleRoIExtractor'>
<class 'mmdet.models.bbox_heads.convfc_bbox_head.SharedFCBBoxHead'>
<class 'torch.Tensor'> torch.Size([2000, 256, 7, 7])
cls score shape :  torch.Size([2000, 81]) bbox pred shape:  torch.Size([2000, 4])
first score argmax :  0 first bbox pred:  [ 0.12026529  0.2829571  -0.5314679  -0.16688687]
roi prop over
cls_score shape:  torch.Size([2000, 81])
bbox result len:  80
bbox not empty len:  17
bbox result first 10:
(1, 5) [[2.0345166e+02 4.8463275e+02 2.2859534e+02 5.3144836e+02 1.0939882e-01]]
(0, 5) []
(1, 5) [[0.0000000e+00 3.2478943e+02 1.1104912e+02 5.5315955e+02 2.0679985e-01]]
(0, 5) []
(0, 5) []
(0, 5) []
(0, 5) []
(1, 5) [[0.0000000e+00 2.0237658e+01 2.6698157e+02 6.6101172e+02 5.7585519e-02]]
(0, 5) []
(1, 5) [[1.00851160e+03 4.60482910e+02 1.01906506e+03 4.74585602e+02
  5.50066531e-02]]

so, cmp the two model, pre-trained proposal list have many high confidence(even 1.00), but mine have less than the pre-train, and highest confidence only 0.54, and the bbox result list which from the last bbox head, every class bbox output len is 0 from my model, but pre-trained model work fine.

haoran1062 commented 5 years ago

@hellock hi, I print something like pred_label, roi_label etc, and show bbox use mmcv:

haoran1062 commented 5 years ago

BTW, here is the data json:

[
    {
        "filename": "data/miniData/100class_mini/imgs/90.jpg",
        "width": 1280,
        "height": 720,
        "ann": {
            "masks": "/home/ubuntu/project/ConvertToCOCOData/data/miniData/100class_mini/labelImgs/90.png",
            "bboxes": [
                [
                    520,
                    169,
                    718,
                    379
                ],
                [
                    271,
                    318,
                    547,
                    549
                ]
            ],
            "bboxes_ignore": [],
            "labels_ignore": [],
            "labels": [
                27,
                67
            ]
        }
    },
    {
        "filename": "data/miniData/100class_mini/imgs/75.jpg",
        "width": 1280,
        "height": 720,
        "ann": {
            "masks": "/home/ubuntu/project/ConvertToCOCOData/data/miniData/100class_mini/labelImgs/75.png",
            "bboxes": [
                [
                    541,
                    415,
                    746,
                    644
                ],
                [
                    493,
                    204,
                    674,
                    407
                ]
            ],
            "bboxes_ignore": [],
            "labels_ignore": [],
            "labels": [
                3,
                40
            ]
        }
    }
]

here is the proposal bbox top 10 visial when test, and it is very different output with last I post picture (betten train and test use same picture, same weight), _eval_13 12 2018 but I found yesterday My 100 epoch weight have better output: _2_13 12 2018

haoran1062 commented 5 years ago

@hellock hi, I soved this problem, just use a bigger dataset, after train some epoch, get work. But I real confused, usually, a deep learning model should over-fitting after little epoch(on very little datasets), but why when datasets only have 2~10 samples it does not learn(I change lr [0.00125, 0.0025], only 1 gpu),but when datasets have more than 100 samples, could have a good result.