-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update the tensorboard note, group proposal and project readme file
- Loading branch information
1 parent
b52d3cc
commit 887a5f4
Showing
4 changed files
with
313 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,108 @@ | ||
# PRS-PM-2023-07-01-GRP5-roomifAI | ||
NUS-ISS PRS Practical Module Group 5 Project | ||
|
||
RoomifAI (Room Visualizer) Version 2 is powered by advanced generative AI technology. RoomifAI can effortlessly create stunning design for any room in your home - be it living room, bedroom or dining room. All you have to do is provide a text prompt and RoomifAI will generate a unique and stylish interior design tailored to your preferences. | ||
|
||
|
||
## PROJECT TITLE | ||
## RoomifAI (Room Visualizer) | ||
|
||
 | ||
|
||
--- | ||
## CREDITS / PROJECT CONTRIBUTION | ||
|
||
| Official Full Name | Student ID (MTech Applicable) | Work Items (Who Did What) | Email (Optional) | | ||
| :------------ |:---------------:| :-----| :-----| | ||
| Chua Jack Yune | A0269363U | Project Manager and Main Developer | [email protected] | | ||
| Borromeo, Angelie Quiapo | A0270177A | Secondary Developer and Documentation| [email protected] | | ||
| Kwatt Ivy | A0269639H | Secondary Developer| [email protected] | | ||
| Yeoh Wee Chye | A0165226H | Secondary Developer| | [email protected] | | ||
--- | ||
|
||
## EXECUTIVE SUMMARY / PAPER ABSTRACT / INTRODUCTION | ||
Owning a property in Singapore is not uncommon, as Singapore's home ownership rate remains one of the highest in the world at nearly 90 per cent, thanks to government grant and financial support from parents (1). However, home prices are still rising and acquiring a home is becoming an important milestone in one’s lifetime, this leads to a growing demand in the interior design industry where one is willing to spend the time and effort to create a personal space that is both functional and aesthetically pleasing, for that property that could accompany for the rest of their lifetime. | ||
But most often than not, the whole process of interior design is highly time consuming, usually the interior designer takes on many projects at once and relies on conventional methods of generating interior design concept drawings which require gathering reference images, producing 2D designs and 3D modeling and rendering. This process will undergo further refinement and feedback from clients, which is time consuming. | ||
Our primary objective of this project is to provide interior design visualizations using a quick and easy method. Through textual prompts and an interactive graphic user interface, users can generate images of beautifully-designed room interiors based on their desired style or specifications. | ||
For professionals, the tool can be used to quickly and easily generate multiple prototype proposals to elicit client feedback, to be used for marketing or before moving on further along the design pipeline. The motivation behind this tool is to make room staging readily accessible, and easy to use, through the integration of deep learning technology. | ||
On the other hand, for the general user, the proposed tool allows them to generate interior design concept art without in depth knowledge in the interior design domain, while being able to work out different design ideas through the use of textual prompts. | ||
|
||
--- | ||
## SECTION 1 : AIM AND OBJECTIVE | ||
`Refer to project report at Github Folder: ProjectReport` | ||
|
||
--- | ||
|
||
## SECTION 2 : SYSTEM DESIGN | ||
`Refer to project report at Github Folder: ProjectReport` | ||
|
||
--- | ||
|
||
## SECTION 3 : MODEL | ||
`Refer to project report at Github Folder: ProjectReport` | ||
|
||
--- | ||
|
||
## SECTION 4 : APPLICATION INTEGRATION | ||
`Refer to project report at Github Folder: ProjectReport` | ||
|
||
--- | ||
|
||
## SECTION 5 : DISCUSSION | ||
`Refer to project report at Github Folder: ProjectReport` | ||
|
||
--- | ||
|
||
## SECTION 4 : REFERENCES | ||
`Refer to project report at Github Folder: ProjectReport` | ||
|
||
--- | ||
|
||
## SECTION 4 : APPENDIX | ||
`Refer to project report at Github Folder: ProjectReport` | ||
|
||
## SECTION 6 : PROJECT REPORT / PAPER | ||
`Refer to project report at Github Folder: ProjectReport` | ||
|
||
- Appendix A: Full Stable Diffusion 1.5 U-Net neural network diagram | ||
- Appendix B: Individual Project Report | ||
- Appendix C: User Guide | ||
- Appendix D: Project Proposal | ||
|
||
## USER GUIDE | ||
|
||
`Refer to UserGuide.pdf in project report at Github Folder: ProjectReport` | ||
|
||
This video intends to guide the user in installing and configuring RoomifAI in local machine. | ||
[Installation and User Guide]() | ||
|
||
### [ 1 ] To run the system in other/local machine: | ||
### Install additional necessary libraries. This application works in python 3.10 only. | ||
|
||
Installation can be done via Anaconda or Miniconda. The steps for installation of Anaconda or Miniconda and of the application libraries are given below. | ||
|
||
Anaconda/Miniconda installation. Miniconda can be installed by downloading the installer for your operating system from the official website: [Miniconda](https://docs.conda.io/projects/miniconda/en/latest/index.html). For those who prefer a GUI, Anaconda would be preferable; the installation file is available via the link: [Anaconda](https://www.anaconda.com/download). | ||
|
||
### The steps for installation of the packages are as follows: | ||
In the bash command line, go to the project root folder. | ||
|
||
> $ cd ~/SourceCode/src/main | ||
Run the Conda command line tool to create a virtual environment and install the packages listed in the `environment.yml` file. | ||
NOTE: If you are using MAC please use environment-mac.yml | ||
|
||
> conda env create -f environment.yml | ||
After the installation is completed, the backend API server can be started by running the Flask command. | ||
|
||
> flask run | ||
NOTE: For mac users if you encounter any issue relating to OPENMP you can add the following entry at the top of app.py | ||
import os | ||
os.environ['KMP_DUPLICATE_LIB_OK']='True' | ||
|
||
If the API is running locally, the app can be opened via a browser at the URL http://localhost:5000/ | ||
|
||
--- | ||
|
||
**The [Reasoning Systems](https://www.iss.nus.edu.sg/executive-education/course/detail/reasoning-systems "Reasoning Systems") courses is part of the Analytics and Intelligent Systems and Graduate Certificate in [Intelligent Reasoning Systems (IRS)](https://www.iss.nus.edu.sg/stackable-certificate-programmes/intelligent-systems "Intelligent Reasoning Systems") series offered by [NUS-ISS](https://www.iss.nus.edu.sg "Institute of Systems Science, National University of Singapore").** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,207 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 38, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"\u001b[31mERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory\n", | ||
"\u001b[0m\u001b[31m\n", | ||
"\u001b[0m\n", | ||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.2.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m23.3.1\u001b[0m\n", | ||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"!pip install tensorboard-plugin-customizable-plots" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 1, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"log_folder = \"/Users/aqborromeo/Downloads/roomifai/logs\"" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 2, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/html": [ | ||
"\n", | ||
" <iframe id=\"tensorboard-frame-69f4c52b9418c6b1\" width=\"100%\" height=\"800\" frameborder=\"0\">\n", | ||
" </iframe>\n", | ||
" <script>\n", | ||
" (function() {\n", | ||
" const frame = document.getElementById(\"tensorboard-frame-69f4c52b9418c6b1\");\n", | ||
" const url = new URL(\"/\", window.location);\n", | ||
" const port = 6006;\n", | ||
" if (port) {\n", | ||
" url.port = port;\n", | ||
" }\n", | ||
" frame.src = url;\n", | ||
" })();\n", | ||
" </script>\n", | ||
" " | ||
], | ||
"text/plain": [ | ||
"<IPython.core.display.HTML object>" | ||
] | ||
}, | ||
"metadata": {}, | ||
"output_type": "display_data" | ||
} | ||
], | ||
"source": [ | ||
"%load_ext tensorboard\n", | ||
"%tensorboard --logdir={log_folder}/" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 3, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"Selecting TensorBoard with logdir /Users/aqborromeo/Downloads/roomifai/logs/ (started 0:00:06 ago; port 6006, pid 44415).\n" | ||
] | ||
}, | ||
{ | ||
"data": { | ||
"text/html": [ | ||
"\n", | ||
" <iframe id=\"tensorboard-frame-528b16440078aa4e\" width=\"100%\" height=\"800\" frameborder=\"0\">\n", | ||
" </iframe>\n", | ||
" <script>\n", | ||
" (function() {\n", | ||
" const frame = document.getElementById(\"tensorboard-frame-528b16440078aa4e\");\n", | ||
" const url = new URL(\"http://localhost\");\n", | ||
" const port = 6006;\n", | ||
" if (port) {\n", | ||
" url.port = port;\n", | ||
" }\n", | ||
" frame.src = url;\n", | ||
" })();\n", | ||
" </script>\n", | ||
" " | ||
], | ||
"text/plain": [ | ||
"<IPython.core.display.HTML object>" | ||
] | ||
}, | ||
"metadata": {}, | ||
"output_type": "display_data" | ||
} | ||
], | ||
"source": [ | ||
"from tensorboard import notebook\n", | ||
"notebook.display(port=6006, height=800)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 34, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# Dining Room\n", | ||
"dining_log_folder = \"/Users/aqborromeo/Downloads/roomifai/logs/diningroom_log\"" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 35, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"\u001b[34mtrain_1\u001b[m\u001b[m \u001b[34mtrain_2\u001b[m\u001b[m\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"# !ls /Users/aqborromeo/Downloads/roomifai/logs/diningroom_log/\n", | ||
"!ls {dining_log_folder}" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 37, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"The tensorboard extension is already loaded. To reload it, use:\n", | ||
" %reload_ext tensorboard\n" | ||
] | ||
}, | ||
{ | ||
"data": { | ||
"text/plain": [ | ||
"Launching TensorBoard..." | ||
] | ||
}, | ||
"metadata": {}, | ||
"output_type": "display_data" | ||
}, | ||
{ | ||
"ename": "FileNotFoundError", | ||
"evalue": "[Errno 2] No such file or directory", | ||
"output_type": "error", | ||
"traceback": [ | ||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | ||
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", | ||
"\u001b[1;32m/Users/aqborromeo/Documents/MTECH-AI/scripts/NUS/NUS-ISS/Modules/PRS/PracticeModule/roomifai/PRS-PM-2023-07-01-GRP5-roomifAI/SystemCode/src/evaluation/01_tensorboard.ipynb Cell 7\u001b[0m line \u001b[0;36m2\n\u001b[1;32m <a href='vscode-notebook-cell:/Users/aqborromeo/Documents/MTECH-AI/scripts/NUS/NUS-ISS/Modules/PRS/PracticeModule/roomifai/PRS-PM-2023-07-01-GRP5-roomifAI/SystemCode/src/evaluation/01_tensorboard.ipynb#W6sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m get_ipython()\u001b[39m.\u001b[39mrun_line_magic(\u001b[39m'\u001b[39m\u001b[39mload_ext\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mtensorboard\u001b[39m\u001b[39m'\u001b[39m)\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/aqborromeo/Documents/MTECH-AI/scripts/NUS/NUS-ISS/Modules/PRS/PracticeModule/roomifai/PRS-PM-2023-07-01-GRP5-roomifAI/SystemCode/src/evaluation/01_tensorboard.ipynb#W6sZmlsZQ%3D%3D?line=1'>2</a>\u001b[0m get_ipython()\u001b[39m.\u001b[39;49mrun_line_magic(\u001b[39m'\u001b[39;49m\u001b[39mtensorboard\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39m--logdir=\u001b[39;49m\u001b[39m{dining_log_folder}\u001b[39;49;00m\u001b[39m/\u001b[39;49m\u001b[39m'\u001b[39;49m)\n", | ||
"File \u001b[0;32m~/Documents/MTECH-AI/scripts/NUS/NUS-ISS/Modules/PRS/.venv_blipcaption/lib/python3.10/site-packages/IPython/core/interactiveshell.py:2432\u001b[0m, in \u001b[0;36mInteractiveShell.run_line_magic\u001b[0;34m(self, magic_name, line, _stack_depth)\u001b[0m\n\u001b[1;32m 2430\u001b[0m kwargs[\u001b[39m'\u001b[39m\u001b[39mlocal_ns\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mget_local_scope(stack_depth)\n\u001b[1;32m 2431\u001b[0m \u001b[39mwith\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mbuiltin_trap:\n\u001b[0;32m-> 2432\u001b[0m result \u001b[39m=\u001b[39m fn(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 2434\u001b[0m \u001b[39m# The code below prevents the output from being displayed\u001b[39;00m\n\u001b[1;32m 2435\u001b[0m \u001b[39m# when using magics with decorator @output_can_be_silenced\u001b[39;00m\n\u001b[1;32m 2436\u001b[0m \u001b[39m# when the last Python token in the expression is a ';'.\u001b[39;00m\n\u001b[1;32m 2437\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mgetattr\u001b[39m(fn, magic\u001b[39m.\u001b[39mMAGIC_OUTPUT_CAN_BE_SILENCED, \u001b[39mFalse\u001b[39;00m):\n", | ||
"File \u001b[0;32m~/Documents/MTECH-AI/scripts/NUS/NUS-ISS/Modules/PRS/.venv_blipcaption/lib/python3.10/site-packages/tensorboard/notebook.py:117\u001b[0m, in \u001b[0;36m_start_magic\u001b[0;34m(line)\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_start_magic\u001b[39m(line):\n\u001b[1;32m 116\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"Implementation of the `%tensorboard` line magic.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 117\u001b[0m \u001b[39mreturn\u001b[39;00m start(line)\n", | ||
"File \u001b[0;32m~/Documents/MTECH-AI/scripts/NUS/NUS-ISS/Modules/PRS/.venv_blipcaption/lib/python3.10/site-packages/tensorboard/notebook.py:152\u001b[0m, in \u001b[0;36mstart\u001b[0;34m(args_string)\u001b[0m\n\u001b[1;32m 149\u001b[0m handle\u001b[39m.\u001b[39mupdate(IPython\u001b[39m.\u001b[39mdisplay\u001b[39m.\u001b[39mPretty(message))\n\u001b[1;32m 151\u001b[0m parsed_args \u001b[39m=\u001b[39m shlex\u001b[39m.\u001b[39msplit(args_string, comments\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m, posix\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m)\n\u001b[0;32m--> 152\u001b[0m start_result \u001b[39m=\u001b[39m manager\u001b[39m.\u001b[39;49mstart(parsed_args)\n\u001b[1;32m 154\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(start_result, manager\u001b[39m.\u001b[39mStartLaunched):\n\u001b[1;32m 155\u001b[0m _display(\n\u001b[1;32m 156\u001b[0m port\u001b[39m=\u001b[39mstart_result\u001b[39m.\u001b[39minfo\u001b[39m.\u001b[39mport,\n\u001b[1;32m 157\u001b[0m print_message\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m,\n\u001b[1;32m 158\u001b[0m display_handle\u001b[39m=\u001b[39mhandle,\n\u001b[1;32m 159\u001b[0m )\n", | ||
"File \u001b[0;32m~/Documents/MTECH-AI/scripts/NUS/NUS-ISS/Modules/PRS/.venv_blipcaption/lib/python3.10/site-packages/tensorboard/manager.py:415\u001b[0m, in \u001b[0;36mstart\u001b[0;34m(arguments, timeout)\u001b[0m\n\u001b[1;32m 388\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mstart\u001b[39m(arguments, timeout\u001b[39m=\u001b[39mdatetime\u001b[39m.\u001b[39mtimedelta(seconds\u001b[39m=\u001b[39m\u001b[39m60\u001b[39m)):\n\u001b[1;32m 389\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"Start a new TensorBoard instance, or reuse a compatible one.\u001b[39;00m\n\u001b[1;32m 390\u001b[0m \n\u001b[1;32m 391\u001b[0m \u001b[39m If the cache key determined by the provided arguments and the current\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 412\u001b[0m \u001b[39m object.\u001b[39;00m\n\u001b[1;32m 413\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m 414\u001b[0m this_cache_key \u001b[39m=\u001b[39m cache_key(\n\u001b[0;32m--> 415\u001b[0m working_directory\u001b[39m=\u001b[39mos\u001b[39m.\u001b[39;49mgetcwd(),\n\u001b[1;32m 416\u001b[0m arguments\u001b[39m=\u001b[39marguments,\n\u001b[1;32m 417\u001b[0m configure_kwargs\u001b[39m=\u001b[39m{},\n\u001b[1;32m 418\u001b[0m )\n\u001b[1;32m 419\u001b[0m match \u001b[39m=\u001b[39m _find_matching_instance(this_cache_key)\n\u001b[1;32m 420\u001b[0m \u001b[39mif\u001b[39;00m match:\n", | ||
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"%load_ext tensorboard\n", | ||
"%tensorboard --logdir={dining_log_folder}/" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": ".venv_blipcaption", | ||
"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.10.8" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |
Binary file not shown.