diff --git a/Evaluation_DETR.ipynb b/Evaluation_DETR.ipynb new file mode 100644 index 000000000..da40a0745 --- /dev/null +++ b/Evaluation_DETR.ipynb @@ -0,0 +1,299 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Evaluation_DETR.ipynb", + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "accelerator": "GPU" + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "40eerXBw-y1k" + }, + "source": [ + "
\n", + " \n", + " View source on github\n", + " \n", + "\n", + " \n", + " Run in Google Colab\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kVHSajq37ANN" + }, + "source": [ + "## Clone the github repository for the DETR and install other dependencies" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EFhyWR-3HBeg" + }, + "source": [ + "!git clone https://github.com/facebookresearch/detr.git" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "SEk86t1aHJsr" + }, + "source": [ + "!pip install cython scipy" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "g8-6FklzHNPj" + }, + "source": [ + "!pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lTVVENnG7xfX" + }, + "source": [ + "## Setting up the Directory\n", + "(Either use the following code from the terminal in your wokrspace directory or make the directory in the way shown at the last first)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uVsrNn1771iW" + }, + "source": [ + "!mkdir path" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "loGV5Zo473hK" + }, + "source": [ + "cd path" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "0FXDs72-74q0" + }, + "source": [ + "!mkdir to" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "3vs8-5vn76Ej" + }, + "source": [ + "cd to" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "E9HdTgsH766N" + }, + "source": [ + "!mkdir coco" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "yUgxqsaJ781k" + }, + "source": [ + "cd coco" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HSGYxfEo8SRB" + }, + "source": [ + "Path formed will be in case of google colab : \"/content/path/to/coco\"\n", + "For personal machine: \"./path/to/coco\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Eo5zPVQ27JUT" + }, + "source": [ + "## Preparing the dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "NxxKioTt7NU-" + }, + "source": [ + "!wget http://images.cocodataset.org/zips/train2017.zip" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "sJ8VA8Wy7lYY" + }, + "source": [ + "!wget http://images.cocodataset.org/zips/val2017.zip" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "eaGKEkoF7uCB" + }, + "source": [ + "!wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "2zPz_a368QqN" + }, + "source": [ + "!unzip /content/path/to/coco/train2017.zip\n", + "!unzip /content/path/to/coco/val2017.zip\n", + "!unzip /content/path/to/coco/annotation_trainval2017.zip" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "U9sdUgtR8z0C" + }, + "source": [ + "You can delete the zipped files after unzipping them" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l3l_2lCn88LY" + }, + "source": [ + "Make sure to change the directory back to the cloned repository before running the following command which will be \"/content/detr\" in case of google colab and \"./detr\" in case of your personal machine" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2ANPdttf1ouU" + }, + "source": [ + "## Models provided by Facebook AI:\n", + "1. https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth (FOR DETR-R50)\n", + "\n", + "2. https://dl.fbaipublicfiles.com/detr/detr-r50-dc5-f0fb7ef5.pth (FOR DETR-R50-DC5)\n", + "\n", + "3. https://dl.fbaipublicfiles.com/detr/detr-r101-2c7b67e5.pth (FOR DETR-R101)\n", + "\n", + "4. https://dl.fbaipublicfiles.com/detr/detr-r101-dc5-a2e86def.pth FOR DETR_R101-DC5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ortqIgK33U8N" + }, + "source": [ + "For changing the model choosen for evaluation we can change the link below with four of the folowing mentioned above." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "bhwA3pwZJJaY" + }, + "source": [ + "!python main.py --batch_size 2 --no_aux_loss --eval --resume https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth --coco_path /content/path/to/coco" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JqWjRw1b35fK" + }, + "source": [ + "Below is shown how the data should be kept for running the above code" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NRLWle_o30WF" + }, + "source": [ + "![Screenshot from 2021-02-18 18-55-22.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "AMDCSAAf346K" + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file