|
|
|
|
|
""" |
|
# How to get ID |
|
>>> model.config.id2label |
|
{0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant', 11: 'stop sign', 12: 'parking meter', |
|
13: 'bench', 14: 'bird', 15: 'cat', 16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant', 21: 'bear', 22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 26: 'handbag', |
|
27: 'tie', 28: 'suitcase', 29: 'frisbee', 30: 'skis', 31: 'snowboard', 32: 'sports ball', 33: 'kite', 34: 'baseball bat', 35: 'baseball glove', 36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', |
|
39: 'bottle', 40: 'wine glass', 41: 'cup', 42: 'fork', 43: 'knife', 44: 'spoon', 45: 'bowl', 46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli', 51: 'carrot', 52: 'hot dog', 53: 'pizza', |
|
54: 'donut', 55: 'cake', 56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table', 61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard', 67: 'cell phone', |
|
68: 'microwave', 69: 'oven', 70: 'toaster', 71: 'sink', 72: 'refrigerator', 73: 'book', 74: 'clock', 75: 'vase', 76: 'scissors', 77: 'teddy bear', 78: 'hair drier', 79: 'toothbrush', 80: 'banner', 81: 'blanket', |
|
82: 'bridge', 83: 'cardboard', 84: 'counter', 85: 'curtain', 86: 'door-stuff', 87: 'floor-wood', 88: 'flower', 89: 'fruit', 90: 'gravel', 91: 'house', 92: 'light', 93: 'mirror-stuff', 94: 'net', 95: 'pillow', |
|
96: 'platform', 97: 'playingfield', 98: 'railroad', 99: 'river', 100: 'road', 101: 'roof', 102: 'sand', 103: 'sea', 104: 'shelf', 105: 'snow', 106: 'stairs', 107: 'tent', 108: 'towel', 109: 'wall-brick', |
|
110: 'wall-stone', 111: 'wall-tile', 112: 'wall-wood', 113: 'water-other', 114: 'window-blind', 115: 'window-other', 116: 'tree-merged', 117: 'fence-merged', 118: 'ceiling-merged', 119: 'sky-other-merged', |
|
120: 'cabinet-merged', 121: 'table-merged', 122: 'floor-other-merged', 123: 'pavement-merged', 124: 'mountain-merged', 125: 'grass-merged', 126: 'dirt-merged', 127: 'paper-merged', 128: 'food-other-merged', |
|
129: 'building-other-merged', 130: 'rock-merged', 131: 'wall-other-merged', 132: 'rug-merged'} |
|
>>> model.config.id2label[123] |
|
'pavement-merged' |
|
>>> results["segments_info"][1] |
|
{'id': 2, 'label_id': 123, 'was_fused': False, 'score': 0.995813} |
|
""" |
|
|
|
|
|
|
|
""" |
|
>>> Image.fromarray((mask * 255).cpu().numpy().astype(np.uint8)) |
|
<PIL.Image.Image image mode=L size=2000x1500 at 0x7F07773691C0> |
|
>>> temp = Image.fromarray((mask * 255).cpu().numpy().astype(np.uint8)) |
|
""" |
|
|
|
""" |
|
>>> mask = (results["segmentation"].cpu().numpy == 4) |
|
>>> mask = (results["segmentation"].cpu().numpy() == 4) |
|
>>> mask |
|
array([[False, False, False, ..., False, False, False], |
|
[False, False, False, ..., False, False, False], |
|
[False, False, False, ..., False, False, False], |
|
..., |
|
[False, False, False, ..., False, False, False], |
|
[False, False, False, ..., False, False, False], |
|
[False, False, False, ..., False, False, False]]) |
|
>>> visual_mask = (mask * 255).astype(np.uint8) |
|
>>> visual_mask = Image.fromarray(visual_mask) |
|
>>> plt.imshow(visual_mask) |
|
<matplotlib.image.AxesImage object at 0x7f0761e78040> |
|
>>> plt.show() |
|
""" |
|
|
|
""" |
|
>>> mask = (results["segmentation"].cpu().numpy() == 1) |
|
>>> visual_mask = (mask*255).astype(np.uint8) |
|
>>> visual_mask = Image.fromarray(visual_mask) |
|
>>> plt.imshow(visual_mask) |
|
<matplotlib.image.AxesImage object at 0x7f0760298550> |
|
>>> plt.show() |
|
>>> results["segments_info"][0] |
|
{'id': 1, 'label_id': 25, 'was_fused': False, 'score': 0.998022} |
|
>>> |
|
""" |
|
|
|
""" |
|
>>> np.where(mask==True) |
|
(array([300, 300, 300, ..., 392, 392, 392]), array([452, 453, 454, ..., 473, 474, 475])) |
|
>>> max(np.where(mask==True)[0]) |
|
392 |
|
>>> min(np.where(mask==True)[0]) |
|
300 |
|
>>> max(np.where(mask==True)[1]) |
|
538 |
|
>>> min(np.where(mask==True)[1]) |
|
399 |
|
""" |
|
|
|
|
|
""" |
|
>>> mask = (results["segmentation"].cpu().numpy() == 1) |
|
>>> visual_mask = (mask* 255).astype(np.uint8) |
|
>>> import cv2 as cv |
|
>>> contours, hierarchy = cv.findContours(visual_mask, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE) |
|
>>> contours.shape |
|
Traceback (most recent call last): |
|
File "<stdin>", line 1, in <module> |
|
AttributeError: 'tuple' object has no attribute 'shape' |
|
>>> contours[0].shape |
|
(7, 1, 2) |
|
>>> shrunk = contours[0][:, 0, :] |
|
>>> shrunk |
|
array([[400, 340], |
|
[399, 341], |
|
[400, 342], |
|
[401, 342], |
|
[402, 341], |
|
[403, 341], |
|
[402, 340]], dtype=int32) |
|
>>> get_coordinates_for_bb_simple(results["segmentation"], 1) |
|
((300, 399), (392, 538)) |
|
>>> shrunk = contours[1][:, 0, :] |
|
>>> max(shrunk[:, 0]) |
|
538 |
|
>>> min(shrunk[:, 0]) |
|
409 |
|
>>> min(shrunk[:, 1]) |
|
300 |
|
>>> max(shrunk[:, 1]) |
|
392 |
|
>>> |
|
""" |
|
|
|
|
|
|
|
""" |
|
import cv2 as cv |
|
contours, hierarchy = cv.findContours(visual_mask, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE) |
|
shrunk = contours[0][:, 0, :] |
|
|
|
>>> shrunk[0, :] |
|
array([1907, 887], dtype=int32) |
|
>>> shrunk[:, 0] |
|
array([1907, 1907, 1908, 1908, 1908], dtype=int32) |
|
>>> shrunk[:, 1] |
|
array([887, 888, 889, 890, 888], dtype=int32) |
|
>>> shrunk |
|
array([[1907, 887], |
|
[1907, 888], |
|
[1908, 889], |
|
[1908, 890], |
|
[1908, 888]], dtype=int32) |
|
""" |
|
|
|
""" |
|
>>> cv.boundingRect(c[0]) |
|
(399, 340, 5, 3) |
|
|
|
>>> get_coordinates_for_bb_simple(results["segmentation"], 1) |
|
((399, 300), (538, 392)) |
|
>>> make_new_bounding_box(cv.boundingRect(c[0]), cv.boundingRect(c[1])) |
|
(399, 300, 140, 93) |
|
>>> cv.boundingRect(c[0]) |
|
(399, 340, 5, 3) |
|
>>> cv.boundingRect(c[1]) |
|
(409, 300, 130, 93) |
|
""" |
|
|
|
""" |
|
for r in results["segments_info"]: |
|
... current_id = r["id"] |
|
... c, _ = contour_map(results["segmentation"], current_id) |
|
... print(f"id {current_id}, label = {model.config.id2label[r['label_id']]}({r['label_id']}) -- {len(c)}") |
|
""" |
|
|
|
""" |
|
def quick_function(id_number): |
|
... c, _ = contour_map(results["segmentation"], id_number) |
|
... print(f'{model.config.id2label[results["segments_info"][id_number-1]["label_id"]]}, {results["segments_info"][id_number -1]["score"]}, Contour Count: {len(c)}') |
|
... show_mask_for_number_over_image(results["segmentation"],id_number, TEST_IMAGE) |
|
... |
|
""" |
|
|
|
""" |
|
>>> m = results["segmentation"].cpu().numpy() |
|
>>> new_dim = (m[0], m[1], 3) |
|
>>> new_dim |
|
(array([43, 43, 43, ..., 21, 21, 21], dtype=int32), array([43, 43, 43, ..., 21, 21, 21], dtype=int32), 3) |
|
>>> new_dim = (m.shape[0], m.shape[1], 3) |
|
>>> all_z = np.zeros(new_dim, dtype=np.uint8) |
|
|
|
>>> z = np.zeros((m.shape[0], m.shape[1], 3), dtype=np.uint8) |
|
>>> z[:, :, 0] = m[:, :] |
|
>>> z[0,0] |
|
array([43, 0, 0], dtype=uint8) |
|
>>> z[0, 0] |
|
array([43, 0, 0], dtype=uint8) |
|
>>> m[0, 0] |
|
43 |
|
|
|
>>> z[:, :, 1] = m[:, :]*4 %256 |
|
>>> z[:, :, 2] = m[:, :]*5 %256 |
|
>>> plt.imshow(z) |
|
<matplotlib.image.AxesImage object at 0x7f8da4ad7d30> |
|
>>> plt.show() |
|
""" |