Labels

Linux (6) OpenCV (4) Deep Learning (3) MATLAB (3) Mac OS X (3) Windows (2) C# (1) Node JS (1)

2017年9月6日 星期三

Top Conferences in Data Mining, Computer Vision and Artificial Intelligence

Note: The conferences are sorted by deadline.

Data Mining

Short Name
Full Name
Deadline
When
KDD
Knowledge Discovery and Data Mining
February
August
ASONAM
Advances in Social Networks Analysis and Mining
March
July/Aug.
ECML + PKDD
The European Conference on Machine Learning & Principles and Practice of Knowledge Discovery in Databases
April
September
CIKM
IEEE International Conference on Information and Knowledge Management
May
November
ICDM
IEEE International Conference on Data Mining
June
November
WSDM
Web Search and Data Mining
August
February
ICDE
International Conference on Data Engineering
Sep./Oct.
April
SDM
SIAM International Conference on Data Mining
October
May
PAKDD
The Pacific-Asia Conference on Knowledge Discovery and Data Mining
Oct./Nov.
May

Computer Vision & Image Processing

Short Name
Full Name
Deadline
When
ICIP
International Conference on Image Processing
January
September
SIGGRAPH
Computer Graphics and Interactive Techniques
January
August
ICPR
International Conference on Pattern Recognition #
January
August
ECCV
European Conference on Computer Vision#
February
September
ICCV
International Conference on Computer Vision*
March
October
ACM MM
ACM International Conference on Multimedia
April
October
BMVC
British Machine Vision Conference
May
September
CVPR
Computer Vision and Pattern Recognition
November
June/July
ICME
International Conference on Multimedia and Expo
December
July
# Every even year  * Every odd year

Machine Learning & Artificial Intelligence

Short Name
Full Name
Deadline
When
IJCAI
International Joint Conference on Artificial Intelligence
February
August
ICML
International Conference on Machine Learning
February
August
NIPS
Neural Information Processing Systems Conference
May
December
AAAI
American Association for AI National Conference
September
February
ICLR
International Conference on Leanring Representations
October
April/May

Robotics

Short Name
Full Name
Deadline
When
IROS
International Conference on Intelligent Robots & Systems
March
September
ICRA
International Conference on Robotics and Automation
September
May

2017年5月2日 星期二

Deep Learning Reading List (Tools, Tutorials, Papers)

Deep Learning Fundamentals
R. Pieters
Python for image understanding link
A good talk for beginners
Chih-Fan Hsu, Chun-Ming Chang
手把手的深度學習實務
(slides) (labs) (github)
Great training course in Chinese, made by Data Insights Research Lab in Academia Sinica
Neural networks and deep learnings
A very comprehensive tutorial written by Michael Nielsen
Christopher Olah
A good blog to visualize NN
Geoffrey E. Hinton et al.
The breakthrough paper that introduces restricted Boltzmann machines and stacked deep-belief networks
Y LeCun,
Y Bengio,
G Hinton
Deep Learning, Nature, 2015
Review paper written by fathers of neural networks
Deep Learning Tools
TensorFlow
Open source library developed by Google with C++ core and Python interface
Keras
A wrapper for Theano and Tensorflow, very user friendly.
Theano
DL library for Python developed by Université de Montréal
Caffe2
A fast and scalable C++ DL framework for visual recognition. Based on Caffe from UC Berkely
Deep Reinforcement Learning
Tambet Matiisen
Great introduction. Algorithms are implemented with Neon
Arhtur Juliani

Open AI Gym
A framework let your RL algorithms play video games
Mnih, et al.
Human-Level Control through Deep Reinforcement Learning, Nature, 2015
Deep Q-network (DQN) by Google Deep Mind (code)
David Sliver, Aja Huang et al.
Paper of AlphaGo, period.
DL for Image Classification and Object Detection
An image database with 14 million images organized according to the WordNet hierarchy
Hold the Large Scale Visual Recognition Challenge (ILSVRC) challenges every year
Alex Krizhevsky
Ilya Sutskever
Geoffrey E. Hinton
First successful deep network for image classification, aka AlexNet

Karen Simonyan, Andrew Zisserman
Winner of ILSVRC 2014
C. Szegedy et al.
Google Research
Going Deeper with Convolutions, CVPR 2015
GoogLeNet
K. He et al.
Microsoft Research
CVPR 2016 best paper and winner of ILSVRC 2015, aka ResNet
DL for Image Annotations
A. Karpathy
Li Fei-Fei
Deep Visual-Semantic Alignments for Generating Image Descriptions, CVPR 2015

Justin Johnson
Andrej Karpathy
Li Fei-Fei
DenseCap: Fully Convolutional Localization Networks for Dense Captio, CVPR 2016

DL for Video Applications (CVPR 2016)
Ting Yao et al.
Highlight Detection with Pairwise Deep Ranking for First-Person Video Summarization [pdf] 

Michael Cgyli et al.
Video2GIF: Automatic Generation of Animated GIFs from Video [pdf] 
B. Tekin et al.
Direct Prediction of 3D Body Poses from Motion Compensated Sequences [pdf] 

Bingbing Li. et al.
Progressively Parsing Interactional Objects for Fine Grained Action Detection [pdf] 

Pingbo Pan et al.
Hierarchical Recurrent Neural Encoder for Video Representation With Application to Captioning [pdf] 

Zheng Shou, Dongang Wang, Shih-Fu Chang
Temporal Action Localization in Untrimmed Videos via Multi-stage CNNs [pdf] 

Ziwei Liu et al.
DeepFashion: Powering Robust Clothes Recognition and Retrieval With Rich Annotations [pdf]

Xiaofan Zhang et al.
Embedding Label Structures for Fine-Grained Feature Representation [pdf]

Other Video Applications (CVPR 2016)
Jingjing Meng et al.
From Keyframes to Key Objects:
Video Summarization by Representative Object Proposal Selection [pdf] 


K.  Grauman et al.
Summary Transfer: Exemplar-based Subset Selection for Video Summarization [pdf] 

Feng Zhou, Yuanqing Lin
Fine-Grained Image Classification by Exploring Bipartite-Graph Labels [pdf]

2017年3月27日 星期一

Build a Nvidia CUDA server with Ubuntu 16.04 in 4 steps



*First of all, if you start from a brand new server, I suggest to install Ubuntu 16.04 WITHOUT NVIDIA graphics cards first. This will prevent Ubuntu from automatically installing open-source NVIDIA driver Nouveau. Nouveau may cause issues like black screen, lightdm crash, ..., to name a few. It's highly possible that you will see NOTHING at the inital boot if you install Ubuntu 16.04 directly with NVIDIA cards.

Once you can login the Ubuntu server, install CUDA following the 4 steps below:

1. Disable Nouveau
If you are running Desktop version, enter the terminal screen by typing
Ctrl+Alt+F1

Open or create "blacklist-nouveau.conf":

sudo vim /etc/modprobe.d/blacklist-nouveau.conf

Add following commands to the file:

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

Then build the new kernel:

sudo update-initramfs -u


2. Install NVIDIA driver
You can try install NVIDIA driver directly:

sudo apt-get install nvidia-375

*If apt-get cannot find nvidia driver
we need to add the ppa manually. The commands below are referred from here:
Although you can also install the drivers included in the CUDA toolkit. I suggest to install from Ubuntu ppa:
sudo apt-add-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo service lightdm stop
sudo apt-get purge nvidia-*
sudo apt-get install nvidia-375


Once the driver is installed, reboot your system, then test the driver by typing:

nvidia-smi

And you will see the NVIDIA cards installed in your system:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39                 Driver Version: 375.39                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1080    Off  | 0000:02:00.0      On |                  N/A |
|  0%   43C    P8     8W / 200W |    294MiB /  8107MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1080    Off  | 0000:82:00.0     Off |                  N/A |
|  0%   38C    P8     8W / 200W |      1MiB /  8114MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                            
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      1430    G   /usr/lib/xorg/Xorg                             144MiB |
|    0      2549    G   /usr/bin/compiz                                148MiB |
+-----------------------------------------------------------------------------+



3. Install CUDA Toolkit
Download CUDA toolkit from NVIDIA official site:
https://developer.nvidia.com/cuda-downloads

Remember to select runfile (local)

sudo ./cuda_8.0.61_375.26_linux.run --override

As we already installed NVIDIA driver, we choose "NOT" to install driver this time:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
(y)es/(n)o/(q)uit: n


Because Ubuntu 16.04 has latest gcc 6, which is not supported by CUDA. The --override flag force the installer to ignore unsupported gcc version.

Once installation is done, you may notice there is a warning:
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
To install the driver using this installer, run the following command, replacing with the name of this run file:
sudo .run -silent -driver


Don't worry, we can ignore this message.


4. Downgrade gcc to 4.9
Finally, we need to downgrade the gcc/g++ version in Ubuntu to < 5.0. Somebody may suggest to remove check line in CUDA library's header file. Don't do this, it will cause compiler error. Downgrade the gcc with "update-alternatives":


sudo apt-get install g++-4.9 gcc-4.9 libgcc-4.9

sudo update-alternatives --remove-all gcc 
sudo update-alternatives --remove-all g++

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20

sudo update-alternatives --query gcc
sudo update-alternatives --query g++

2016年1月28日 星期四

Installing Node.js + ZeroMQ on Windows

ZeroMQ (ZMQ, 0mq) is a great TCP/IP libray wrapper and lightening fast for exchanging messages. Node.js is also famous for speed, so the two combined together can make a powerful distributed cloud server. However since ZeroMQ depends on OS level library, we need to re-compile ZeroMQ if we wants to use it in Node.js. This makes some challenges on installing on Windows. (If you didn't encounter any problem, Congratulations!)

The first problem we may encounter is:

The builds tools for v120 (Platform Toolset = 'v120') cannot be found

Because the default compiler is VS 2012. 

Thanks for this post:

Cannot install node modules that require compilation on Windows 7 x64/VS2012

npm install zmq --msvs_version=2015

Just add msvs_version=.... then you can compile with any version of visual studio. Remember to install windows SDK first.

A final reminder is

Nodejs cannot find installed module on Windows?

To use ZMQ globally, add an environment variable NODE_PATH=%AppData%\npm\node_modules


That's it. Enjoy ZMQ!

2015年3月31日 星期二

Connect to Microsoft SQL Server 2012 using PHP PDO on Ubuntu

Microsoft SQL (MSSQL) databases provide a Open Database Connectivity (ODCB) interface for accessing data. First we need to enable TCP/IP connection of MSSQL in SQL Server Configuration Manager:
1. Right click to enable TCP/IP

2. Double-click to set TCP/IP port (default is 1433)


3. Restart MSSQL service

4. Also remember to open MSSQL listening port 1433 on Windows Firewall.



At the Ubuntu side, we use PHP and PHP Data Objects (PDO) for connection. PDO is a powerful tool that can connect all kinds of databases, with appropriate driver installed.


1. Enable PDO ODBC
sudo apt-get install php5-odbc


2. we also need to install unixodbc and FreeTDS (ref.). Luckily we can easily install them through apt-get:
sudo apt-get install unixodbc tdsodbc


3. After installing necessary libraries, we need to configure our Data Source Name (DSN) in /etc/odbc.ini and /etc/odbcinst.ini (from this ref.)

/etc/odbc.ini
 # Define a connection to a Microsoft SQL server  
 # The Description can be whatever we want it to be.  
 # The Driver value must match what we have defined in /etc/odbcinst.ini  
 # The Database name must be the name of the database this connection will connect to.  
 # The ServerName is the name we defined in /etc/freetds/freetds.conf  
 # The TDS_Version should match what we defined in /etc/freetds/freetds.conf  
 [MSSQL_DSN]  
 Description   = Microsoft SQL server   
 Driver        = freetds  
 Database      = Your_DB  
 ServerName    = MY_SERVER  
 TDS_Version   = 7.0  

/etc/odbcinst.ini
 # Define where to find the driver for the Free TDS connections.  
 # Make sure you use the right driver (32-bit or 64-bit).  
 [freetds]  
 Description = MS SQL database access with Free TDS  
 Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so  
 Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so  
 #Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so  
 #Setup = /usr/lib/i386-linux-gnu/odbc/libtdsS.so  
 UsageCount = 1  

/etc/freetds/freetds.conf
 #Define a connection to the Microsoft SQL Server  
 [MY_SERVER]  
   host = 192.168.1.10  
   port = 1433  
   tds version = 7.0  


4. Restart Apache server to enable the ODBC features
sudo service apache2 restart


5. Finally we can use ODBC in PDO as below:
$DB_conn = new PDO('odbc:MSSQL_DSN', 'sa', 'password');


2014年12月11日 星期四

Adding iBeacon to TI CC254x

The iBeacon is Apple's indoor positioning technology based on Bluetooth Low Energy (BLE). In fact the iBeacon information is embedded in BLE advertisement Protocol Data Unit (PDU). The packet format of iBeacon is as below:



In the source code of TI CC254x, we can find the advertisement data, which is called static uint8 advertData[]. The iBeacon code and simple explanations are:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// GAP - Advertisement data (max size = 31 bytes, we use 30 bytes)  
 static uint8 advertData[] =  
 {  
  0x02,  // length of first data structure (2 bytes excluding length byte)  
  0x01,  // AD Type = Flags  
  0x1A,  // Flags value  
   
  0x1A,  // length of second data structure (26 excluding length byte)  
  0xFF,  // GAP_ADTYPE_MANUFACTURER_SPECIFIC  
   
  0x4c, 0x00,  // Company ID (0x4C00 = Apple)   
  0x02, 0x15,  // iBeacon AD indicator  
    
  // Device UUID (16 bytes)  
  0xB9, 0x40, 0x7F, 0x30, 0xF5, 0xF8, 0x46, 0x6E,   
  0xAF, 0xF9, 0x25, 0x55, 0x6B, 0x57, 0xFE, 0x6D,  
   
  0x00, 0x01,  // Major No. for a group of beacons  
  0x00, 0x01,  // Minor No. for each beacon  
  0xC5, // -59 dBm TX power  
 };