{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"conda install cudatoolkit=10.2","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-06-10T14:41:09.913963Z","iopub.execute_input":"2021-06-10T14:41:09.914698Z","iopub.status.idle":"2021-06-10T15:06:09.091052Z","shell.execute_reply.started":"2021-06-10T14:41:09.914592Z","shell.execute_reply":"2021-06-10T15:06:09.090016Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!rsync -a ../input/mmdetection-v280/mmdetection ../\n!pip install ../input/mmdetection-v280/src/mmdet-2.8.0/mmdet-2.8.0/\n!pip install ../input/mmdetection-v280/src/mmpycocotools-12.0.3/mmpycocotools-12.0.3/\n!pip install ../input/mmdetection-v280/src/addict-2.4.0-py3-none-any.whl\n!pip install ../input/mmdetection-v280/src/yapf-0.30.0-py2.py3-none-any.whl\n!pip install ../input/mmdetection-v280/src/mmcv_full-1.2.6-cp37-cp37m-manylinux1_x86_64.whl","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:07:14.731059Z","iopub.execute_input":"2021-06-10T15:07:14.731375Z","iopub.status.idle":"2021-06-10T15:08:02.982633Z","shell.execute_reply.started":"2021-06-10T15:07:14.731341Z","shell.execute_reply":"2021-06-10T15:08:02.981699Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install -r ../input/mmdetection-v280/mmdetection/requirements.txt","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:08:02.984394Z","iopub.execute_input":"2021-06-10T15:08:02.984759Z","iopub.status.idle":"2021-06-10T15:08:14.836919Z","shell.execute_reply.started":"2021-06-10T15:08:02.984711Z","shell.execute_reply":"2021-06-10T15:08:14.83602Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from itertools import groupby\nfrom pycocotools import mask as mutils\nimport numpy as np\nfrom tqdm import tqdm\nimport pandas as pd\nimport os\nimport pickle\nimport cv2\nfrom multiprocessing import Pool\nimport matplotlib.pyplot as plt","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:08:14.840472Z","iopub.execute_input":"2021-06-10T15:08:14.840736Z","iopub.status.idle":"2021-06-10T15:08:15.001911Z","shell.execute_reply.started":"2021-06-10T15:08:14.8407Z","shell.execute_reply":"2021-06-10T15:08:15.001158Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cell_mask_dir = '../input/hpa-mask/hpa_cell_mask'    \nROOT = '../input/hpa-single-cell-image-classification/'\nMAX_THRE = 4\ntrain_or_test = 'train'\n\nimg_dir = f'../work/mmdet_v1_train'\n!mkdir -p {img_dir}\ndf = pd.read_csv(os.path.join(ROOT, 'train.csv'))\n# df = df[:100]","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:08:15.003481Z","iopub.execute_input":"2021-06-10T15:08:15.003819Z","iopub.status.idle":"2021-06-10T15:08:15.68113Z","shell.execute_reply.started":"2021-06-10T15:08:15.003784Z","shell.execute_reply":"2021-06-10T15:08:15.680215Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Coco_rle_encode dùng để encode binary masks thành rles format\nvới đầu vào là binary masks 2 chiều và đầu ra là dữ liệu rles format với mục đích giảm kích thước lưu trữ xuống.\n","metadata":{}},{"cell_type":"code","source":"def coco_rle_encode(mask):\n    '''\n    implement storing binary masks by rles format (run-length format)\n    input:\n        mask: mask of image\n    output:\n        rle encode format\n    '''\n    rle = {'counts': [], 'size': list(mask.shape)}\n    counts = rle.get('counts')\n    for i, (value, elements) in enumerate(groupby(mask.ravel(order='F'))):\n        if i == 0 and value == 1:\n            counts.append(0)\n        counts.append(len(list(elements)))\n    return rle","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:08:15.682562Z","iopub.execute_input":"2021-06-10T15:08:15.682942Z","iopub.status.idle":"2021-06-10T15:08:15.691327Z","shell.execute_reply.started":"2021-06-10T15:08:15.682904Z","shell.execute_reply":"2021-06-10T15:08:15.690534Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"l = get_rles_from_mask(num_sample.iloc[0])","metadata":{"execution":{"iopub.status.busy":"2021-06-10T16:36:51.033865Z","iopub.execute_input":"2021-06-10T16:36:51.034204Z","iopub.status.idle":"2021-06-10T16:36:56.523532Z","shell.execute_reply.started":"2021-06-10T16:36:51.034176Z","shell.execute_reply":"2021-06-10T16:36:56.519867Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"thực hiện biểu diễn các mask của từng tế bào trong ảnh ","metadata":{}},{"cell_type":"code","source":"def get_rles_from_mask(image_id):\n    '''\n    implement get rle of all masks in image\n    input:\n        image_id : id of image\n    return:\n        list of rle\n        height of image\n        width of image\n    '''\n    img = np.load(f'{cell_mask_dir}/{image_id}.npz')['arr_0']\n    print (plt.imshow(img))\n    rle_list = []\n    for val in np.unique(img):\n        if val == 0:\n            continue\n        binary_mask = np.where(img == val, val, 0).astype(bool)\n        counts = []\n        rle = coco_rle_encode(binary_mask)\n        rle_list.append(rle)\n    return rle_list, img.shape[0], img.shape[1]","metadata":{"execution":{"iopub.status.busy":"2021-06-10T16:36:49.22221Z","iopub.execute_input":"2021-06-10T16:36:49.222532Z","iopub.status.idle":"2021-06-10T16:36:49.230171Z","shell.execute_reply.started":"2021-06-10T16:36:49.2225Z","shell.execute_reply":"2021-06-10T16:36:49.229376Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"thực hiện convert ảnh thành coco format dataset","metadata":{}},{"cell_type":"code","source":"def mk_mmdet_custom_data(image_id):\n    '''\n    convert data to coco format\n    input:\n        image_id: id of image\n    return:\n        annotation json files in coco format\n    '''\n    rles, height, width = get_rles_from_mask(image_id)\n    if len(rles) == 0:\n        return {\n            'filename': image_id+'.jpg',\n            'width': width,\n            'height': height,\n            'ann': {}\n        }\n    rles = mutils.frPyObjects(rles, height, width)\n    masks = mutils.decode(rles)\n    bboxes = mutils.toBbox(mutils.encode(np.asfortranarray(masks.astype(np.uint8))))\n    bboxes[:, 2] += bboxes[:, 0]\n    bboxes[:, 3] += bboxes[:, 1]\n    return {\n        'filename': image_id+'.jpg',\n        'width': width,\n        'height': height,\n        'ann':\n            {\n                'bboxes': np.array(bboxes, dtype=np.float32),\n                'labels': np.zeros(len(bboxes)),\n                'masks': rles\n            }\n    }","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:08:15.702046Z","iopub.execute_input":"2021-06-10T15:08:15.704219Z","iopub.status.idle":"2021-06-10T15:08:15.711547Z","shell.execute_reply.started":"2021-06-10T15:08:15.704187Z","shell.execute_reply":"2021-06-10T15:08:15.710409Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Từ ID ảnh đầu vào thực hiện stack 3 kênh màu RGB lại với nhau","metadata":{}},{"cell_type":"code","source":"def load_RGB_image(image_id, train_or_test='train', image_size=None):\n    '''\n    load image with each channels follow by stack them\n    '''\n    red = read_img(image_id, \"red\", train_or_test, image_size)\n    green = read_img(image_id, \"green\", train_or_test, image_size)\n    blue = read_img(image_id, \"blue\", train_or_test, image_size)\n    # using rgb only here\n    #yellow = read_img(image_id, \"yellow\", train_or_test, image_size)\n    stacked_images = np.transpose(np.array([red, green, blue]), (1,2,0))\n    return stacked_images","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:08:15.713902Z","iopub.execute_input":"2021-06-10T15:08:15.714472Z","iopub.status.idle":"2021-06-10T15:08:15.721124Z","shell.execute_reply.started":"2021-06-10T15:08:15.714423Z","shell.execute_reply":"2021-06-10T15:08:15.720378Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"thực hiện show ảnh gốc với 3 kênh màu RGB, mask của ảnh và mask + ảnh gốc","metadata":{}},{"cell_type":"code","source":"def print_masked_img(image_id, mask):\n    '''\n    visualize image\n    input:\n        image_id: id of image\n        mask: mask of image with above image_id\n    '''\n    img = load_RGB_image(image_id, train_or_test)\n    \n    plt.figure(figsize=(15, 15))\n    plt.subplot(1, 3, 1)\n    plt.imshow(img)\n    plt.title('Image')\n    plt.axis('off')\n    \n    plt.subplot(1, 3, 2)\n    plt.imshow(mask)\n    plt.title('Mask')\n    plt.axis('off')\n    \n    plt.subplot(1, 3, 3)\n    plt.imshow(img)\n    plt.imshow(mask, alpha=0.6)\n    plt.title('Image + Mask')\n    plt.axis('off')\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:08:15.722603Z","iopub.execute_input":"2021-06-10T15:08:15.723196Z","iopub.status.idle":"2021-06-10T15:08:15.73376Z","shell.execute_reply.started":"2021-06-10T15:08:15.72316Z","shell.execute_reply":"2021-06-10T15:08:15.732868Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Thực hiện đọc ảnh, bằng opencv","metadata":{}},{"cell_type":"code","source":"def read_img(image_id, color, train_or_test='train', image_size=None):\n    filename = f'{ROOT}/{train_or_test}/{image_id}_{color}.png'\n    assert os.path.exists(filename), f'not found {filename}'\n    img = cv2.imread(filename, cv2.IMREAD_UNCHANGED)\n    if image_size is not None:\n        img = cv2.resize(img, (image_size, image_size))\n    if img.max() > 255:\n        img_max = img.max()\n        img = (img/255).astype('uint8')\n    return img","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:13:52.072598Z","iopub.execute_input":"2021-06-10T15:13:52.072864Z","iopub.status.idle":"2021-06-10T15:13:52.078766Z","shell.execute_reply.started":"2021-06-10T15:13:52.07284Z","shell.execute_reply":"2021-06-10T15:13:52.077713Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"tạo ann cho ảnh","metadata":{}},{"cell_type":"code","source":"def mk_ann(idx):\n    '''\n    get the annotation json files in coco format for each image\n    input:\n        idx\n    output:\n        anno: the annotation json\n        image_id : id of image\n    '''\n    image_id = df.iloc[idx].ID\n    anno = mk_mmdet_custom_data(image_id)\n    img = load_RGB_image(image_id, train_or_test)\n    cv2.imwrite(f'{img_dir}/{image_id}.jpg', img)\n    return anno, idx, image_id","metadata":{"execution":{"iopub.status.busy":"2021-05-26T05:42:23.745586Z","iopub.execute_input":"2021-05-26T05:42:23.745946Z","iopub.status.idle":"2021-05-26T05:42:23.765716Z","shell.execute_reply.started":"2021-05-26T05:42:23.745903Z","shell.execute_reply":"2021-05-26T05:42:23.764874Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"num_sample","metadata":{"execution":{"iopub.status.busy":"2021-06-10T16:55:32.437404Z","iopub.execute_input":"2021-06-10T16:55:32.437781Z","iopub.status.idle":"2021-06-10T16:55:32.445255Z","shell.execute_reply.started":"2021-06-10T16:55:32.437749Z","shell.execute_reply":"2021-06-10T16:55:32.444493Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cell_mask_dir = '../input/hpa-mask/hpa_cell_mask'    \nfor idx in range(3):\n    image_id = df.iloc[idx].ID\n    cell_mask = np.load(f'{cell_mask_dir}/{image_id}.npz')['arr_0']\n    print_masked_img(image_id, cell_mask)\n    load_RGB_image(image_id)","metadata":{"execution":{"iopub.status.busy":"2021-05-26T05:42:23.766907Z","iopub.execute_input":"2021-05-26T05:42:23.767254Z","iopub.status.idle":"2021-05-26T05:42:31.661556Z","shell.execute_reply.started":"2021-05-26T05:42:23.767219Z","shell.execute_reply":"2021-05-26T05:42:31.660559Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"lọc ra các id ảnh chỉ có 1 nhãn","metadata":{}},{"cell_type":"code","source":"num_sample = df.ID.iloc[[idxx for idxx in range(len(df)) if '|' not in df['Label'].iloc[idxx]]]\nlen(list(num_sample))","metadata":{"execution":{"iopub.status.busy":"2021-06-10T15:12:45.917873Z","iopub.execute_input":"2021-06-10T15:12:45.918232Z","iopub.status.idle":"2021-06-10T15:12:46.165192Z","shell.execute_reply.started":"2021-06-10T15:12:45.9182Z","shell.execute_reply":"2021-06-10T15:12:46.164259Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"lọc ra 1000 anno cho từng 1000 id ảnh ","metadata":{}},{"cell_type":"code","source":"p = Pool(processes=MAX_THRE)\nannos = []\nc = 0\nfor i, (anno, idx, image_id) in enumerate(p.imap(mk_ann, range(len(df)))):\n    if len(anno['ann']) > 0 and image_id in list(num_sample):\n        annos.append(anno)\n        c += 1\n    if c % 100 == 0:\n        print (idx, image_id)\n    if c > 1000:\n        break","metadata":{"execution":{"iopub.status.busy":"2021-05-26T05:42:32.338303Z","iopub.execute_input":"2021-05-26T05:42:32.338626Z","iopub.status.idle":"2021-05-26T08:37:00.231403Z","shell.execute_reply.started":"2021-05-26T05:42:32.33859Z","shell.execute_reply":"2021-05-26T08:37:00.230199Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"split data (train:val) : (80:20)","metadata":{}},{"cell_type":"code","source":"lbl_cnt_dict = df.set_index('ID').to_dict()['Label']\ntrn_annos = []\nval_annos = []\nval_len = int(len(annos)*20/100)\nfor idx in range(len(annos)):\n    ann = annos[idx]\n    filename = ann['filename'].replace('.jpg','').replace('.png','')\n    label_id = lbl_cnt_dict[filename]\n    if '|' not in label_id:\n        label_id = int(label_id)\n        ann['ann']['labels'] = np.full(len(ann['ann']['bboxes']), label_id)\n        if idx < val_len:\n            val_annos.append(ann)\n        else:\n            trn_annos.append(ann)","metadata":{"execution":{"iopub.status.busy":"2021-05-26T08:37:00.233607Z","iopub.execute_input":"2021-05-26T08:37:00.244098Z","iopub.status.idle":"2021-05-26T08:37:00.356356Z","shell.execute_reply.started":"2021-05-26T08:37:00.244051Z","shell.execute_reply":"2021-05-26T08:37:00.353055Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print (len(trn_annos))\nprint (len(val_annos))","metadata":{"execution":{"iopub.status.busy":"2021-05-26T08:37:00.357956Z","iopub.execute_input":"2021-05-26T08:37:00.358554Z","iopub.status.idle":"2021-05-26T08:37:00.374183Z","shell.execute_reply.started":"2021-05-26T08:37:00.358514Z","shell.execute_reply":"2021-05-26T08:37:00.373005Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"with open(f'../work/mmdet_v1_full.pkl', 'wb') as f:\n    pickle.dump(annos, f)\nwith open(f'../work/mmdet_v1_trn.pkl', 'wb') as f:\n    pickle.dump(trn_annos, f)\nwith open(f'../work/mmdet_v1_val.pkl', 'wb') as f:\n    pickle.dump(val_annos, f)","metadata":{"execution":{"iopub.status.busy":"2021-05-26T08:37:00.376279Z","iopub.execute_input":"2021-05-26T08:37:00.376668Z","iopub.status.idle":"2021-05-26T08:37:00.972021Z","shell.execute_reply.started":"2021-05-26T08:37:00.376632Z","shell.execute_reply":"2021-05-26T08:37:00.97107Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"train\n![image.png](attachment:e7fa47f5-05b4-4c2f-8e7b-0a48e6d90dda.png)","metadata":{},"attachments":{"e7fa47f5-05b4-4c2f-8e7b-0a48e6d90dda.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA0EAAAG3CAIAAAD9y8mjAAAgAElEQVR4AeydCXQb1b3/3aYtBc6DB4f2QBYSODR2lFDI45HUNCZd8njvte9wSlInLIHgOJAQ3JAIk0BSk5QtIRDZjh3Lu5PYjvctdmxL3hfZkm1JHu37MpoBXP5spRA4kOh/xkMVMbIdWdJczdg/HR1z5+rOvb/7/dyrfLmjuRPjhRcoAAqAAqAAKAAKgAKgAN8UiOFbwBAvKAAKgAKgACgACoACoIAXPBwMAlAAFAAFQAFQABQABfinAHg4/jGDiEEBUAAUAAVAAVAAFAAPB2MAFAAFQAFQABQABUAB/ikAHo5/zCBiUAAUmFmBnp6emJgYj8czc7GIfLpt27bf//73EakKKgEFQAFQYFYKgIeblVxQGBQABVhXIGaa19KlS4Ns++uvv37//fcvXboUZPmlS5ceOXIkJibmwoULjFPefffd66677tNPP2Xk+w5n8HBLly59/fXXfSUhAQqAAqBAZBUADxdZPaE2UAAUCFeB9//1ampqiomJGRkZoTP+/ve/+6r++uuvfekwE0ql8vrrr//yyy/vv//+P/3pT4za4uLikpKSGJn+h+Dh/NWANCgACqBUADwcSrWhLVAAFJiFAgMDAzExMU6nkz4nJiYmMzPzscceu+GGG/785z97vd6DBw/GxcVde+21ixcv3rlzp2+1zP9aKp2WSqUJCQnXXnvtihUr2tvb/YM4dOjQpk2bvF5vYWHhj370o/fff9/3aX9/f0xMzPDwsMPheOSRR2677bZrr7121apVZ8+e9ZUJwcNduHDhP/7jP37yk5/87Gc/e+655/75z3/Stel0uoceeujGG2+87rrr4uLifK0UFBTExcVdc801N998c0JCApprxL4OQgIUAAU4qwB4OM6igcBAgfmuQKCHu/nmm0+ePGmz2cxms9frff311/v7+51OZ2dnZ2xs7FNPPUVLFujhfvnLX7a1tVkslieffPLGG2/85JNPfOIKBIKysjKv1/vPf/7zhhtueOutt3wfPfnkk3fffbfX69VoNNnZ2RiG2Wy2kydPLliwoLu7my42Ww+HYdiCBQv27t1rMBhaW1uXLFmydetWuqq77777scce0+v1dru9tbW1ubnZ6/WOjY0tWLDgzJkzLpdLo9EUFBSAh/MBggQoMM8VAA83zwcAdB8U4K4CgR5u+/bt04VbX1//k5/8hP4NXKCHq6uro098//33Y2JifEtxZrP5xz/+sc/SPffcc3feeefly5e9Xu8nn3xy7bXXZmVlBbb48MMP79ixg86frYfbunXr/fff76uzsbHxBz/4gcvl8nq9N9xwQ0lJie8jOlFfX3/DDTd89tlnjHw4BAVAAVAAPByMAVAAFOCoAoEeLjc31z/Wurq6hISE22677frrr7/22mtjYmJIkvR6vYEezm63+06kl7Xow6NHjz700EO+j8bHx2NiYjo7O71eb1ZW1rXXXkvbuy+++OLAgQMCgeCmm266/vrrf/SjH/3Xf/0XfdZsPdzq1atffPFFX4uffPJJTExMa2ur1+t97bXXFixYsH79+sOHDyuVSrrM559/fu+99958881btmzJy8v78MMPfedCAhQABea5AuDh5vkAgO6DAtxVINDDlZaW+sKVy+U//OEPDx06JJfLzWbzmTNnfD+eC/Rw/tcfFyxY4FvuWrNmjVgs9tXp9XrXrl27efNmr9f7y1/+ctu2bfRHu3fvXrRoUWVl5fj4uNVqffjhh9evX09/FIKHS01N9bVIe7i2tjY6x263nzp1atOmTT/+8Y8PHTpEZ3777bd9fX1paWmrV6++8cYbx8bGfKdDAhQABeazAuDh5jN96DsowGkFZvZw77777s9//nNfB958883ZejiPx/PDH/7wvffe81Xi9XqLi4t/8pOfNDc3x8TEyGQy+qNVq1bt37+fTl+6dCkuLi5kDzfltVS32+0fg9frPXr06M0338zIvHz5clxcnFAoZOTDISgACsxPBcDDzU/u0GtQgAcKzOzhmpubf/CDHxQWFtrt9jNnzixatGi2Hi4rKys+Pp4hxBdffHHjjTfedNNNK1eu9H20adOm2NhYhUKh1+uTk5NvuOGGID3c888/r/Z7eTwe+p6Gffv2GY3GtrY23z0Nn3/++e7du7u6uhwOh0qlWr9+/bp167xeb2Njo0gkGhsbc7vd9fX1119/fWFhoS8wSIACoMB8VgA83HymD30HBTitwMwezuv1/vWvf/35z39+3XXX/e///u+5c+dm6+F+97vfHT9+PFCClJQUeh8T30c4jj/00EPXXXfdrbfe+uqrr27fvj1ID8fYrnjnzp1er9e3t8gtt9yya9cuem+RixcvPvbYY8uWLbvm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"}}},{"cell_type":"code","source":"# config = f'configs/hpa_{exp_name}/mask_rcnn_r50_fpn_1x_coco.py'\nconfig = f'configs/mask_rcnn_unique/mask_rcnn_r50_fpn_1x_coco.py'\n\n# using --no-validate to avoid some errors for custom dataset metrics\n# additional_conf = '--no-validate '\nadditional_conf = ' --cfg-options workflow=\"[(train,1),(val,1)]\"'\nadditional_conf += f' --cfg-options optimizer.lr=0.0025'\nadditional_conf += f' --cfg-options work_dir=../working/work_dir'\nadditional_conf += f' --cfg-options load_from=../input/mmdetection-v280/pretrained/mask_rcnn_r50_fpn_2x_coco_bbox_mAP-0.392__segm_mAP-0.354_20200505_003907-3e542a40.pth'\ncmd = f'bash -x tools/dist_train.sh {config} 1 {additional_conf}'\n!cd ../mmdetection; {cmd}","metadata":{"execution":{"iopub.status.busy":"2021-05-26T08:37:00.976579Z","iopub.execute_input":"2021-05-26T08:37:00.983066Z","iopub.status.idle":"2021-05-26T14:12:59.716748Z","shell.execute_reply.started":"2021-05-26T08:37:00.983023Z","shell.execute_reply":"2021-05-26T14:12:59.710553Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"from pycocotools import _mask as coco_mask\nimport matplotlib.pyplot as plt\nimport os\nimport base64\nimport typing as t\nimport zlib\nimport random\nrandom.seed(0)\n\nexp_name = \"mmdet_v1\"\nimage_size = None\nROOT = '../input/hpa-single-cell-image-classification/'\ntrain_or_test = 'test'\ndf = pd.read_csv(os.path.join(ROOT, 'sample_submission.csv'))","metadata":{"execution":{"iopub.status.busy":"2021-05-26T14:12:59.723814Z","iopub.execute_input":"2021-05-26T14:12:59.72422Z","iopub.status.idle":"2021-05-26T14:12:59.761558Z","shell.execute_reply.started":"2021-05-26T14:12:59.724181Z","shell.execute_reply":"2021-05-26T14:12:59.760725Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"tạo annotate cho dữ liệu test","metadata":{}},{"cell_type":"code","source":"out_image_dir = f'../work/mmdet_v1_test/'\n!mkdir -p {out_image_dir}\n\nannos = []\nfor idx in tqdm(range(len(df))):\n    image_id = df.iloc[idx].ID\n    img = load_RGB_image(image_id, train_or_test, image_size)\n    \n    cv2.imwrite(f'{out_image_dir}/{image_id}.jpg', img)\n    ann = {\n        'filename': image_id+'.jpg',\n        'width': img.shape[1],\n        'height': img.shape[0],\n        'ann': {\n            'bboxes': None,\n            'labels': None,\n            'masks': None\n        }\n    }\n    annos.append(ann)\n    \nwith open(f'../work/mmdet_v1_tst.pkl', 'wb') as f:\n    pickle.dump(annos, f)","metadata":{"execution":{"iopub.status.busy":"2021-05-26T14:37:03.800226Z","iopub.execute_input":"2021-05-26T14:37:03.80067Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# I just made following config files based on default mask_rcnn.\n# Other than that, I used it as is for mmdetection.\n!ls -l ../mmdetection/configs/mask_rcnn_unique/","metadata":{"execution":{"iopub.status.busy":"2021-05-26T14:27:16.929806Z","iopub.execute_input":"2021-05-26T14:27:16.930381Z","iopub.status.idle":"2021-05-26T14:27:19.223247Z","shell.execute_reply.started":"2021-05-26T14:27:16.930337Z","shell.execute_reply":"2021-05-26T14:27:19.222074Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# from distutils.dir_util import copy_tree","metadata":{"execution":{"iopub.status.busy":"2021-05-26T14:29:03.213876Z","iopub.execute_input":"2021-05-26T14:29:03.214317Z","iopub.status.idle":"2021-05-26T14:29:03.224813Z","shell.execute_reply.started":"2021-05-26T14:29:03.214273Z","shell.execute_reply":"2021-05-26T14:29:03.223899Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# copy_tree('../mmdetection/work_dirs/mask_rcnn_r50_fpn_1x_coco', './')","metadata":{"execution":{"iopub.status.busy":"2021-05-26T14:29:35.032594Z","iopub.execute_input":"2021-05-26T14:29:35.033019Z","iopub.status.idle":"2021-05-26T14:30:13.654539Z","shell.execute_reply.started":"2021-05-26T14:29:35.032982Z","shell.execute_reply":"2021-05-26T14:30:13.653614Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"config = 'configs/mask_rcnn_unique/mask_rcnn_r50_fpn_1x_coco.py'\nmodel_file = './epoch_10.pth'\nresult_pkl = '../work/mask_rcnn_r50_fpn_1x_epoch_10.pkl'\ncmd = f'python tools/test.py {config} {model_file} --out {result_pkl}'\n!cd ../mmdetection; {cmd}\nresult = pickle.load(open('../mmdetection/'+result_pkl, 'rb'))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"for ii in range(3):\n    image_id = annos[ii]['filename'].replace('.jpg','').replace('.png','')\n    for class_id in range(19):\n        bbs = result[ii][0][class_id]\n        sgs = result[ii][1][class_id]\n        for bb, sg in zip(bbs,sgs):\n            box = bb[:4]\n            cnf = bb[4]\n            h = sg['size'][0]\n            w = sg['size'][0]\n            if cnf > 0.3:\n                print(f'class_id:{class_id}, image_id:{image_id}, confidence:{cnf}')\n                mask = mutils.decode(sg).astype(bool)\n                print_masked_img(image_id, mask)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}