Patrick Virie
Chatavut Viriyasuthee

My GitHub


A natural language processing engine that reads and extracts the class of the given word from wikipedia. For example: Athena → goddess, Apple → fruit, etc. This is my first official venture into the natural language processing domain. Thank Stanford CoreNLP tool for making this possible and painless. Manning, Christopher D., Surdeanu, Mihai, Bauer, John, Finkel, Jenny, Bethard, Steven J., and McClosky, David. 2014. The Stanford CoreNLP Natural Language Processing Toolkit. In Proceedings of 52nd Annual Meeting of the Association for Computational Linguistics: System Demonstrations, pp. 55-60.


Reflext is a tool that enhances daily work flow of a specific product. With a combination of simple algorithms such as naive bayes, Viterbi, and neural networks, I implemented a simple mimicry of spinal reflect behavior into the software.


Scout is a language set used for describing work-flow of any processes as a set of paths within graphes. Primarily, it can be used as an interactive help system that can actually help anyone including those who create the help. It provides the search-for-how system that produces a series of step-by-step routines in response to query of anything.

Deep hand-drawing recognition

Using deep belief network, I successfully implemented a reconizer for hand-drawing figures designed primarily to be used in mobile environment.


A generic pattern matcher technique using a heirarchy of Hough-related algorithm to build-up a set of features from bottom-to-top. This project is a product of NDR solution (Japan).

Generic target planning by maximizing configuration value functions

This is my final project for CS 765B Winter 2010 Mobile Robotics at McGill. This project involves the formulation of the optimal formation problem for a group of non-holonomic agents. The report is kept here .


I had been involved in the development of an AI that is used to control an unmanned car using data from one laser range finder and two cameras to extract road boundaries information. This project had been done in the name of Engineering Innovator Club (EIC) during my last year and later on in Chulalongkorn University. The video archive can be found here .


Plasma-Z was one of the famous RoboCup small-size league teams from Thailand. My role in the team involves developing a visual feedback system and a strategy-level artificial intelligence. Our team's final match with CM-Dragon at Georgia tech, Atlanta 2007 was considered to be one of the best match in the history of SSL with the draw of the two teams during the normal play. The winner, CM-Dragon, was designated in penalty kicks.


At EIC, I had some experience in RoboCup rescue competition with a team named Xiphias. There, my work spans broadly from writing microcontroller commands to developing user interface for controlling robots.

Predicting 3D ball's trajectory from 2D path in Robocup soccer

This is my final project for CS 650 Fall 2009 Machine learning at McGill. The original problem had been derived from one of the topics in RoboCup SSL where we wish to estimate ball trajectory in the air from a monocular image sequence. The problem can be solved optimally using the Levenberg-Marquardt nonlinear least squares algorithm. However, with a good initial guess provided by a properly trained neural network, the optimization time can be significantly reduced. The presentation can be found here.

A Time series approach to classification of traffic signs

This project had been presented in the Knowledge Discovery from Time Series course at Chulalongkorn University. I proposed an algorithm to transform traffic sign images into time series and a rotation-invariant algorithm for classifying them in a supervised manner.

ANN for speech recognition

My final project of the Autonomous Speech Recognition course at Chulalongkorn University. I trained a neural network for the speech recognition purpose. Though the results were not quite satisfactory. This project had provided me an insight in the artificial neural networks.

Learning compatibility coefficient in Relaxation Labeling processes

This project had been presented as my final project for CS 766 Winter 2010 Shape Analysis at McGill. This is an inverse of the Relaxation labeling method through the attempt to recover the parameters of the Relaxation labeling operation by comparing raw data and results. The presentation can be found here.

Ray tracing project

As my final project of CS 557 Fall 2009 Computer Graphics at McGill, it was the time when I was attracted to art. The images are collected in my CG gallery.

Human skeleton from monocular images

This is the senior project submitted to partially fulfill my Bachelor's degree. I applied the particle filter to solve the human pose estimation problem with moderate degrees of freedom in a sequence of monocular images. The report was orginally written in my native language. This project had granted me a significant understanding in optimization. I had become enlightened in the entire field not only the MC-based approaches but also other convex optimization methods.