I am a computer scientist interested in object recognition, including machine learning and applications of convolutional neural networks. I finished my Ph.D at the University of British Columbia in April 2014 and was supervised by David Lowe.

Selected Publications

Thesis

Sancho McCann. "Object classification and localization using spatially localized features". PhD Dissertation. UBC Department of Computer Science. 2014.

Journal papers

David Meger, Per-Erik. Forssén, Kevin Lai, Scott Helmer, Sancho McCann, Tristram Southey, Matthew Baumann, James J. Little, and David G. Lowe. "Curious George: An Attentive Semantic Robot". In Robotics and Autonomous Systems Journal, Volume 56, Number 6, pp. 503—511. June 2008. [pdf]

Conference papers

Sancho McCann and David G. Lowe. "Spatially Local Coding for Object Recognition." ACCV, 2012. [pdf][poster][project page]

Sancho McCann and David G. Lowe. "Local Naive Bayes Nearest Neighbor for Image Classification." CVPR, 2012. [pdf] [project page]

David Meger, Per-Erik Forssén, Kevin Lai, Scott Helmer, Sancho McCann, Tristram Southey, Matthew Baumann, James J. Little, David G. Lowe and Bruce Dow. "Curious George: An Attentive Semantic Robot." IEEE/RSJ International Conference on Intelligent Robots and Systems, IROS 2007 Workshop: From sensors to human spatial concepts, November, 2007. [pdf]

Sancho McCann and Jacky Baltes. "Towards Automatic Image Modification as an Empirical Test of Image Segmentation." In Proc. 9th International Conference on Control, Automation, Robotics and Vision (ICARCV), 2006. [pdf]

Sancho McCann and Jacky Baltes. "Abarenbou – A Small Vision-Based Humanoid Robotic Research platform." In Proc. of the Third International Conference on Computational Intelligence, Robotics, and Autonomous Systems (CIRAS), 2005. [pdf]

Other publications

Google Scholar Profile

Projects

Spatially local coding

Visualization of features The spatial pyramid and its variants have been among the most popular and successful models for object recognition. To create a spatial pyramid representation of an image, you need to encode local visual features as elements of a visual vocabulary and then pool these encoded features into histograms at several spatial granularities. In this project, we introduce spatially local coding, an alternative way to include spatial information in the image model. Instead of only coding visual appearance and leaving the spatial coherence to be represented by the pooling stage, we include location as part of the coding step. This is a more flexible spatial representation as compared to the fixed grids used in the spatial pyramid models and we can use a simple, whole-image region during the pooling stage. On the Caltech 101 and 256 object recognition datasets, this model performs better than all previous single-feature methods.

More details, code: [Project page]

Sancho McCann and David G. Lowe. "Spatially Local Coding for Object Recognition." ACCV, 2012. [pdf][poster]

Local Naive Bayes Nearest Neighbor

Local Naive Bayes Nearest Neighbor improves upon the NBNN image classification algorithm. It increases classification accuracy and allows NBNN to scale to large numbers of object classes. We observed that in NBNN, only the classes with features in the local neighborhood of a descriptor get significant and reliable updates to their posterior probabilities. Instead of maintaining a separate search structure for each class, we merge all of the reference data together into one search structure, allowing quick identification of a descriptor's local neighborhood across all classes. By ignoring adjustments to the more distant classes, local NBNN gives higher classification accuracy and its run time grows with the log of the number of classes rather than linearly. This gives a 100 times speed-up over original NBNN on the Caltech 256 dataset. We also show the first head-to-head comparisons of NBNN against spatial pyramid methods using a common set of input features. We found that local NBNN outperforms all previous NBNN based methods and the original spatial pyramid model. However, local NBNN does not beat state-of-the-art spatial pyramid methods that use local soft assignment and max-pooling.

More details, code: [Project page]

Sancho McCann and David G. Lowe. "Local Naive Bayes Nearest Neighbor for Image Classification." CVPR, 2012. [pdf]

Sancho McCann and David G. Lowe. "Local Naive Bayes Nearest Neighbor for Image Classification", Technical Report TR-2011-11, Department of Computer Science, University of British Columbia, 2011. [@ UBC] [@ arXiv]

Sancho McCann and David G. Lowe. "Object Categorization Using Sparse Nearest Neighbor Distances for Improved Accuracy and Scalability", 1st IEEE Workshop on Kernels and Distances for Computer Vision, 2011. [poster]

Humanoid Robot

I worked with Dr. Jacky Baltes on a small-size humanoid robot named Abarenbou. The vision system used a camera detached from an early Sony Clié. All processing was done on the Sony Clié. We coded in C and cross compiled for the ARM processor. I developed a rule-based behaviour system for finding, approaching, and kicking the ball. I manually tuned the walking gait using custom software. Abarenbou was our entry in the 2005 FIRA RoboWorld Cup.

Sancho McCann and Jacky Baltes. "Abarenbou – A Small Vision-Based Humanoid Robotic Research platform." In Proc. of the Third International Conference on Computational Intelligence, Robotics, and Autonomous Systems (CIRAS), 2005. [pdf]

Robot Airplane

During my last term at the University of Manitoba, a small group of us assembled to form the Unmanned Aerial Vehicle team. We prepared an entry to the Association for Unmanned Vehicle Systems International's student competition. Our goal was to have our airplane take-off, fly a search pattern, and land. All autonomously. While in the search area, a video feed was fed to an ground-based observing station, where an observer was to mark targets of interest and report their coordinates. Grading was based on accomplishing the mission autonomously, and the accuracy of our coordinates. We found good teammates, advisors, and sponsors. We placed 1st out of 17 teams in a field that included BYU, University of Texas, Cornell, MIT, and UCSD. I wrote much of the computer vision code, transforming the video's pixel coordinates to GPS coordinates, and giving that information to the observer in an easy to use interface.

Paul Furgale, Sancho McCann, Jim Majewski, Andrew Bugera, and Kory Zelickson. "Team Manitoba 2006 AUVSI Student Competition Project Description." Association for Unmanned Vehicle Systems International (AUVSI): 4th Annual Student Unmanned Aerial Vehicle Competition, Lexington Park, MD, 2006 [pdf]

AtmosView: Visualization Redesign

I created AtmosView, a redesigned visualization of atmospheric sounding data. Relationships between temperature, dewpoint, and the lifting of imaginary parcels of air help people predict soaring conditions, atmospheric stability, and the likelihood of severe weather. The existing diagrams that display these relationships have been described as the most difficult atmospheric diagrams to read. The re-design uses well tested information visualization principles to show data to the user that was previously hidden behind lines and frames. This not only helps readers see the information on individual charts, but allows them to more easily compare between multiple charts. I hope that AtmosView can help people with an amateur interest in these meteorological relationships.

Sancho McCann. "Atmospheric Sounding Visualization." Project report. [pdf]

Resume

Education

Ph.D. (Computer Science), University of British Columbia — 2014

Languages and Technologies

Python: 2.x, NumPy, SciPy, Matplotlib, Cython

C/C++: C++11, Boost, Google Test, Protocol Buffers, Apache Thrift

Scala: Play 2.x, Slick

Computer vision: Custom algorithm research, design, implementation, evaluation. OpenCV. Convolutional and recurrent neural networks using Caffe, Torch, TensorFlow.

Employment

Research Assistant, University of Manitoba — 2005

I worked with Dr. Jacky Baltes in the Autonomous Agents Laboratory on a small, humanoid robot. I wrote vision algorithms and developed a stable walking gait for the robot.

Research and Development, Frantic Films — 2006

I did production work for Superman Returns and software development for their rendering pipeline.

Software Engineer Intern, Google — 2010, 2011

In 2010, I helped develop a prototype Android application with the Geo/Street View team.

In 2011, I worked on improving the automatic organization of YouTube data.

Head of Research and Development, Shelfie — 2014-2017

Shelfie was an app that automatically identified books in photos that our users took of their bookshelves. We used that information to help people find the next book they might want to read and to give them free eBook versions of their paper books. I wrote most of the automatic recognition system, including feature-based nearest-neighbor matching, text-recognition, and convolutional neural networks. I created custom validation datasets and tools for quality control pre-release and in production. I managed our SRED and IRAP projects, drafted patent applications, and mentored teammates when they helped with this research.

Leadership, Volunteering, Hobbies

I have a Commercial Pilot Licence and a Class 1 Flight Instructor Rating. I got most of my flight experience as a flight instructor at Flying Colors Pilot Training and flew with their precision flight team. I've also delivered flight training to Canadian Forces pilots taking their Primary Flight Training and have held a Class 2 Aerobatic Flight Instructor rating. I won the John C. Webster Memorial Trophy. Today, I stay current by flying recreationally around the lower mainland of British Columbia.

I was a member of the Canadian Forces in the Cadet Instructor Cadre. I helped administer the training of the Royal Canadian Air Cadets. My duties included organizing training programs, supervision and development of instructors, administrative work, and many ad-hoc leadership roles. I've developed and taught an introductory level aviation course.

During my time at UBC, I held several volunteer roles in the Department of Computer Science at UBC. I led activities for TechTrek and GirlSmarts, two outreach programs the department organizes. I was a member of the department's recruiting and admissions committee. I've mentored a junior TA and helped develop and deliver the TA training program. I was the president of the Computer Science Graduate Student Association. I was a councilor representing the computer science graduate students in UBC's Graduate Student Society.

I played competitive ultimate and held leadership roles with UBC Ultimate, Refinery, and Blackfish. I'm an amateur short-distance sprinter.