(full_bboxes, optim_idx, batch_size=5000)
| 122 | |
| 123 | |
| 124 | def optimize(full_bboxes, optim_idx, batch_size=5000): |
| 125 | global batch_idx, scales, aspect_ratios, conv_sizes |
| 126 | |
| 127 | start = batch_idx * batch_size |
| 128 | end = min((batch_idx + 1) * batch_size, full_bboxes.size(0)) |
| 129 | |
| 130 | if batch_idx > (full_bboxes.size(0) // batch_size): |
| 131 | batch_idx = 0 |
| 132 | |
| 133 | bboxes = full_bboxes[start:end, :] |
| 134 | |
| 135 | anchor_base = [ |
| 136 | make_priors(conv_sizes[idx], scales[idx], aspect_ratios[idx]) |
| 137 | for idx in range(len(conv_sizes)) if idx != optim_idx] |
| 138 | base_hits = compute_hits(bboxes, torch.cat(anchor_base, dim=0)) |
| 139 | |
| 140 | |
| 141 | def set_x(x, scales, aspect_ratios): |
| 142 | if optimize_scales: |
| 143 | for i in range(len(scales)): |
| 144 | scales[i] = max(x[i], 0) |
| 145 | else: |
| 146 | k = 0 |
| 147 | for i in range(len(aspect_ratios)): |
| 148 | for j in range(len(aspect_ratios[i])): |
| 149 | aspect_ratios[i][j] = x[k] |
| 150 | k += 1 |
| 151 | |
| 152 | |
| 153 | res = minimize(step, x0=scales[optim_idx] if optimize_scales else sum(aspect_ratios[optim_idx], []), method='Powell', |
| 154 | args = (set_x, bboxes, base_hits, optim_idx),) |
| 155 | |
| 156 | |
| 157 | def pretty_str(x:list): |
no test coverage detected