An Active Patch Model for Real World Texture and Appearance Classification

    In this work, we develope a simple and intuitive method called Active Patch model that performs at state of the art on datasets ranging from homogeneous texture (e.g., material texture), to less homogeneous texture (e.g., the fur of animals), and to inhomogeneous texture (the appearance patterns of vehicles). The feature extraction is fast using GPUs.
    Here, we briefly introduce model. Please see more details in our ECCV 2014 paper: [pdf].
    The datasets contain animal fur texture (AniTex) and vehicle appearance (VehApp) used in the paper are available here: [AniTex] [VehApp].

  • What is Active Patch?
    Active patches are raw intensity patches which can undergo spatial transformations (e.g., rotation and scaling) and adjust themselves to best match the image regions.

  • What are the requirements of the active patch dictionary?
    The dictionary of active patches is required to be compact and representative, in the sense that we can use it to approximately reconstruct the images that we want to classify.

  • How to learn an active patch dictionary?
    We propose a probabilistic model to quantify the quality of image reconstruction given a set of candidates active patches, and design a greedy learning algorithm to select the dictionary elements.

  • After learning the dictionary, how to obtain the feature representation for testing image?
    For a testing image, we adopt the matching frequencies of the active patches in the dictionary as the image feautres.

  • How to accelerate the feature extraction process?
    To utilize the parallization power of GPUs, in our implementation, each active patch contains a basic patch and a set of deformed patches. The deformed patches are derived by the trasnformations (e.g. rotation and scaling) of the basic patch. We then transfer the matching problem between an image and a set of active patches to a problem of matrix multiplication where the matrixes are composed of the deformed patches. We utilize highly optimized matrix operation packages (i.e. Matlab Distributed Computing Tool Box and CUDA with cudablas library) to efficiently solve this problem.