| 92 | return new_cont_seg, new_styl_seg |
| 93 | |
| 94 | def self_remapping(self, seg): |
| 95 | init_ratio = self.min_ratio |
| 96 | # Assign label with small portions to label with large portion |
| 97 | new_seg = seg.copy() |
| 98 | [h,w] = new_seg.shape |
| 99 | n_pixels = h*w |
| 100 | # First scan through what are the available labels and their sizes |
| 101 | label_info = [] |
| 102 | ratio_info = [] |
| 103 | new_label_info = [] |
| 104 | for label in np.unique(seg): |
| 105 | ratio = np.sum(np.float32((seg == label))[:])/n_pixels |
| 106 | label_info.append(label) |
| 107 | new_label_info.append(label) |
| 108 | ratio_info.append(ratio) |
| 109 | for i,current_label in enumerate(label_info): |
| 110 | if ratio_info[i] < init_ratio: |
| 111 | for j in range(self.label_mapping.shape[0]): |
| 112 | new_label = self.label_mapping[j,current_label] |
| 113 | if new_label in label_info: |
| 114 | index = label_info.index(new_label) |
| 115 | if index >= 0: |
| 116 | if ratio_info[index] >= init_ratio: |
| 117 | new_label_info[i] = new_label |
| 118 | break |
| 119 | for i,current_label in enumerate(label_info): |
| 120 | new_seg[(seg == current_label)] = new_label_info[i] |
| 121 | return new_seg |
| 122 | |
| 123 | |
| 124 | def stylization(stylization_module, smoothing_module, content_image_path, style_image_path, content_seg_path, |