aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2020-09-01-visual-recognition.org
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2024-09-01 21:54:51 -0500
committerChristian Cleberg <hello@cleberg.net>2024-09-01 21:54:51 -0500
commit17d0e7fa0f46eae4ef284af4593e33ad24da3bef (patch)
treef75dd3e5d1cd25b1986d4c046e921170bd388fcc /content/blog/2020-09-01-visual-recognition.org
parentcb26788d15e7370333818e0c348e8a68a40d8415 (diff)
downloadcleberg.net-17d0e7fa0f46eae4ef284af4593e33ad24da3bef.tar.gz
cleberg.net-17d0e7fa0f46eae4ef284af4593e33ad24da3bef.tar.bz2
cleberg.net-17d0e7fa0f46eae4ef284af4593e33ad24da3bef.zip
format 2018 to 2020 blog posts
Diffstat (limited to 'content/blog/2020-09-01-visual-recognition.org')
-rw-r--r--content/blog/2020-09-01-visual-recognition.org131
1 files changed, 60 insertions, 71 deletions
diff --git a/content/blog/2020-09-01-visual-recognition.org b/content/blog/2020-09-01-visual-recognition.org
index 412000b..94a8175 100644
--- a/content/blog/2020-09-01-visual-recognition.org
+++ b/content/blog/2020-09-01-visual-recognition.org
@@ -5,38 +5,31 @@
* What is IBM Watson?
-If you've never heard of [[https://www.ibm.com/watson][Watson]], this
-service is a suite of enterprise-ready AI services, applications, and
-tooling provided by IBM. Watson contains quite a few useful tools for
-data scientists and students, including the subject of this post today:
-visual recognition.
+If you've never heard of [[https://www.ibm.com/watson][Watson]], this service is a suite of enterprise-ready AI
+services, applications, and tooling provided by IBM. Watson contains quite a few
+useful tools for data scientists and students, including the subject of this
+post today: visual recognition.
-If you'd like to view the official documentation for the Visual
-Recognition API, visit the
-[[https://cloud.ibm.com/apidocs/visual-recognition/visual-recognition-v3?code=python][API
-Docs]].
+If you'd like to view the official documentation for the Visual Recognition API,
+visit the [[https://cloud.ibm.com/apidocs/visual-recognition/visual-recognition-v3?code=python][API Docs]].
* Prerequisites
To be able to use Watson Visual Recognition, you'll need the following:
-1. Create a free account on
- [[https://www.ibm.com/cloud/watson-studio][IBM Watson Studio]].
-2. Add the [[https://www.ibm.com/cloud/watson-visual-recognition][Watson
- Visual Recognition]] service to your IBM Watson account.
-3. Get your API key and URL. To do this, first go to the
- [[https://dataplatform.cloud.ibm.com/home2?context=cpdaas][profile
- dashboard]] for your IBM account and click on the Watson Visual
- Recognition service you created. This will be listed in the section
- titled *Your services*. Then click the *Credentials* tab and open the
- *Auto-generated credentials* dropdown. Copy your API key and URL so
- that you can use them in the Python script later.
-4. *[Optional]* While not required, you can also create the Jupyter
- Notebook for this project right inside
- [[https://www.ibm.com/cloud/watson-studio][Watson Studio]]. Watson
- Studio will save your notebooks inside an organized project and allow
- you to use their other integrated products, such as storage
- containers, AI models, documentation, external sharing, etc.
+1. Create a free account on [[https://www.ibm.com/cloud/watson-studio][IBM Watson Studio]].
+2. Add the [[https://www.ibm.com/cloud/watson-visual-recognition][Watson Visual Recognition]] service to your IBM Watson account.
+3. Get your API key and URL. To do this, first go to the [[https://dataplatform.cloud.ibm.com/home2?context=cpdaas][profile dashboard]] for
+ your IBM account and click on the Watson Visual Recognition service you
+ created. This will be listed in the section titled *Your services*. Then
+ click the *Credentials* tab and open the *Auto-generated credentials*
+ dropdown. Copy your API key and URL so that you can use them in the Python
+ script later.
+4. *[Optional]* While not required, you can also create the Jupyter Notebook for
+ this project right inside [[https://www.ibm.com/cloud/watson-studio][Watson Studio]]. Watson Studio will save your
+ notebooks inside an organized project and allow you to use their other
+ integrated products, such as storage containers, AI models, documentation,
+ external sharing, etc.
* Calling the IBM Watson Visual Recognition API
@@ -48,8 +41,8 @@ To begin, we need to install the proper Python package for IBM Watson.
pip install --upgrade --user "ibm-watson>=4.5.0"
#+end_src
-Next, we need to specify the API key, version, and URL given to us when
-we created the Watson Visual Recognition service.
+Next, we need to specify the API key, version, and URL given to us when we
+created the Watson Visual Recognition service.
#+begin_src python
apikey = "<your-apikey>"
@@ -73,15 +66,15 @@ visual_recognition = VisualRecognitionV3(
visual_recognition.set_service_url(url)
#+end_src
-*[Optional]* If you'd like to tell the API not to use any data to
-improve their products, set the following header.
+*[Optional]* If you'd like to tell the API not to use any data to improve their
+products, set the following header.
#+begin_src python
visual_recognition.set_default_headers({'x-watson-learning-opt-out': "true"})
#+end_src
-Now we have our API all set and ready to go. For this example, I'm going
-to include a =dict= of photos to load as we test out the API.
+Now we have our API all set and ready to go. For this example, I'm going to
+include a =dict= of photos to load as we test out the API.
#+begin_src python
data = [
@@ -112,14 +105,14 @@ data = [
]
#+end_src
-Now that we've set up our libraries and have the photos ready, let's
-create a loop to call the API for each image. The code below shows a
-loop that calls the URL of each image and sends it to the API,
-requesting results with at least 60% confidence. The results are output
-to the console with dotted lines separating each section.
+Now that we've set up our libraries and have the photos ready, let's create a
+loop to call the API for each image. The code below shows a loop that calls the
+URL of each image and sends it to the API, requesting results with at least 60%
+confidence. The results are output to the console with dotted lines separating
+each section.
-In the case of an API error, the codes and explanations are output to
-the console.
+In the case of an API error, the codes and explanations are output to the
+console.
#+begin_src python
from ibm_watson import ApiException
@@ -146,23 +139,22 @@ except ApiException as ex:
* The Results
-Here we can see the full result set of our function above. If you view
-each of the URLs that we sent to the API, you'll be able to see that it
-was remarkably accurate. To be fair, these are clear high-resolution,
-clear photos shot with a professional camera. In reality, you will most
-likely be processing images that are lower quality and may have a lot of
-noise in the photo.
+Here we can see the full result set of our function above. If you view each of
+the URLs that we sent to the API, you'll be able to see that it was remarkably
+accurate. To be fair, these are clear high-resolution, clear photos shot with a
+professional camera. In reality, you will most likely be processing images that
+are lower quality and may have a lot of noise in the photo.
-However, we can clearly see the benefit of being able to call this API
-instead of attempting to write our own image recognition function. Each
-of the classifications returned was a fair description of the image.
+However, we can clearly see the benefit of being able to call this API instead
+of attempting to write our own image recognition function. Each of the
+classifications returned was a fair description of the image.
-If you wanted to restrict the results to those that are at least 90%
-confident or greater, you would simply adjust the =threshold= in the
+If you wanted to restrict the results to those that are at least 90% confident
+or greater, you would simply adjust the =threshold= in the
=visual_recognition.classify()= function.
-When your program runs, it should show the output below for each photo
-you provide.
+When your program runs, it should show the output below for each photo you
+provide.
#+begin_src txt
----------------------------------------------------------------
@@ -181,22 +173,19 @@ greenishness color ( 0.975 )
* Discussion
-Now, this was a very minimal implementation of the API. We simply
-supplied some images and looked to see how accurate the results were.
-However, you could implement this type of API into many machine learning
-(ML) models.
-
-For example, you could be working for a company that scans their
-warehouses or inventory using drones. Would you want to pay employees to
-sit there and watch drone footage all day in order to identify or count
-things in the video? Probably not. Instead, you could use a
-classification system similar to this one in order to train your machine
-learning model to correctly identify items that the drones show through
-video. More specifically, you could have your machine learning model
-watch a drone fly over a field of sheep in order to count how many sheep
-are living in that field.
-
-There are many ways to implement machine learning functionality, but
-hopefully this post helped inspire some deeper thought about the tools
-that can help propel us further into the future of machine learning and
-AI.
+Now, this was a very minimal implementation of the API. We simply supplied some
+images and looked to see how accurate the results were. However, you could
+implement this type of API into many machine learning (ML) models.
+
+For example, you could be working for a company that scans their warehouses or
+inventory using drones. Would you want to pay employees to sit there and watch
+drone footage all day in order to identify or count things in the video?
+Probably not. Instead, you could use a classification system similar to this one
+in order to train your machine learning model to correctly identify items that
+the drones show through video. More specifically, you could have your machine
+learning model watch a drone fly over a field of sheep in order to count how
+many sheep are living in that field.
+
+There are many ways to implement machine learning functionality, but hopefully
+this post helped inspire some deeper thought about the tools that can help
+propel us further into the future of machine learning and AI.