Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

envirnoment created #38

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 28 additions & 26 deletions 1_frame_information.ipynb

Large diffs are not rendered by default.

18 changes: 8 additions & 10 deletions 2_frame_transformations.ipynb

Large diffs are not rendered by default.

54 changes: 27 additions & 27 deletions 3_2d_visualization.ipynb

Large diffs are not rendered by default.

116 changes: 110 additions & 6 deletions 4_evaluation.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,13 @@
"import os\n",
"\n",
"# When the instance is created, the label locations are required.\n",
"evaluation = Evaluation(test_annotation_file=os.path.join('example_set', 'label'))\n",
"#evaluation = Evaluation(test_annotation_file=os.path.join('example_set', 'label'))\n",
"evaluation = Evaluation(test_annotation_file=os.path.join('E:/vod/view_of_delft_PUBLIC', 'label'))\n",
"\n",
"# Using the evaluate method, the model can be evaluated on the detection labels.\n",
"results = evaluation.evaluate(\n",
" result_path=os.path.join('example_set', 'detection'),\n",
" #result_path=os.path.join('example_set', 'detection'),\n",
" result_path=os.path.join('E:/vod/view_of_delft_PUBLIC', 'detection'),\n",
" current_class=[0, 1, 2])\n",
"\n",
"print(\"Results: \\n\"\n",
Expand All @@ -82,12 +84,114 @@
" )"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: matplotlib in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (3.7.1)\n",
"Requirement already satisfied: packaging>=20.0 in c:\\users\\realme\\appdata\\roaming\\python\\python310\\site-packages (from matplotlib) (23.0)\n",
"Requirement already satisfied: numpy>=1.20 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from matplotlib) (1.23.5)\n",
"Requirement already satisfied: pillow>=6.2.0 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from matplotlib) (9.4.0)\n",
"Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from matplotlib) (2.8.2)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from matplotlib) (1.4.4)\n",
"Requirement already satisfied: fonttools>=4.22.0 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from matplotlib) (4.39.0)\n",
"Requirement already satisfied: pyparsing>=2.3.1 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from matplotlib) (3.0.9)\n",
"Requirement already satisfied: cycler>=0.10 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from matplotlib) (0.11.0)\n",
"Requirement already satisfied: contourpy>=1.0.1 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from matplotlib) (1.0.7)\n",
"Requirement already satisfied: six>=1.5 in c:\\users\\realme\\appdata\\roaming\\python\\python310\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"%pip install --upgrade matplotlib\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mvod\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mevaluation\u001b[39;00m \u001b[39mimport\u001b[39;00m Evaluation\n\u001b[0;32m 2\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mos\u001b[39;00m\n\u001b[0;32m 4\u001b[0m \u001b[39m# Set the paths to the annotation and detection files\u001b[39;00m\n",
"File \u001b[1;32me:\\github\\view-of-delft-dataset\\view-of-delft-dataset\\vod\\__init__.py:3\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mcommon\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n\u001b[0;32m 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mconfiguration\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n\u001b[1;32m----> 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mframe\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n\u001b[0;32m 4\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mvisualization\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n\u001b[0;32m 6\u001b[0m __version__ \u001b[39m=\u001b[39m \u001b[39m'\u001b[39m\u001b[39m1.0.2\u001b[39m\u001b[39m'\u001b[39m\n",
"File \u001b[1;32me:\\github\\view-of-delft-dataset\\view-of-delft-dataset\\vod\\frame\\__init__.py:1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mdata_loader\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n\u001b[0;32m 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mtransformations\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n\u001b[0;32m 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mlabels\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n",
"File \u001b[1;32me:\\github\\view-of-delft-dataset\\view-of-delft-dataset\\vod\\frame\\data_loader.py:4\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mnumpy\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mnp\u001b[39;00m\n\u001b[0;32m 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mtyping\u001b[39;00m \u001b[39mimport\u001b[39;00m Optional, List\n\u001b[1;32m----> 4\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m \u001b[39mimport\u001b[39;00m pyplot \u001b[39mas\u001b[39;00m plt\n\u001b[0;32m 5\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mlogging\u001b[39;00m\n\u001b[0;32m 7\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mvod\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mconfiguration\u001b[39;00m \u001b[39mimport\u001b[39;00m KittiLocations\n",
"File \u001b[1;32mc:\\Users\\Realme\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\matplotlib\\__init__.py:148\u001b[0m\n\u001b[0;32m 144\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpackaging\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mversion\u001b[39;00m \u001b[39mimport\u001b[39;00m parse \u001b[39mas\u001b[39;00m parse_version\n\u001b[0;32m 146\u001b[0m \u001b[39m# cbook must import matplotlib only within function\u001b[39;00m\n\u001b[0;32m 147\u001b[0m \u001b[39m# definitions, so it is safe to import from it here.\u001b[39;00m\n\u001b[1;32m--> 148\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m \u001b[39mimport\u001b[39;00m _api, _version, cbook, _docstring, rcsetup\n\u001b[0;32m 149\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mcbook\u001b[39;00m \u001b[39mimport\u001b[39;00m sanitize_sequence\n\u001b[0;32m 150\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39m_api\u001b[39;00m \u001b[39mimport\u001b[39;00m MatplotlibDeprecationWarning\n",
"File \u001b[1;32mc:\\Users\\Realme\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\matplotlib\\rcsetup.py:28\u001b[0m\n\u001b[0;32m 26\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mcbook\u001b[39;00m \u001b[39mimport\u001b[39;00m ls_mapper\n\u001b[0;32m 27\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mcolors\u001b[39;00m \u001b[39mimport\u001b[39;00m Colormap, is_color_like\n\u001b[1;32m---> 28\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39m_fontconfig_pattern\u001b[39;00m \u001b[39mimport\u001b[39;00m parse_fontconfig_pattern\n\u001b[0;32m 29\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39m_enums\u001b[39;00m \u001b[39mimport\u001b[39;00m JoinStyle, CapStyle\n\u001b[0;32m 31\u001b[0m \u001b[39m# Don't let the original cycler collide with our validating cycler\u001b[39;00m\n",
"File \u001b[1;32mc:\\Users\\Realme\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\matplotlib\\_fontconfig_pattern.py:15\u001b[0m\n\u001b[0;32m 12\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mfunctools\u001b[39;00m \u001b[39mimport\u001b[39;00m lru_cache, partial\n\u001b[0;32m 13\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mre\u001b[39;00m\n\u001b[1;32m---> 15\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpyparsing\u001b[39;00m \u001b[39mimport\u001b[39;00m (\n\u001b[0;32m 16\u001b[0m Group, Optional, ParseException, Regex, StringEnd, Suppress, ZeroOrMore)\n\u001b[0;32m 18\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m \u001b[39mimport\u001b[39;00m _api\n\u001b[0;32m 21\u001b[0m _family_punc \u001b[39m=\u001b[39m \u001b[39mr\u001b[39m\u001b[39m'\u001b[39m\u001b[39m\\\\\u001b[39;00m\u001b[39m\\\u001b[39m\u001b[39m-:,\u001b[39m\u001b[39m'\u001b[39m\n",
"File \u001b[1;32mc:\\Users\\Realme\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\pyparsing\\__init__.py:138\u001b[0m\n\u001b[0;32m 135\u001b[0m __author__ \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mPaul McGuire <[email protected]>\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m 137\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mutil\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n\u001b[1;32m--> 138\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mexceptions\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n\u001b[0;32m 139\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mactions\u001b[39;00m \u001b[39mimport\u001b[39;00m \u001b[39m*\u001b[39m\n\u001b[0;32m 140\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mcore\u001b[39;00m \u001b[39mimport\u001b[39;00m __diag__, __compat__\n",
"File \u001b[1;32mc:\\Users\\Realme\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\pyparsing\\exceptions.py:8\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mtyping\u001b[39;00m\n\u001b[0;32m 7\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mutil\u001b[39;00m \u001b[39mimport\u001b[39;00m col, line, lineno, _collapse_string_to_ranges\n\u001b[1;32m----> 8\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39municode\u001b[39;00m \u001b[39mimport\u001b[39;00m pyparsing_unicode \u001b[39mas\u001b[39;00m ppu\n\u001b[0;32m 11\u001b[0m \u001b[39mclass\u001b[39;00m \u001b[39mExceptionWordUnicode\u001b[39;00m(ppu\u001b[39m.\u001b[39mLatin1, ppu\u001b[39m.\u001b[39mLatinA, ppu\u001b[39m.\u001b[39mLatinB, ppu\u001b[39m.\u001b[39mGreek, ppu\u001b[39m.\u001b[39mCyrillic):\n\u001b[0;32m 12\u001b[0m \u001b[39mpass\u001b[39;00m\n",
"File \u001b[1;32m<frozen importlib._bootstrap>:1027\u001b[0m, in \u001b[0;36m_find_and_load\u001b[1;34m(name, import_)\u001b[0m\n",
"File \u001b[1;32m<frozen importlib._bootstrap>:1006\u001b[0m, in \u001b[0;36m_find_and_load_unlocked\u001b[1;34m(name, import_)\u001b[0m\n",
"File \u001b[1;32m<frozen importlib._bootstrap>:688\u001b[0m, in \u001b[0;36m_load_unlocked\u001b[1;34m(spec)\u001b[0m\n",
"File \u001b[1;32m<frozen importlib._bootstrap_external>:879\u001b[0m, in \u001b[0;36mexec_module\u001b[1;34m(self, module)\u001b[0m\n",
"File \u001b[1;32m<frozen importlib._bootstrap_external>:975\u001b[0m, in \u001b[0;36mget_code\u001b[1;34m(self, fullname)\u001b[0m\n",
"File \u001b[1;32m<frozen importlib._bootstrap_external>:1074\u001b[0m, in \u001b[0;36mget_data\u001b[1;34m(self, path)\u001b[0m\n",
"\u001b[1;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"from vod.evaluation import Evaluation\n",
"import os\n",
"\n",
"# Set the paths to the annotation and detection files\n",
"test_annotation_file = os.path.join('E:', 'vod', 'view_of_delft_PUBLIC', 'label')\n",
"result_path = os.path.join('E:', 'vod', 'view_of_delft_PUBLIC', 'detection')\n",
"\n",
"# Create an instance of the evaluation class\n",
"evaluation = Evaluation(test_annotation_file=test_annotation_file)\n",
"\n",
"# Evaluate the detection results and get the evaluation results\n",
"results = evaluation.evaluate(result_path=result_path, current_class=[0, 1, 2])\n",
"\n",
"# Print the evaluation results\n",
"print(\"Results: \\n\"\n",
" f\"Entire annotated area: \\n\"\n",
" f\"Car: {results['entire_area']['Car_3d_all']} \\n\"\n",
" f\"Pedestrian: {results['entire_area']['Pedestrian_3d_all']} \\n\"\n",
" f\"Cyclist: {results['entire_area']['Cyclist_3d_all']} \\n\"\n",
" f\"mAP: {(results['entire_area']['Car_3d_all'] + results['entire_area']['Pedestrian_3d_all'] + results['entire_area']['Cyclist_3d_all']) / 3} \\n\"\n",
" f\"Driving corridor area: \\n\"\n",
" f\"Car: {results['roi']['Car_3d_all']} \\n\"\n",
" f\"Pedestrian: {results['roi']['Pedestrian_3d_all']} \\n\"\n",
" f\"Cyclist: {results['roi']['Cyclist_3d_all']} \\n\"\n",
" f\"mAP: {(results['roi']['Car_3d_all'] + results['roi']['Pedestrian_3d_all'] + results['roi']['Cyclist_3d_all']) / 3} \\n\"\n",
" )\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: numba in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (0.56.4)\n",
"Requirement already satisfied: setuptools in c:\\users\\realme\\appdata\\roaming\\python\\python310\\site-packages (from numba) (67.6.0)\n",
"Requirement already satisfied: numpy<1.24,>=1.18 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from numba) (1.23.5)\n",
"Requirement already satisfied: llvmlite<0.40,>=0.39.0dev0 in c:\\users\\realme\\appdata\\local\\programs\\python\\python310\\lib\\site-packages (from numba) (0.39.1)\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"%pip install numba --user --upgrade"
]
}
],
"metadata": {
Expand All @@ -106,9 +210,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.12"
"version": "3.10.10"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
}
Binary file modified example_output01201.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions oryx-build-commands.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
PlatformWithVersion=Python
BuildCommands=conda env create --file environment.yml --prefix ./venv --quiet
Empty file added test.txt
Empty file.
8 changes: 6 additions & 2 deletions vod/evaluation/evaluate.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,14 @@ def evaluate(self,

if __name__ == '__main__':

evaluation = Evaluation(test_annotation_file=os.path.join('..', '..', 'example_set', 'label'))

#evaluation = Evaluation(test_annotation_file=os.path.join('..', '..', 'example_set', 'label'))
evaluation = Evaluation(test_annotation_file=os.path.join('..', '..', 'E:/vod/view_of_delft_PUBLIC', 'label'))

results = evaluation.evaluate(
result_path=os.path.join('..', '..', 'example_set', 'detection'),
#result_path=os.path.join('..', '..', 'example_set', 'detection'),
result_path=os.path.join('..', '..', 'E:/vod/view_of_delft_PUBLIC', 'detection'),

current_class=[0, 1, 2])

print("Results: \n"
Expand Down
3 changes: 2 additions & 1 deletion vod/frame/transformations.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,8 @@ def project_3d_to_2d(points: np.ndarray, projection_matrix: np.ndarray):
uvw = projection_matrix.dot(points.T)
uvw /= uvw[2]
uvs = uvw[:2].T
uvs = np.round(uvs).astype(np.int)
# here int has changed to int64, because int in numpy was depreciated.
uvs = np.round(uvs).astype(np.int64)

return uvs

Expand Down