Install CUDA in ubuntu

We can install CUDA library (for using a GPU) by the following command.

sudo apt install nvidia-cuda-toolkit

however it will install the latest release (CUDA 11) which is not supported by many research projects in machine learning yet.

from: https://docs.nvidia.com/deploy/cuda-compatibility/index.html

To install a specific version of CUDA, check the linux driver version using the command “nvidia-smi”, if not satisfy you need to update the linux driver.
Then download CUDA .deb files from
https://developer.nvidia.com/CUDA-TOOLKIT-ARCHIVE

Installation Instructions:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda-10-2
sudo apt-get -y install cuda    <- need 1 hr++ to download the upgrade packages needed for installationsudo apt-get -y install cuda-10-2
$ wget http://developer.download.nvidia.com/compute/machinelearning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-
1_amd64.deb
$ sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
$ sudo apt-get update

Then, link the current CUDA version to path environment

#maybe not important to do
export CUDA_HOME=/usr/local/cuda-10.2
export CUDA_ROOT=/usr/local/cuda-10.2
export PATH=$PATH:$CUDA_HOME/bin:$CUDA_HOME/include:$CUDA_HOME
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH:$CUDA_HOME/include
export CUDA_INC_DIR=$CUDA_INC_DIR:$CUDA_HOME:$CUDA_HOME/include

#sudo dpkg -i cuda-repo-ubuntu1804_10.2.89-1_amd64.deb
sudo dpkg -i libcudnn8_8.0.3.33-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.3.33-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.3.33-1+cuda10.2_amd64.deb

Download cudnn ( a GPU-accelerated library for deep neuron networks) version that match the CUDA from
https://developer.nvidia.com/rdp/cudnn-archive

Check current version of CUDAcat /usr/local/cuda/version.txt
nvcc –version
Check cudnn versioncat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
open bashrc file.gedit .bashrc
reload bashrc, after change it content.source ~/.bashrc
check symbolic link in the folderls -l /usr/local/
create symbolic linkln -s <source_file_directory> <link_file_directory>
print environment variableenv
env | grep -i cuda
rm filename
Useful commands

cat is use for print the detail inside a file.
.bashrc is a file that contains shell configurations and variable of the system.

dpkg is a tool to install, build, remove and manage Debian packages.
-i : install
-p : purge

qt windows deployment

Install Qt Creator 4.11.2
Based on Qt 5.14.2 (MSVC 2017, 32 bit) (64bit?)

ตอนสร้างโปรเจคให้ เลือก qmake ไว้ด้วย

ใน .pro  ใส่ลิงค์ lib ของ opencv

LIBS += C:\opencv3.4.10\build\x64\vc15\lib\opencv_world3410d.lib \
C:\opencv3.4.10\build\x64\vc15\lib\opencv_world3410.lib

ใน project build setting ถ้าเลือก shadow build (เลือกไว้อยู่)  โปรแกรมมันจะไปสร้าง build folder ใหม่ แยกออกจาก project folder

เขียนโค๊ด>run qmake> run build ตามปกติใน qt creator ก็จะได้หน้าต่างโปรแกรม

ข้างในโฟลเดอร์ debug ที่ถูกสร้างขึ้นจากการ build ในตอนแรก

แต่ว่าถ้าเอาโฟลเดอร์นี้ไปเปิดในคอมเครื่องอื่น มันจะขึ้น System error. Qt5Core.dll not found

วิธีแก้

เขียนโฟล์เดอร์ของ qt เพิ่มเข้าไปใน windows environment path

ตอนที่จะสร้างไฟล์สำหรับ deploy

ให้ลบไฟล์อื่นๆ เหลือแค่ โปรแกรมของเรา.exe  แล้วเปิด cmd ในโฟลเดอร์นั้น

พิมพ์ windeployqt.exe –quick .

คำสั่งนี้จะสร้างไฟล์อื่นๆที่เกี่ยวข้องในการรันโปรแกรมมาไว้ในโฟลเดอร์นี้ให้

แต่ว่า .dll ของ opencv ต้อง manual copy จาก C:\opencv3.4.10\build\x64\vc15\bin มาวางไว้ใน build folder เอง

เสร็จแล้วก็ copy ทั้งโฟลเดอร์ไปรันในคอมเครื่องอื่นได้ละ

 

ปล. เจอหนัสือ opencv+qt น่าสนใจ

Computer Vision with OpenCV 3 and Qt5 : build visually appealing, multithreaded, cross-platform computer vision applications

https://github.com/PacktPublishing/Computer-Vision-with-OpenCV-3-and-Qt5

 

Posted in qt

ATR talks note

Robot = special purpose, single task.

Human = tolerant of variability, style matter.

Risk is subjective.

Risk = probability of error * cost of error

Perturbation(การรบกวน) response implements risk-aware reflexion.

Knowing how to respond to the error, make a robot more like a human.

  1. Risk awareness: plan for error
  2. Multiple options: change plan
  3. Flexible behavior : many tasks

ส่งเมลล์ด้วยphp

อัพโหลด ไฟล์ .php ขึ้น server ก็ส่งเมลล์ได้เลย (นึกว่าต้องเช่า server แบบ vps เพื่อส่งเมลล์ผ่าน node.js)

<?php
$to = “—————“;
$subject = “Hello ononon”;
$txt = “test sending email”;
$headers = “From: admin@bumbleplay.com”;   >> ใช้ headers ในการระบุชื่ออีเมลล์ต้นทาง

// Sending email
if(mail($to,$subject,$txt,$headers)){
echo ‘Your mail has been sent successfully.’;
} else{
echo ‘Unable to send email. Please try again.’;
}
?>

Posted in web

Visual studio : Property manager for saving library setting

ปกติจะใช้ opengl / opencv ก็ต้องค่อย add include directories, library directories, add dependancies ทุกครั้งที่สร้างโปรเจคใหม่

แต่ถ้าหากว่า เรามา add library ผ่าน Property Manager แล้ว จะสามารถ save ค่านั้นไว้ ใน Property Sheet

พอสร้างโปรเจคใหม่ ก็แค่ add Property Sheet ไม่กี่คลิ๊ก ช่วยประหยัดเวลาได้เยอะ

วิธีทำ 1. search หา Property Manager จากตรงช่อง Quick Lunch, ก็จะเห็น list project ที่มีอยู่ใน solution ปัจจุบัน

2. กดปุ่ม New Project Property Sheet

3. คลิ๊กขวา ที่ Property Sheet ที่สร้าง > Properties , แล้ว link library ตามปกติ  ค่าที่เซ็ตไว้ก็จะ save อยู่ในไฟล์ Property Sheet

4. กดเลือกโปรเจคที่ยังไม่ได้ link library แล้ว กดปุ่ม Add Existing Property Sheet, แล้วก็เลือกไฟล์  Property Sheet

5. ก็จะเห็นว่า ที่ Projectที่สอง มี Property Sheet ที่ถูกเซ็ตเอาไว้ใน Project ก่อนหน้า

ลองกด Properties ดู ก็มี link library อยู่ครบ

import csv file to excel with utf8

.csv file ของ questionnaire data ที่ download มาจาก google forms ถ้าเปิดใน excel ตรงๆ ภาษาที่ไม่ใช่ภาษาอังกฤษจะเพี้ยน

 

แก้ โดย เปิด excel new file ขึ้นมา แล้ว import data เอา จะสามารถเลือก ภาษาเป็น utf8ได้

 

 

 

python opencv

พอดีว่าจะลอง tutorial  Simple Background Estimation in Videos using OpenCV (C++/Python)

ลองรันโค๊ดpython  จำได้เคยinstall python anoconda อยู่

ลองเสิร์จหาดู ไปอยู่ในโฟลเดอร์ C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64

ก็เอา โฟลเดอร์นี้ไป add ใน environment path จะได้เรียก python ผ่าน command line ได้

run  cmd as administrator จะได้ install library ได้

python -m pip install numpy

python -m pip install opencv-python

python -m pip install scikit-image

python -m pip install scipy

cd  C:\learnopencv-master\VideoBackgroundEstimation

python removeVideoBg.py รันโปรแกรม

เป็นโปรแกรมตัด background ของวีดีโอ โดยที่มุมกล้องไม่ขยับ

ตอนแรกโปรแกรมก็จะคำนวณ background ของ video โดยหาค่า median  แล้วก็โชว์ภาพbgที่คำนวณได้

พอเราปิดหน้าต่างรูป bg  โปรแกรมจะโชว์วีดีโอที่ตัด bg ออกแล้ว

 

c++ build

 

เปิด cmakeแล้วก็ ระบุ source กับ build folder

ที่เหลือ โปรแกรมจะเรียกอ่านไฟล์ CMakeLists.txt เอง

แต่ว่าเราต้องกำหนด path openCV ไว้ใน environment ก่อน

ถ้าไม่ใส่ bin folder  ตอนรัน visualstudio มันจะ error หา dll ไม่เจอ

ถ้าไม่ใส่ build folder,  ถึงแม้เราจะกำหนดเอง cmake จะหา build folder ของ opencv ไม่เจอ

 

 

 

 

 

 

แต่ว่าโปรเจค c++ รันแล้วไป error ตรงเปิดวีดีโอแฮะ

คือว่า วีดีโอกับ ตัวโปรแกรมไม่ได้อยู่โฟสเดอร์เดียวกันละ

เลยต้องมาเซ็ต command argument ให้ visualstudio อ่าน video pathที่กำหนดไว้

python upgrade

C:\ProgramData\Anaconda3>python -m pip install –upgrade pip

C:\ProgramData\Anaconda3>python -m pip install numpy –upgrade

 

https://pythonprogramming.net/introduction-deep-learning-python-tensorflow-keras/

ข้อเสียของ python

-debug ไม่ได้ ถ้าลืมประกาศตัวแปร มันก็ไม่เตือนเรา