Course material for the Multi-agents and computer graphics course

Overview

TC2008B

Course material for the Multi-agents and computer graphics course.

Setup instructions

  • Strongly recommend using a custom conda environment.
  • Install python 3.8 in the environment: conda install python=3.8 Using 3.8 for compatibility reasons. Maybe 3.9 or 3.10 are compatible with all the packages, but will have to check.
  • Installing mesa: pip install mesa
  • Installing flask to mount the service: pip install flask
  • By this moment, the environment will have all the packages needed for the project to run.

Instructions to run the local server and the Unity application

  • Run either the python web server: Server/tc2008B_server.py, or the flask server: Server/tc2008B_flask.py. Flask is considerably easier to setup and use, and I strongly recommend its use over python's http.server module. Additionally, IBM cloud example used flask.
  • To run the python web server:
python tc2008B_server.py
  • To run a flask app:
export FLASK_APP=tc_2008B_flash.py
flask run
  • You can change the name of the app you want to run by changing the environment variable FLASK_APP.

  • Alternatively, if you used the following code in your flask server:

if __name__=='__main__':
    app.run(host="localhost", port=8585, debug=True)

you can run it using:

python tc2008B_flask.py
  • To run a flask app on a different host or port:
flask run --host=0.0.0.0 --port=8585
  • Either of these servers is what will run on the cloud.
  • Once the server is running, launch the Unity scene TC2008B that is in the folder: IntegrationTest.
  • The scene has two game objects: AgentController and AgentControllerUpdate. I left both so that different functionality can be tested: AgentController works with the response of the python web server, while AgentControllerUpdate works with the reponse from the flask server.
  • I updated the AgentController.cs code, and introduced AgentControllerUpdate.cs. Each script parses data differently, depending on the response from either the python web server, or from the flask server. The AgentController.cs script parses text data, while AgentControllerUpdate.cs parses JSON data. I strongly recommend that we use JSON data.
  • The scripts are listening to port 8585 (http://localhost:8585). Double check that your server is launching on that port; specially if you are using a flask server.
  • If the Unity application is not running, or has import issues, I included the Unity package that has the scene Sergio Ruiz provided.

Instruction to run the cloud server and Unity application

Installing dependencies, and locally running the sample

# ...first add the Cloud Foundry Foundation public key and package repository to your system
wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list
# ...then, update your local package index, then finally install the cf CLI
sudo apt update
sudo apt install cf8-cli
  • To get the sample app running:
git clone https://github.com/IBM-Cloud/get-started-python
cd get-started-python
  • To run locally:
pip install -r requirements.txt
python hello.py

To deply the sample to the cloud

  • All the requiered files for the sample app to run are inside the IBMCloud folder.
  • We first need a manifest.yml file. The one provided in the example repository contains the following:
applications:
 - name: GetStartedPython
   random-route: true
   memory: 128M
  • You can use the Cloud Foundry CLI to deploy apps. Choose your API endpoint:
cf api 
   

   

Replace the API-endpoint in the command with an API endpoint from the following list:

URL Region
https://api.ng.bluemix.net US South
https://api.eu-de.bluemix.net Germany
https://api.eu-gb.bluemix.net United Kingdom
https://api.au-syd.bluemix.net Sydney
  • Login to your IBM Cloud account:
cf login
  • From within the get-started-python directory push your app to IBM Cloud:
cf push
  • This process can take a while. All the dependencies are downloaded and installed, and the app in started.
  • After you push the application, in the cloud dashboard you can see a new cloud foundry app.
  • This can take a minute. If there is an error in the deployment process you can use the command cf logs --recent to troubleshoot.
  • When deployment completes you should see a message indicating that your app is running. View your app at the URL listed in the output of the push command. You can also issue the cf apps.
  • With the cf apps command you can see the route for the app.

To deploy a custom app to the cloud

  • I created an app within the cloud foundry in the ibm cloud by following the document Manual IBM Cloud - Python.pdf.
  • Created an additional folder inside the IBMCloud folder, named boids, that contains the required files.
  • In the manifest.yml I renamed the name to the one I used for the app in cloud foundry. From GetStartedPython to Boids.
  • Then, modified the ProcFile file as follows:
web: python tc2008B_flask.py
  • Modified the setup.py file, but I do not think it matters.
  • Then changed to the boids folder, and used:
cf push
  • Then, update the url for the service in Unity with the url for the service that cloud foundry assigns.

Notes

  • Using VSCode to develop everything.
  • Although not stated in the requirements, Git needs to be installed on the system.
  • I am running windows, and using the WSL. I ran the server code in WSL, and the Unity client in windows. My WSL machine runs Ubuntu 20.
  • Using Thunder Client extension as a replacement for postman to test the apis.
  • Pip does not allow us to search anymore.
  • As of 2021-10-17, the WWWForm method to post from Unity to the web service still works with Unity 20.20.3.4. However, the support apparently is going away soon.
  • Using flask because it is ideal for building smaller applications. Django could be used, but since it is much more robust, the additional utilities were not needed for this project.
  • The demo app push process went rather smoothly, but for the boids app it did not. It took too long, and ended up failing with a timeout error. I issued the command again.
  • Timeout again. Modified the manifest, and tried again.
  • After that, the app failed when it tried to start. Apparently, numpy was missing from the requirements.

TO DO

  • [ x ] Add the mesa code instead of the Boids code.
  • [ x ] Check synchronization, clients, maybe in the cloud, most likely in flask
  • Check cloud documentation or ask for a course? Instances, connections, etc.

Dependencies

Unofficial implementation of "TableNet: Deep Learning model for end-to-end Table detection and Tabular data extraction from Scanned Document Images"

TableNet Unofficial implementation of ICDAR 2019 paper : TableNet: Deep Learning model for end-to-end Table detection and Tabular data extraction from

Jainam Shah 243 Dec 30, 2022
Automatically fishes for you while you are afk :)

Dank-memer-afk-script A simple and quick way to make easy money in Dank Memer! How to use Open a discord channel which has the Dank Memer bot enabled.

Pranav Doshi 9 Nov 11, 2022
Ocular is a state-of-the-art historical OCR system.

Ocular Ocular is a state-of-the-art historical OCR system. Its primary features are: Unsupervised learning of unknown fonts: requires only document im

228 Dec 30, 2022
Source code of our TPAMI'21 paper Dual Encoding for Video Retrieval by Text and CVPR'19 paper Dual Encoding for Zero-Example Video Retrieval.

Dual Encoding for Video Retrieval by Text Source code of our TPAMI'21 paper Dual Encoding for Video Retrieval by Text and CVPR'19 paper Dual Encoding

81 Dec 01, 2022
BNF Globalization Code (CVPR 2016)

Boundary Neural Fields Globalization This is the code for Boundary Neural Fields globalization method. The technical report of the method can be found

25 Apr 15, 2022
This is a repository to learn and get more computer vision skills, make robotics projects integrating the computer vision as a perception tool and create a lot of awesome advanced controllers for the robots of the future.

This is a repository to learn and get more computer vision skills, make robotics projects integrating the computer vision as a perception tool and create a lot of awesome advanced controllers for the

Elkin Javier Guerra Galeano 17 Nov 03, 2022
Rest API Written In Python To Classify NSFW Images.

✨ NSFW Classifier API ✨ Rest API Written In Python To Classify NSFW Images. Fastest Solution If you don't want to selfhost it, there's already an inst

Akshay Rajput 23 Dec 30, 2022
make a better chinese character recognition OCR than tesseract

deep ocr See README_en.md for English installation documentation. 只在ubuntu下面测试通过,需要virtualenv安装,安装路径可自行调整: git clone https://github.com/JinpengLI/deep

Jinpeng 1.5k Dec 28, 2022
Shape Detection - It's a shape detection project with OpenCV and Python.

Shape Detection It's a shape detection project with OpenCV and Python. Setup pip install opencv-python for doing AI things. pip install simpleaudio fo

1 Nov 26, 2022
OpenGait is a flexible and extensible gait recognition project

A flexible and extensible framework for gait recognition. You can focus on designing your own models and comparing with state-of-the-arts easily with the help of OpenGait.

Shiqi Yu 335 Dec 22, 2022
Extract tables from scanned image PDFs using Optical Character Recognition.

ocr-table This project aims to extract tables from scanned image PDFs using Optical Character Recognition. Install Requirements Tesseract OCR sudo apt

Abhijeet Singh 209 Dec 06, 2022
A curated list of resources dedicated to scene text localization and recognition

Scene Text Localization & Recognition Resources A curated list of resources dedicated to scene text localization and recognition. Any suggestions and

CarlosTao 1.6k Dec 22, 2022
GDB python tool to pretty print and debug c++ xtensor containers

gdb_xt2np GDB python tool to pretty print, examine, and debug c++ Xtensor containers. Xtensor is a c++ library for scientific computing using multidim

Christopher Burke 4 Oct 29, 2021
Automatically download multiple papers by keywords in CVPR

CVFPaperHelper Automatically download multiple papers by keywords in CVPR Install mkdir PapersToRead cd PaperToRead pip install requests tqdm git clon

46 Jun 08, 2022
Make OpenCV camera loops less of a chore by skipping the boilerplate and getting right to the interesting stuff

camloop Forget the boilerplate from OpenCV camera loops and get to coding the interesting stuff Table of Contents Usage Install Quickstart More advanc

Gabriel Lefundes 9 Nov 12, 2021
天池2021"全球人工智能技术创新大赛"【赛道一】:医学影像报告异常检测 - 第三名解决方案

天池2021"全球人工智能技术创新大赛"【赛道一】:医学影像报告异常检测 比赛链接 个人博客记录 目录结构 ├── final------------------------------------决赛方案PPT ├── preliminary_contest--------------------

19 Aug 17, 2022
Layout Analysis Evaluator for the ICDAR 2017 competition on Layout Analysis for Challenging Medieval Manuscripts

LayoutAnalysisEvaluator Layout Analysis Evaluator for: ICDAR 2019 Historical Document Reading Challenge on Large Structured Chinese Family Records ICD

17 Dec 08, 2022
Validate and transform various OCR file formats (hOCR, ALTO, PAGE, FineReader)

ocr-fileformat Validate and transform between OCR file formats (hOCR, ALTO, PAGE, FineReader) Installation Docker System-wide Usage CLI GUI API Transf

Universitätsbibliothek Mannheim 152 Dec 20, 2022
Isearch (OSINT) 🔎 Face recognition reverse image search on Instagram profile feed photos.

isearch is an OSINT tool on Instagram. Offers a face recognition reverse image search on Instagram profile feed photos.

Malek salem 20 Oct 25, 2022
Drowsiness Detection and Alert System

A countless number of people drive on the highway day and night. Taxi drivers, bus drivers, truck drivers, and people traveling long-distance suffer from lack of sleep.

Astitva Veer Garg 4 Aug 01, 2022