yolov7/tools/instance.ipynb

226 lines
477 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "failing-secret",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import torch\n",
"import cv2\n",
"import yaml\n",
"from torchvision import transforms\n",
"import numpy as np\n",
"\n",
"from utils.datasets import letterbox\n",
"from utils.general import non_max_suppression_mask_conf\n",
"\n",
"from detectron2.modeling.poolers import ROIPooler\n",
"from detectron2.structures import Boxes\n",
"from detectron2.utils.memory import retry_if_cuda_oom\n",
"from detectron2.layers import paste_masks_in_image\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "sixth-universe",
"metadata": {},
"outputs": [],
"source": [
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
"with open('data/hyp.scratch.mask.yaml') as f:\n",
" hyp = yaml.load(f, Loader=yaml.FullLoader)\n",
"weigths = torch.load('yolov7-mask.pt')\n",
"model = weigths['model']\n",
"model = model.half().to(device)\n",
"_ = model.eval()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "respected-source",
"metadata": {},
"outputs": [],
"source": [
"image = cv2.imread('./horses.jpg') # 504x378 image\n",
"image = letterbox(image, 640, stride=64, auto=True)[0]\n",
"image_ = image.copy()\n",
"image = transforms.ToTensor()(image)\n",
"image = torch.tensor(np.array([image.numpy()]))\n",
"image = image.to(device)\n",
"image = image.half()\n",
"\n",
"output = model(image)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cognitive-writer",
"metadata": {},
"outputs": [],
"source": [
"inf_out, train_out, attn, mask_iou, bases, sem_output = output['test'], output['bbox_and_cls'], output['attn'], output['mask_iou'], output['bases'], output['sem']"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dedicated-helmet",
"metadata": {},
"outputs": [],
"source": [
"bases = torch.cat([bases, sem_output], dim=1)\n",
"nb, _, height, width = image.shape\n",
"names = model.names\n",
"pooler_scale = model.pooler_scale\n",
"pooler = ROIPooler(output_size=hyp['mask_resolution'], scales=(pooler_scale,), sampling_ratio=1, pooler_type='ROIAlignV2', canonical_level=2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "martial-burner",
"metadata": {},
"outputs": [],
"source": [
"output, output_mask, output_mask_score, output_ac, output_ab = non_max_suppression_mask_conf(inf_out, attn, bases, pooler, hyp, conf_thres=0.25, iou_thres=0.65, merge=False, mask_iou=None)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "further-conditions",
"metadata": {},
"outputs": [],
"source": [
"pred, pred_masks = output[0], output_mask[0]\n",
"base = bases[0]\n",
"bboxes = Boxes(pred[:, :4])\n",
"original_pred_masks = pred_masks.view(-1, hyp['mask_resolution'], hyp['mask_resolution'])\n",
"pred_masks = retry_if_cuda_oom(paste_masks_in_image)( original_pred_masks, bboxes, (height, width), threshold=0.5)\n",
"pred_masks_np = pred_masks.detach().cpu().numpy()\n",
"pred_cls = pred[:, 5].detach().cpu().numpy()\n",
"pred_conf = pred[:, 4].detach().cpu().numpy()\n",
"nimg = image[0].permute(1, 2, 0) * 255\n",
"nimg = nimg.cpu().numpy().astype(np.uint8)\n",
"nimg = cv2.cvtColor(nimg, cv2.COLOR_RGB2BGR)\n",
"nbboxes = bboxes.tensor.detach().cpu().numpy().astype(np.int)\n",
"pnimg = nimg.copy()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "grand-thickness",
"metadata": {},
"outputs": [],
"source": [
"for one_mask, bbox, cls, conf in zip(pred_masks_np, nbboxes, pred_cls, pred_conf):\n",
" if conf < 0.25:\n",
" continue\n",
" color = [np.random.randint(255), np.random.randint(255), np.random.randint(255)]\n",
" \n",
" \n",
" pnimg[one_mask] = pnimg[one_mask] * 0.5 + np.array(color, dtype=np.uint8) * 0.5\n",
" pnimg = cv2.rectangle(pnimg, (bbox[0], bbox[1]), (bbox[2], bbox[3]), color, 2)\n",
" #label = '%s %.3f' % (names[int(cls)], conf)\n",
" #t_size = cv2.getTextSize(label, 0, fontScale=0.5, thickness=1)[0]\n",
" #c2 = bbox[0] + t_size[0], bbox[1] - t_size[1] - 3\n",
" #pnimg = cv2.rectangle(pnimg, (bbox[0], bbox[1]), c2, color, -1, cv2.LINE_AA) # filled\n",
" #pnimg = cv2.putText(pnimg, label, (bbox[0], bbox[1] - 2), 0, 0.5, [255, 255, 255], thickness=1, lineType=cv2.LINE_AA) \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "allied-drama",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# coco example\n",
"%matplotlib inline\n",
"plt.figure(figsize=(8,8))\n",
"plt.axis('off')\n",
"plt.imshow(pnimg)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "growing-layout",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# cityscapes example\n",
"%matplotlib inline\n",
"plt.figure(figsize=(8,8))\n",
"plt.axis('off')\n",
"plt.imshow(pnimg)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "municipal-trigger",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}