|
12 | 12 | from random import randint
|
13 | 13 |
|
14 | 14 | try:
|
15 |
| - from pycrayon import CrayonClient |
| 15 | + from tensorboardX import SummaryWriter |
16 | 16 | except ImportError:
|
17 |
| - CrayonClient = None |
| 17 | + SummaryWriter = None |
18 | 18 |
|
19 | 19 |
|
20 | 20 | # data loader
|
|
42 | 42 | weight_decay=cfg.weight_decay)
|
43 | 43 |
|
44 | 44 | # tensorboad
|
45 |
| -use_tensorboard = cfg.use_tensorboard and CrayonClient is not None |
| 45 | +use_tensorboard = cfg.use_tensorboard and SummaryWriter is not None |
46 | 46 | # use_tensorboard = False
|
47 |
| -remove_all_log = False |
48 | 47 | if use_tensorboard:
|
49 |
| - cc = CrayonClient(hostname='127.0.0.1') |
50 |
| - if remove_all_log: |
51 |
| - print('remove all experiments') |
52 |
| - cc.remove_all_experiments() |
53 |
| - if start_epoch == 0: |
54 |
| - try: |
55 |
| - cc.remove_experiment(cfg.exp_name) |
56 |
| - except ValueError: |
57 |
| - pass |
58 |
| - exp = cc.create_experiment(cfg.exp_name) |
59 |
| - else: |
60 |
| - exp = cc.open_experiment(cfg.exp_name) |
| 48 | + summary_writer = SummaryWriter(os.path.join(cfg.TRAIN_DIR, 'runs', cfg.exp_name)) |
| 49 | +else: |
| 50 | + summary_writer = None |
61 | 51 |
|
62 | 52 | batch_per_epoch = imdb.batch_per_epoch
|
63 | 53 | train_loss = 0
|
|
81 | 71 | im_data = net_utils.np_to_variable(im,
|
82 | 72 | is_cuda=True,
|
83 | 73 | volatile=False).permute(0, 3, 1, 2)
|
84 |
| - net(im_data, gt_boxes, gt_classes, dontcare, size_index) |
| 74 | + bbox_pred, iou_pred, prob_pred = net(im_data, gt_boxes, gt_classes, dontcare, size_index) |
85 | 75 |
|
86 | 76 | # backward
|
87 | 77 | loss = net.loss
|
|
106 | 96 | iou_loss, cls_loss, duration,
|
107 | 97 | str(datetime.timedelta(seconds=int((batch_per_epoch - step_cnt) * duration)))))) # noqa
|
108 | 98 |
|
109 |
| - if use_tensorboard and step % cfg.log_interval == 0: |
110 |
| - exp.add_scalar_value('loss_train', train_loss, step=step) |
111 |
| - exp.add_scalar_value('loss_bbox', bbox_loss, step=step) |
112 |
| - exp.add_scalar_value('loss_iou', iou_loss, step=step) |
113 |
| - exp.add_scalar_value('loss_cls', cls_loss, step=step) |
114 |
| - exp.add_scalar_value('learning_rate', lr, step=step) |
| 99 | + if summary_writer and step % cfg.log_interval == 0: |
| 100 | + summary_writer.add_scalar('loss_train', train_loss, step) |
| 101 | + summary_writer.add_scalar('loss_bbox', bbox_loss, step) |
| 102 | + summary_writer.add_scalar('loss_iou', iou_loss, step) |
| 103 | + summary_writer.add_scalar('loss_cls', cls_loss, step) |
| 104 | + summary_writer.add_scalar('learning_rate', lr, step) |
| 105 | + |
| 106 | + # plot results |
| 107 | + bbox_pred = bbox_pred.data[0:1].cpu().numpy() |
| 108 | + iou_pred = iou_pred.data[0:1].cpu().numpy() |
| 109 | + prob_pred = prob_pred.data[0:1].cpu().numpy() |
| 110 | + image = im[0] |
| 111 | + bboxes, scores, cls_inds = yolo_utils.postprocess( |
| 112 | + bbox_pred, iou_pred, prob_pred, image.shape, cfg, thresh=0.3, size_index=size_index) |
| 113 | + im2show = yolo_utils.draw_detection(image, bboxes, scores, cls_inds, cfg) |
| 114 | + summary_writer.add_image('predict', im2show, step) |
115 | 115 |
|
116 | 116 | train_loss = 0
|
117 | 117 | bbox_loss, iou_loss, cls_loss = 0., 0., 0.
|
|
0 commit comments