From d05b1e3fda80eb524efd2a676a278ecbfad620b2 Mon Sep 17 00:00:00 2001 From: qmac Date: Wed, 25 Apr 2018 23:24:24 -0500 Subject: [PATCH] doc updates --- docs/_includes/_replacements.rst | 2 +- docs/config.rst | 2 +- docs/graphs.rst | 2 +- docs/installation.rst | 10 +- docs/quickstart.rst | 76 +++++------ docs/reference.rst | 3 +- docs/transformers.rst | 4 +- examples/Quickstart.ipynb | 128 +++++++++--------- examples/Vision APIs.ipynb | 4 +- pliers/extractors/api/google.py | 4 +- .../extractors/api/test_google_extractors.py | 10 +- 11 files changed, 124 insertions(+), 121 deletions(-) diff --git a/docs/_includes/_replacements.rst b/docs/_includes/_replacements.rst index 88781871..a31bc926 100644 --- a/docs/_includes/_replacements.rst +++ b/docs/_includes/_replacements.rst @@ -5,7 +5,7 @@ .. |LengthExtractor| replace:: :py:class:`LengthExtractor` .. |GoogleVisionAPILabelExtractor| replace:: :py:class:`GoogleVisionAPILabelExtractor` .. |GoogleVisionAPIFaceExtractor| replace:: :py:class:`GoogleVisionAPIFaceExtractor` -.. |ClarifaiAPIExtractor| replace:: :py:class:`ClarifaiAPIExtractor` +.. |ClarifaiAPIImageExtractor| replace:: :py:class:`ClarifaiAPIImageExtractor` .. |PredefinedDictionaryExtractor| replace:: :py:class:`PredefinedDictionaryExtractor` .. |IndicoAPIExtractor| replace:: :py:class:`IndicoAPIExtractor` .. |IndicoAPITextExtractor| replace:: :py:class:`IndicoAPITextExtractor` diff --git a/docs/config.rst b/docs/config.rst index 9b153517..b9ae172e 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -71,7 +71,7 @@ cache_transformers (bool) ~~~~~~~~~~~~~~~~~~~~~~~~~ When set to ``True``, the output produced by all ``.transform()`` call will be cached in memory (filesystem caching is not currently available). This is the default, and can be very useful in cases where (a) many calls to commercial feature extraction services (e.g., the Google or IBM families of Extractors) are being made, or (b) there are intermediate |Stim| representations generated by |Converter| classes that are computationally expensive to produce. Setting ``cache_transformers`` to ``False`` will result in every ``transform()`` call being recomputed, with no intermediates stored in memory. -Note that caching in pliers (really, memoization) is based on the combination of the |Transformer| class, its initialization parameters, and the id of the input |Stim|. If any of these changes, results will be computed anew. So, for example, creating two separate instances of the |ClarifaiAPIExtractor|, each with different ``model`` arguments, will result in two separate calls being made to the Clarifai API even if the exact same |Stim| inputs are passed. (However, different instances of the same |ClarifaiAPIExtractor| initialized using the same arguments will still point to the same entry in the cache.) +Note that caching in pliers (really, memoization) is based on the combination of the |Transformer| class, its initialization parameters, and the id of the input |Stim|. If any of these changes, results will be computed anew. So, for example, creating two separate instances of the |ClarifaiAPIImageExtractor|, each with different ``model`` arguments, will result in two separate calls being made to the Clarifai API even if the exact same |Stim| inputs are passed. (However, different instances of the same |ClarifaiAPIImageExtractor| initialized using the same arguments will still point to the same entry in the cache.) default_converters (dict) ~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/graphs.rst b/docs/graphs.rst index 2b5fe622..08721ba6 100644 --- a/docs/graphs.rst +++ b/docs/graphs.rst @@ -87,7 +87,7 @@ The second element in each tuple contains any children nodes-—i.e., nodes to w nodes = [ (FrameSamplingFilter(hertz=2), ['GoogleVisionAPIFaceExtractor', - 'ClarifaiAPIExtractor', + 'ClarifaiAPIImageExtractor', 'GoogleVisionAPILabelExtractor']) ] diff --git a/docs/installation.rst b/docs/installation.rst index 22bc6564..53f8529a 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -60,7 +60,9 @@ While installing pliers itself is usually straightforward, setting up some of th +---------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------------------------+--------------------------------+---------------------------------------+ | IndicoAPIExtractor | `Indico.io API `__ | INDICO\_APP\_KEY | API key | 45f9f8a56e4194d3dce858db1e5c3ae4 | +---------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------------------------+--------------------------------+---------------------------------------+ -| ClarifaiAPIExtractor | `Clarifai image recognition API `__ | CLARIFAI\_API\_KEY | API key | 168ed02e137459ead66c3a661be7b784 | +| ClarifaiAPIImageExtractor | `Clarifai image recognition API `__ | CLARIFAI\_API\_KEY | API key | 168ed02e137459ead66c3a661be7b784 | ++---------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------------------------+--------------------------------+---------------------------------------+ +| ClarifaiAPIVideoExtractor | `Clarifai video tagging API `__ | CLARIFAI\_API\_KEY | API key | 168ed02e137459ead66c3a661be7b784 | +---------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------------------------+--------------------------------+---------------------------------------+ \* Note that this is not the plaintext e-mail or username for your IBM services account @@ -69,9 +71,9 @@ Once you've obtained API keys for the services you intend to use, there are two :: - from pliers.extractors import ClarifaiAPIExtractor - ext = ClarifaiAPIExtractor(app_id='my_clarifai_app_id', - app_secret='my_clarifai_app_secret') + from pliers.extractors import ClarifaiAPIImageExtractor + ext = ClarifaiAPIImageExtractor(app_id='my_clarifai_app_id', + app_secret='my_clarifai_app_secret') Alternatively, you can store the appropriate values as environment variables, in which case you can initialize a Transformer without any arguments. This latter approach is generally preferred, as it doesn't require you to hardcode potentially sensitive values into your code. The mandatory environment variable names for each service are listed in the table above. diff --git a/docs/quickstart.rst b/docs/quickstart.rst index a97267be..5c5250ca 100644 --- a/docs/quickstart.rst +++ b/docs/quickstart.rst @@ -1343,17 +1343,17 @@ also demonstrates the concept of *chaining* multiple Transformer objects. We first convert a video to a series of images, and then apply an object-detection ``Extractor`` to each image. -Note, as with other examples above, that the ``ClarifaiAPIExtractor`` +Note, as with other examples above, that the ``ClarifaiAPIImageExtractor`` wraps the Clarifai object recognition API, so you’ll need to have an API key set up appropriately (if you don’t have an API key, and don’t want -to set one up, you can replace ``ClarifaiAPIExtractor`` with +to set one up, you can replace ``ClarifaiAPIImageExtractor`` with ``TensorFlowInceptionV3Extractor`` to get similar, though not quite as accurate, results). :: from pliers.filters import FrameSamplingFilter - from pliers.extractors import ClarifaiAPIExtractor, merge_results + from pliers.extractors import ClarifaiAPIImageExtractor, merge_results video = join(get_test_data_path(), 'video', 'small.mp4') @@ -1361,7 +1361,7 @@ accurate, results). sampler = FrameSamplingFilter(hertz=2) frames = sampler.transform(video) - ext = ClarifaiAPIExtractor() + ext = ClarifaiAPIImageExtractor() results = ext.transform(frames) df = merge_results(results, ) df @@ -1395,18 +1395,18 @@ accurate, results). duration order object_id - ClarifaiAPIExtractor#Lego + ClarifaiAPIImageExtractor#Lego ... - ClarifaiAPIExtractor#power - ClarifaiAPIExtractor#precision - ClarifaiAPIExtractor#production - ClarifaiAPIExtractor#research - ClarifaiAPIExtractor#robot - ClarifaiAPIExtractor#science - ClarifaiAPIExtractor#still life - ClarifaiAPIExtractor#studio - ClarifaiAPIExtractor#technology - ClarifaiAPIExtractor#toy + ClarifaiAPIImageExtractor#power + ClarifaiAPIImageExtractor#precision + ClarifaiAPIImageExtractor#production + ClarifaiAPIImageExtractor#research + ClarifaiAPIImageExtractor#robot + ClarifaiAPIImageExtractor#science + ClarifaiAPIImageExtractor#still life + ClarifaiAPIImageExtractor#studio + ClarifaiAPIImageExtractor#technology + ClarifaiAPIImageExtractor#toy @@ -1739,7 +1739,7 @@ examples above. from os.path import join from pliers.filters import FrameSamplingFilter from pliers.converters import GoogleSpeechAPIConverter - from pliers.extractors import (ClarifaiAPIExtractor, GoogleVisionAPIFaceExtractor, + from pliers.extractors import (ClarifaiAPIImageExtractor, GoogleVisionAPIFaceExtractor, ComplexTextExtractor, PredefinedDictionaryExtractor, STFTAudioExtractor, VADERSentimentExtractor, merge_results) @@ -1754,7 +1754,7 @@ examples above. sampler = FrameSamplingFilter(every=10) frames = sampler.transform(video) - obj_ext = ClarifaiAPIExtractor() + obj_ext = ClarifaiAPIImageExtractor() obj_features = obj_ext.transform(frames) features.append(obj_features) @@ -1839,7 +1839,7 @@ examples above. 0.833333 administration 0.970786 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[0] VideoFrameStim None @@ -1854,7 +1854,7 @@ examples above. 0.833333 administration 0.976996 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[10] VideoFrameStim None @@ -1869,7 +1869,7 @@ examples above. 0.833333 administration 0.972223 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[20] VideoFrameStim None @@ -1884,7 +1884,7 @@ examples above. 0.833333 administration 0.98288 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[30] VideoFrameStim None @@ -1899,7 +1899,7 @@ examples above. 0.833333 administration 0.94764 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[40] VideoFrameStim None @@ -1914,7 +1914,7 @@ examples above. 0.833333 administration 0.952409 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[50] VideoFrameStim None @@ -1929,7 +1929,7 @@ examples above. 0.833333 administration 0.951445 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[60] VideoFrameStim None @@ -1944,7 +1944,7 @@ examples above. 0.833333 administration 0.954552 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[70] VideoFrameStim None @@ -1959,7 +1959,7 @@ examples above. 0.833333 administration 0.953084 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[80] VideoFrameStim None @@ -1974,7 +1974,7 @@ examples above. 0.833333 administration 0.947371 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[90] VideoFrameStim None @@ -2025,7 +2025,7 @@ image, audio or text inputs, using state-of-the-art tools and services! # Define nodes nodes = [ (FrameSamplingFilter(every=10), - ['ClarifaiAPIExtractor', 'GoogleVisionAPIFaceExtractor']), + ['ClarifaiAPIImageExtractor', 'GoogleVisionAPIFaceExtractor']), (STFTAudioExtractor(freq_bins=[(100, 300)])), ('GoogleSpeechAPIConverter', ['ComplexTextExtractor', @@ -2087,7 +2087,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.970786 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[0] VideoFrameStim None @@ -2102,7 +2102,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.976996 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[10] VideoFrameStim None @@ -2117,7 +2117,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.972223 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[20] VideoFrameStim None @@ -2132,7 +2132,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.98288 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[30] VideoFrameStim None @@ -2147,7 +2147,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.94764 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[40] VideoFrameStim None @@ -2162,7 +2162,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.952409 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[50] VideoFrameStim None @@ -2177,7 +2177,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.951445 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[60] VideoFrameStim None @@ -2192,7 +2192,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.954552 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[70] VideoFrameStim None @@ -2207,7 +2207,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.953084 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[80] VideoFrameStim None @@ -2222,7 +2222,7 @@ image, audio or text inputs, using state-of-the-art tools and services! 0.833333 administration 0.947371 - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor frame[90] VideoFrameStim None diff --git a/docs/reference.rst b/docs/reference.rst index e5417eaf..76a94b8a 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -146,7 +146,8 @@ Extractors (:mod:`pliers.extractors`) :template: _class.rst BrightnessExtractor - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor + ClarifaiAPIVideoExtractor FaceRecognitionFaceEncodingsExtractor FaceRecognitionFaceLandmarksExtractor FaceRecognitionFaceLocationsExtractor diff --git a/docs/transformers.rst b/docs/transformers.rst index 7661dba1..30fcfeb6 100644 --- a/docs/transformers.rst +++ b/docs/transformers.rst @@ -70,7 +70,7 @@ At present, pliers implements several dozen |Extractor| classes that span a wide :template: _class.rst BrightnessExtractor - ClarifaiAPIExtractor + ClarifaiAPIImageExtractor FaceRecognitionFaceEncodingsExtractor FaceRecognitionFaceLandmarksExtractor FaceRecognitionFaceLocationsExtractor @@ -120,7 +120,7 @@ At present, pliers implements several dozen |Extractor| classes that span a wide FarnebackOpticalFlowExtractor -Note that, in practice, the number of features one can extract using the above classes is extremely large, because many of these Extractors return open-ended feature sets that are determined by the contents of the input |Stim| and/or the specified initialization arguments. For example, most of the image-labeling Extractors that rely on deep learning-based services (e.g., |GoogleVisionAPILabelExtractor| and |ClarifaiAPIExtractor|) will return feature information for any of the top N objects detected in the image. And the |PredefinedDictionaryExtractor| provides a standardized interface to a large number of online word lookup dictionaries (e.g., word norms for written frequency, age-of-acquisition, emotionality ratings, etc.). +Note that, in practice, the number of features one can extract using the above classes is extremely large, because many of these Extractors return open-ended feature sets that are determined by the contents of the input |Stim| and/or the specified initialization arguments. For example, most of the image-labeling Extractors that rely on deep learning-based services (e.g., |GoogleVisionAPILabelExtractor| and |ClarifaiAPIImageExtractor|) will return feature information for any of the top N objects detected in the image. And the |PredefinedDictionaryExtractor| provides a standardized interface to a large number of online word lookup dictionaries (e.g., word norms for written frequency, age-of-acquisition, emotionality ratings, etc.). Working with Extractor results ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/examples/Quickstart.ipynb b/examples/Quickstart.ipynb index dc20ebf3..d26ad441 100644 --- a/examples/Quickstart.ipynb +++ b/examples/Quickstart.ipynb @@ -1713,7 +1713,7 @@ "## Object recognition on selectively sampled video frames\n", "A common scenario when analyzing video is to want to apply some kind of feature extraction tool to individual video frames (i.e., still images). Often, there's little to be gained by analyzing every single frame, so we want to sample frames with some specified frequency. The following example illustrates how easily this can be accomplished in pliers. It also demonstrates the concept of *chaining* multiple Transformer objects. We first convert a video to a series of images, and then apply an object-detection `Extractor` to each image.\n", "\n", - "Note, as with other examples above, that the `ClarifaiAPIExtractor` wraps the Clarifai object recognition API, so you'll need to have an API key set up appropriately (if you don't have an API key, and don't want to set one up, you can replace `ClarifaiAPIExtractor` with `TensorFlowInceptionV3Extractor` to get similar, though not quite as accurate, results)." + "Note, as with other examples above, that the `ClarifaiAPIImageExtractor` wraps the Clarifai object recognition API, so you'll need to have an API key set up appropriately (if you don't have an API key, and don't want to set one up, you can replace `ClarifaiAPIExtractor` with `TensorFlowInceptionV3Extractor` to get similar, though not quite as accurate, results)." ] }, { @@ -1759,18 +1759,18 @@ " duration\n", " order\n", " object_id\n", - " ClarifaiAPIExtractor#Lego\n", + " ClarifaiAPIImageExtractor#Lego\n", " ...\n", - " ClarifaiAPIExtractor#power\n", - " ClarifaiAPIExtractor#precision\n", - " ClarifaiAPIExtractor#production\n", - " ClarifaiAPIExtractor#research\n", - " ClarifaiAPIExtractor#robot\n", - " ClarifaiAPIExtractor#science\n", - " ClarifaiAPIExtractor#still life\n", - " ClarifaiAPIExtractor#studio\n", - " ClarifaiAPIExtractor#technology\n", - " ClarifaiAPIExtractor#toy\n", + " ClarifaiAPIImageExtractor#power\n", + " ClarifaiAPIImageExtractor#precision\n", + " ClarifaiAPIImageExtractor#production\n", + " ClarifaiAPIImageExtractor#research\n", + " ClarifaiAPIImageExtractor#robot\n", + " ClarifaiAPIImageExtractor#science\n", + " ClarifaiAPIImageExtractor#still life\n", + " ClarifaiAPIImageExtractor#studio\n", + " ClarifaiAPIImageExtractor#technology\n", + " ClarifaiAPIImageExtractor#toy\n", " \n", " \n", " \n", @@ -2096,7 +2096,7 @@ "10 NaN frame[150] VideoStim->FrameSamplingFilter/VideoFrameColle... \n", "11 NaN frame[165] VideoStim->FrameSamplingFilter/VideoFrameColle... \n", "\n", - " duration order object_id ClarifaiAPIExtractor#Lego \\\n", + " duration order object_id ClarifaiAPIImageExtractor#Lego \\\n", "0 0.50 NaN 0 0.949353 \n", "1 0.50 NaN 0 0.948389 \n", "2 0.50 NaN 0 0.951566 \n", @@ -2110,7 +2110,7 @@ "10 0.50 NaN 0 0.954066 \n", "11 0.07 NaN 0 0.932649 \n", "\n", - " ... ClarifaiAPIExtractor#power \\\n", + " ... ClarifaiAPIImageExtractor#power \\\n", "0 ... NaN \n", "1 ... NaN \n", "2 ... NaN \n", @@ -2124,7 +2124,7 @@ "10 ... NaN \n", "11 ... NaN \n", "\n", - " ClarifaiAPIExtractor#precision ClarifaiAPIExtractor#production \\\n", + " ClarifaiAPIImageExtractor#precision ClarifaiAPIExtractor#production \\\n", "0 0.767964 NaN \n", "1 0.743388 NaN \n", "2 0.738823 NaN \n", @@ -2138,7 +2138,7 @@ "10 0.793047 0.717981 \n", "11 0.818984 0.758780 \n", "\n", - " ClarifaiAPIExtractor#research ClarifaiAPIExtractor#robot \\\n", + " ClarifaiAPIImageExtractor#research ClarifaiAPIExtractor#robot \\\n", "0 NaN 0.892890 \n", "1 NaN 0.887668 \n", "2 NaN 0.885989 \n", @@ -2152,7 +2152,7 @@ "10 NaN 0.904960 \n", "11 NaN 0.876721 \n", "\n", - " ClarifaiAPIExtractor#science ClarifaiAPIExtractor#still life \\\n", + " ClarifaiAPIImageExtractor#science ClarifaiAPIExtractor#still life \\\n", "0 0.823121 0.898390 \n", "1 0.826262 0.900226 \n", "2 0.801925 0.908438 \n", @@ -2166,7 +2166,7 @@ "10 0.861293 0.905260 \n", "11 0.882386 0.887411 \n", "\n", - " ClarifaiAPIExtractor#studio ClarifaiAPIExtractor#technology \\\n", + " ClarifaiAPIImageExtractor#studio ClarifaiAPIExtractor#technology \\\n", "0 0.714794 0.946736 \n", "1 0.747545 0.951705 \n", "2 0.756304 0.948202 \n", @@ -2180,7 +2180,7 @@ "10 0.754906 0.956006 \n", "11 NaN 0.958058 \n", "\n", - " ClarifaiAPIExtractor#toy \n", + " ClarifaiAPIImageExtractor#toy \n", "0 0.900628 \n", "1 0.892195 \n", "2 0.903330 \n", @@ -2204,7 +2204,7 @@ ], "source": [ "from pliers.filters import FrameSamplingFilter\n", - "from pliers.extractors import ClarifaiAPIExtractor, merge_results\n", + "from pliers.extractors import ClarifaiAPIImageExtractor, merge_results\n", "\n", "video = join(get_test_data_path(), 'video', 'small.mp4')\n", "\n", @@ -2212,7 +2212,7 @@ "sampler = FrameSamplingFilter(hertz=2)\n", "frames = sampler.transform(video)\n", "\n", - "ext = ClarifaiAPIExtractor()\n", + "ext = ClarifaiAPIImageExtractor()\n", "results = ext.transform(frames)\n", "df = merge_results(results, )\n", "df" @@ -2330,7 +2330,7 @@ " 0.833333\n", " administration\n", " 0.970786\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[0]\n", " VideoFrameStim\n", " None\n", @@ -2345,7 +2345,7 @@ " 0.833333\n", " administration\n", " 0.976996\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[10]\n", " VideoFrameStim\n", " None\n", @@ -2360,7 +2360,7 @@ " 0.833333\n", " administration\n", " 0.972223\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[20]\n", " VideoFrameStim\n", " None\n", @@ -2375,7 +2375,7 @@ " 0.833333\n", " administration\n", " 0.98288\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[30]\n", " VideoFrameStim\n", " None\n", @@ -2390,7 +2390,7 @@ " 0.833333\n", " administration\n", " 0.94764\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[40]\n", " VideoFrameStim\n", " None\n", @@ -2405,7 +2405,7 @@ " 0.833333\n", " administration\n", " 0.952409\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[50]\n", " VideoFrameStim\n", " None\n", @@ -2420,7 +2420,7 @@ " 0.833333\n", " administration\n", " 0.951445\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[60]\n", " VideoFrameStim\n", " None\n", @@ -2435,7 +2435,7 @@ " 0.833333\n", " administration\n", " 0.954552\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[70]\n", " VideoFrameStim\n", " None\n", @@ -2450,7 +2450,7 @@ " 0.833333\n", " administration\n", " 0.953084\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[80]\n", " VideoFrameStim\n", " None\n", @@ -2465,7 +2465,7 @@ " 0.833333\n", " administration\n", " 0.947371\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[90]\n", " VideoFrameStim\n", " None\n", @@ -2490,16 +2490,16 @@ "2695 0 7.500000 NaN 0.833333 administration 0.947371 \n", "\n", " extractor stim_name class filename \\\n", - "2 ClarifaiAPIExtractor frame[0] VideoFrameStim None \n", - "296 ClarifaiAPIExtractor frame[10] VideoFrameStim None \n", - "592 ClarifaiAPIExtractor frame[20] VideoFrameStim None \n", - "887 ClarifaiAPIExtractor frame[30] VideoFrameStim None \n", - "1198 ClarifaiAPIExtractor frame[40] VideoFrameStim None \n", - "1492 ClarifaiAPIExtractor frame[50] VideoFrameStim None \n", - "1795 ClarifaiAPIExtractor frame[60] VideoFrameStim None \n", - "2096 ClarifaiAPIExtractor frame[70] VideoFrameStim None \n", - "2392 ClarifaiAPIExtractor frame[80] VideoFrameStim None \n", - "2695 ClarifaiAPIExtractor frame[90] VideoFrameStim None \n", + "2 ClarifaiAPIImageExtractor frame[0] VideoFrameStim None \n", + "296 ClarifaiAPIImageExtractor frame[10] VideoFrameStim None \n", + "592 ClarifaiAPIImageExtractor frame[20] VideoFrameStim None \n", + "887 ClarifaiAPIImageExtractor frame[30] VideoFrameStim None \n", + "1198 ClarifaiAPIImageExtractor frame[40] VideoFrameStim None \n", + "1492 ClarifaiAPIImageExtractor frame[50] VideoFrameStim None \n", + "1795 ClarifaiAPIImageExtractor frame[60] VideoFrameStim None \n", + "2096 ClarifaiAPIImageExtractor frame[70] VideoFrameStim None \n", + "2392 ClarifaiAPIImageExtractor frame[80] VideoFrameStim None \n", + "2695 ClarifaiAPIImageExtractor frame[90] VideoFrameStim None \n", "\n", " history \\\n", "2 VideoStim->FrameSamplingFilter/VideoFrameColle... \n", @@ -2536,7 +2536,7 @@ "from os.path import join\n", "from pliers.filters import FrameSamplingFilter\n", "from pliers.converters import GoogleSpeechAPIConverter\n", - "from pliers.extractors import (ClarifaiAPIExtractor, GoogleVisionAPIFaceExtractor,\n", + "from pliers.extractors import (ClarifaiAPIImageExtractor, GoogleVisionAPIFaceExtractor,\n", " ComplexTextExtractor, PredefinedDictionaryExtractor,\n", " STFTAudioExtractor, VADERSentimentExtractor,\n", " merge_results)\n", @@ -2551,7 +2551,7 @@ "sampler = FrameSamplingFilter(every=10)\n", "frames = sampler.transform(video)\n", "\n", - "obj_ext = ClarifaiAPIExtractor()\n", + "obj_ext = ClarifaiAPIImageExtractor()\n", "obj_features = obj_ext.transform(frames)\n", "features.append(obj_features)\n", "\n", @@ -2668,7 +2668,7 @@ " 0.833333\n", " administration\n", " 0.970786\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[0]\n", " VideoFrameStim\n", " None\n", @@ -2683,7 +2683,7 @@ " 0.833333\n", " administration\n", " 0.976996\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[10]\n", " VideoFrameStim\n", " None\n", @@ -2698,7 +2698,7 @@ " 0.833333\n", " administration\n", " 0.972223\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[20]\n", " VideoFrameStim\n", " None\n", @@ -2713,7 +2713,7 @@ " 0.833333\n", " administration\n", " 0.98288\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[30]\n", " VideoFrameStim\n", " None\n", @@ -2728,7 +2728,7 @@ " 0.833333\n", " administration\n", " 0.94764\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[40]\n", " VideoFrameStim\n", " None\n", @@ -2743,7 +2743,7 @@ " 0.833333\n", " administration\n", " 0.952409\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[50]\n", " VideoFrameStim\n", " None\n", @@ -2758,7 +2758,7 @@ " 0.833333\n", " administration\n", " 0.951445\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[60]\n", " VideoFrameStim\n", " None\n", @@ -2773,7 +2773,7 @@ " 0.833333\n", " administration\n", " 0.954552\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[70]\n", " VideoFrameStim\n", " None\n", @@ -2788,7 +2788,7 @@ " 0.833333\n", " administration\n", " 0.953084\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[80]\n", " VideoFrameStim\n", " None\n", @@ -2803,7 +2803,7 @@ " 0.833333\n", " administration\n", " 0.947371\n", - " ClarifaiAPIExtractor\n", + " ClarifaiAPIImageExtractor\n", " frame[90]\n", " VideoFrameStim\n", " None\n", @@ -2828,16 +2828,16 @@ "2695 0 7.500000 NaN 0.833333 administration 0.947371 \n", "\n", " extractor stim_name class filename \\\n", - "2 ClarifaiAPIExtractor frame[0] VideoFrameStim None \n", - "296 ClarifaiAPIExtractor frame[10] VideoFrameStim None \n", - "592 ClarifaiAPIExtractor frame[20] VideoFrameStim None \n", - "887 ClarifaiAPIExtractor frame[30] VideoFrameStim None \n", - "1198 ClarifaiAPIExtractor frame[40] VideoFrameStim None \n", - "1492 ClarifaiAPIExtractor frame[50] VideoFrameStim None \n", - "1795 ClarifaiAPIExtractor frame[60] VideoFrameStim None \n", - "2096 ClarifaiAPIExtractor frame[70] VideoFrameStim None \n", - "2392 ClarifaiAPIExtractor frame[80] VideoFrameStim None \n", - "2695 ClarifaiAPIExtractor frame[90] VideoFrameStim None \n", + "2 ClarifaiAPIImageExtractor frame[0] VideoFrameStim None \n", + "296 ClarifaiAPIImageExtractor frame[10] VideoFrameStim None \n", + "592 ClarifaiAPIImageExtractor frame[20] VideoFrameStim None \n", + "887 ClarifaiAPIImageExtractor frame[30] VideoFrameStim None \n", + "1198 ClarifaiAPIImageExtractor frame[40] VideoFrameStim None \n", + "1492 ClarifaiAPIImageExtractor frame[50] VideoFrameStim None \n", + "1795 ClarifaiAPIImageExtractor frame[60] VideoFrameStim None \n", + "2096 ClarifaiAPIImageExtractor frame[70] VideoFrameStim None \n", + "2392 ClarifaiAPIImageExtractor frame[80] VideoFrameStim None \n", + "2695 ClarifaiAPIImageExtractor frame[90] VideoFrameStim None \n", "\n", " history \\\n", "2 VideoStim->FrameSamplingFilter/VideoFrameColle... \n", @@ -2883,7 +2883,7 @@ "# Define nodes\n", "nodes = [\n", " (FrameSamplingFilter(every=10),\n", - " ['ClarifaiAPIExtractor', 'GoogleVisionAPIFaceExtractor']),\n", + " ['ClarifaiAPIImageExtractor', 'GoogleVisionAPIFaceExtractor']),\n", " (STFTAudioExtractor(freq_bins=[(100, 300)])),\n", " ('GoogleSpeechAPIConverter',\n", " ['ComplexTextExtractor',\n", diff --git a/examples/Vision APIs.ipynb b/examples/Vision APIs.ipynb index cb72093b..dc10017d 100644 --- a/examples/Vision APIs.ipynb +++ b/examples/Vision APIs.ipynb @@ -24,7 +24,7 @@ "source": [ "from pliers.tests.utils import get_test_data_path\n", "from os.path import join\n", - "from pliers.extractors import (ClarifaiAPIExtractor, IndicoAPIImageExtractor, GoogleVisionAPILabelExtractor)\n", + "from pliers.extractors import (ClarifaiAPIImageExtractor, IndicoAPIImageExtractor, GoogleVisionAPILabelExtractor)\n", "from pliers.stimuli.image import ImageStim\n", "from pliers.graph import Graph" ] @@ -69,7 +69,7 @@ ], "source": [ "# Configure extractions\n", - "clarifai_ext = ClarifaiAPIExtractor()\n", + "clarifai_ext = ClarifaiAPIImageExtractor()\n", "indico_ext = IndicoAPIImageExtractor(models=['image_recognition'])\n", "google_ext = GoogleVisionAPILabelExtractor()" ] diff --git a/pliers/extractors/api/google.py b/pliers/extractors/api/google.py index ffc27c87..108b3f25 100644 --- a/pliers/extractors/api/google.py +++ b/pliers/extractors/api/google.py @@ -282,10 +282,10 @@ def _to_df(self, result): # Good for shot or segment labels self._parse_label(data, feats, annot) elif key == 'shotAnnotations': - for shot in res: + for i, shot in enumerate(res): onset, duration = self._get_onset_duration(shot) data[(onset, duration)].update({ - 'shot': 1.0 + 'shot_id': i }) elif key == 'explicitAnnotation': feature = 'pornographyLikelihood' diff --git a/pliers/tests/extractors/api/test_google_extractors.py b/pliers/tests/extractors/api/test_google_extractors.py index b3f5aa4a..d3b2e92a 100644 --- a/pliers/tests/extractors/api/test_google_extractors.py +++ b/pliers/tests/extractors/api/test_google_extractors.py @@ -221,7 +221,7 @@ def test_google_video_api_extractor(caplog): assert result['duration'][0] > 0.5 and result['duration'][0] < 0.6 assert result['category_plant'][0] > 0.5 assert result['park'][0] > 0.5 - assert result['shot'][0] == 1.0 + assert result['shot_id'][0] == 0 @pytest.mark.long_test @@ -300,8 +300,8 @@ def test_google_video_api_shot_extractor(caplog): assert result.shape == (1, 5) assert result['onset'][0] == 0.0 assert np.isclose(result['duration'][0], stim.duration, 0.1) - assert 'shot' in result.columns - assert result['shot'][0] == 1.0 + assert 'shot_id' in result.columns + assert result['shot_id'][0] == 0 ext = GoogleVideoAPIShotDetectionExtractor() stim = VideoStim(join(VIDEO_DIR, 'shot_change.mp4')) @@ -313,8 +313,8 @@ def test_google_video_api_shot_extractor(caplog): if not incomplete: assert result.shape == (2, 5) assert np.isclose(result['onset'][1], 3.2, 0.1) - assert 'shot' in result.columns - assert result['shot'][1] == 1.0 + assert 'shot_id' in result.columns + assert result['shot_id'][1] == 1 @pytest.mark.requires_payment