Transcript
            
            
              This transcript was autogenerated. To make changes, submit a PR.
            
            
            
            
              Hi, my name is Sharon Yelenik. I'm API, API and Devex
            
            
            
              content writer Cloudinary. And today I'm going to talk to you about personalizing
            
            
            
              your images with aipowered features.
            
            
            
              So first I want to touch on how you handle your images today.
            
            
            
              Could be that you handle your images with a graphic designer.
            
            
            
              If you only have a few images on your website, it's very likely that you
            
            
            
              have a graphic designer who looks through every image,
            
            
            
              crops it properly, adds the proper text, maybe localizes
            
            
            
              it per country that you service,
            
            
            
              maybe puts a proper logo on it to
            
            
            
              watermark your images. And basically the
            
            
            
              graphic designer has their eye on every single image in
            
            
            
              order to prepare it for delivery. The problem is
            
            
            
              that when you have a website with lots
            
            
            
              and lots of images, then it becomes really impossible to have
            
            
            
              a graphic designer or yourself go through every single image
            
            
            
              and personalize it individually. Also,
            
            
            
              if you have user generated content on your website, you also
            
            
            
              can't really go through every single image because most likely it just goes directly
            
            
            
              from user upload to be delivered on your website.
            
            
            
              And if you have any of these scenarios where you either have a lot
            
            
            
              of images or you have user generated content appearing
            
            
            
              on your website, you probably have to up your game and do something
            
            
            
              else besides going through every single image manually
            
            
            
              in order to prepare it for delivery. And most likely
            
            
            
              you're using some sort of AI to handle those
            
            
            
              images for you. Now, AI can help you
            
            
            
              manage your images by analyzing the image and returning
            
            
            
              all the information for you that you need in order to make programmatic decisions
            
            
            
              based on the information that's given. So I'm
            
            
            
              going to go through a list of a few types of information that
            
            
            
              you can get which will really help you to programmatically handle
            
            
            
              and automatically handle all the images on your website.
            
            
            
              So first of all, moderation, especially if you're using user generated
            
            
            
              content, you need some way to automatically moderate each
            
            
            
              image and make sure that there's nothing unlawful or inappropriate
            
            
            
              going on your websites.
            
            
            
              So AI can do that for you. It can automatically moderate
            
            
            
              your images so that you can feel comfortable that everything that you're
            
            
            
              showing on your website is appropriate.
            
            
            
              Object detection. So AI can actually
            
            
            
              go through each image and figure out which objects are
            
            
            
              appearing in it. And as you can see in this little example here,
            
            
            
              in this image, we've got a bounding box around car,
            
            
            
              lady, jacket, bag, and each
            
            
            
              object actually has a bounding box. And you can actually get the coordinates
            
            
            
              so that you can know not only what images
            
            
            
              or what objects are in the image, but you can even know where those
            
            
            
              objects are located in the image.
            
            
            
              Auto tagging is probably a
            
            
            
              twin of object detection because how
            
            
            
              am I going to access the information later that I
            
            
            
              detected which objects are in the image, but how am I going to access that
            
            
            
              information later? So you can auto tag the image
            
            
            
              based on all of the objects that are there.
            
            
            
              And basically auto tagging will save that information as
            
            
            
              a tag on each of your images. So, for example, this image would be
            
            
            
              tagged with all of these objects that have been found in it.
            
            
            
              Face detection. It might be very important for you to know
            
            
            
              which images have faces and which images don't have faces.
            
            
            
              And you might handle images with faces and without faces differently.
            
            
            
              You can also get the information of how many faces
            
            
            
              are in the image. And you can also, again, get the same sort
            
            
            
              of coordinates and bounding box for each face that's detected.
            
            
            
              Now, I'm going to show you an app in a few minutes,
            
            
            
              something that kind of demonstrates how we can receive
            
            
            
              all this analysis on our image and then use
            
            
            
              that information in our program. And we're actually
            
            
            
              going to do something playful and we're going to detect which images
            
            
            
              have faces and put sunglasses on each of
            
            
            
              those faces that are found. Another very useful
            
            
            
              piece of information that you can get is color detection.
            
            
            
              You can automatically, with AI, receive information about what the predominant
            
            
            
              colors are in the picture and act accordingly. Maybe you want to
            
            
            
              group the pictures with similar colors together for aesthetics.
            
            
            
              Maybe you want to add a background of the
            
            
            
              predominant color or a border of that color. And finally,
            
            
            
              OCR AI can detect any
            
            
            
              text that's in the image and can give that information
            
            
            
              to you so that you can save it and programmatically make
            
            
            
              decisions based on that later. And of course, there's lots more,
            
            
            
              there's lots more analysis that AI can do on your
            
            
            
              images. These are just an example of a few.
            
            
            
              So now that we've discussed a little bit about how to use AI to handle
            
            
            
              our images better in our websites and apps, let's take a look at a sample
            
            
            
              app, a little demo, and we're going to look at the code for it a
            
            
            
              little bit later to see how to put those concepts into practice.
            
            
            
              So in this demo, we're going to request user generated content. We're going
            
            
            
              to perform analysis on the uploaded images, and then we're
            
            
            
              going to display them according to the analysis that was
            
            
            
              made on upload. So let's take a look.
            
            
            
              We're going to upload the images and the analysis
            
            
            
              is being done as we speak. And we're going to click
            
            
            
              show details to see the images displayed based
            
            
            
              on the analysis that was done. So, first of all, we've got two categories.
            
            
            
              We've got people and we've got shoes.
            
            
            
              So according to the object analysis that was done,
            
            
            
              the people are placed in the area for people,
            
            
            
              and the shoes are placed in the area for shoes.
            
            
            
              And if you can just take a look at the images in
            
            
            
              particular, you'll see that each image is
            
            
            
              transformed according to the analysis
            
            
            
              that was done on it. So all of the people are now
            
            
            
              wearing sunglasses. None of the shoes are wearing sunglasses.
            
            
            
              Also, we've chosen the predominant color in each image, and we've
            
            
            
              put a border of that color around the image.
            
            
            
              We have information underneath each images that
            
            
            
              describes what we found out about it.
            
            
            
              If there are any words, then it tells us what
            
            
            
              the word is that was detected, the number of faces
            
            
            
              and the coordinates of those faces, the orientation
            
            
            
              of the picture, and the predominant color. One other
            
            
            
              thing that I just want you to pay attention to is that
            
            
            
              if you see, we actually
            
            
            
              changed these images from being whatever shape they are,
            
            
            
              portrait or landscape, and we made all the pictures
            
            
            
              square. Now, there's a risk in doing that.
            
            
            
              When you change the bounding box, when you change
            
            
            
              the size and the aspect ratio of images,
            
            
            
              you run the risk of either chopping off part of the important
            
            
            
              part within the crop, or distorting the images.
            
            
            
              And here we've used AI to do something else.
            
            
            
              We put the picture into the shape that is requested,
            
            
            
              in this case, a square. And we've out painted the picture
            
            
            
              according to AI in order to make the picture fit
            
            
            
              into the requested area. So you see that
            
            
            
              in the original picture, we didn't have this content,
            
            
            
              and actually this picture within a picture
            
            
            
              was extended and AI was based
            
            
            
              to fill out the picture in the best way possible
            
            
            
              so that we don't have any distortions or false image
            
            
            
              sizes. And here we see that the same thing is with the
            
            
            
              shoes. The same information has been extracted with the shoes, the same
            
            
            
              formatting, the same color detection. And last
            
            
            
              but not least, please take note that the very relevant titles on each image
            
            
            
              are comprised by the auto tagging that we added in
            
            
            
              our image analysis on upload. So let's move on to
            
            
            
              talking about how. How do we use AI to handle our images
            
            
            
              better on our websites and apps? The solution that I
            
            
            
              want to talk to you about today is with cloudinary. And actually, cloudinary is
            
            
            
              what was powering the demo app that you just saw before.
            
            
            
              So what is cloudinary? Cloudinary provides you with a cloud to store all
            
            
            
              your images and videos and any other type of file that you want to store
            
            
            
              there. And cloudinary handles your images from
            
            
            
              end to end, meaning from uploading,
            
            
            
              analyzing, storing, managing, editing,
            
            
            
              all the way to delivering your images and videos for your
            
            
            
              websites and apps. So how do
            
            
            
              we access cloudinary? You want to make a free account,
            
            
            
              go to cloudinary.com and sign up for free and follow the
            
            
            
              instructions there. And when you actually
            
            
            
              get into your own account, you will see that you
            
            
            
              get this very nice UI. We're going to
            
            
            
              make sure that we're in the programmable media section
            
            
            
              and that will give us access to our cloud
            
            
            
              name, our API key, our API secret, and the environment
            
            
            
              variable, which provides the credentials that we need
            
            
            
              in order to get into it from our code that we're
            
            
            
              going to write. So please, if you want to follow along,
            
            
            
              you could copy the API environment variable for future use.
            
            
            
              We're going to get to that in just a few minutes.
            
            
            
              In addition, I want to show you the nice UI that you
            
            
            
              get along with cloudinary.
            
            
            
              And this actually allows you to see visually all the images that
            
            
            
              were uploaded and everything that you can do
            
            
            
              with your images and videos visually. You can
            
            
            
              also do programmatically, pretty much.
            
            
            
              So here are all your images. Let's double down
            
            
            
              and open a single image to manage it. And you can see
            
            
            
              that every single image has a public id, which is its
            
            
            
              unique identifier. And you can also open the
            
            
            
              image in a browser window using its delivery URL.
            
            
            
              And this is the delivery URL that you can use to
            
            
            
              deliver the image on your website or app anytime
            
            
            
              and any place. So the last step that I need
            
            
            
              to go through before I can actually go into the app code is
            
            
            
              to install cloudinary. So I'm going to install cloudinary here in my terminal.
            
            
            
              And also if you don't have it yet installed, if you don't, just use
            
            
            
              it in your own apps. For this particular app
            
            
            
              demonstration, we're going to use the env
            
            
            
              library in order to import my credentials from a nv
            
            
            
              file. So you can install that as well if you
            
            
            
              want to follow along with this particular app.
            
            
            
              So here we're going into my actual code, and in my app,
            
            
            
              I decided to name the main file demo py. Of course you can
            
            
            
              name it whatever you want. And the first thing that I do is I
            
            
            
              import the environment variable from the M
            
            
            
              file using the MV library.
            
            
            
              And if we take a look at the M file, you see that that's my
            
            
            
              environment variable that I copied from the dashboard a
            
            
            
              few minutes ago. And in my demo
            
            
            
              py file, the first thing that I need to do is to
            
            
            
              create an upload preset. Now, this upload preset should
            
            
            
              only be created once. And so if
            
            
            
              you're actually running this app and doing it exactly as
            
            
            
              it is here, you want to comment it out before you run the app a
            
            
            
              second time. Now of course you might want to run this separately in just
            
            
            
              another script if
            
            
            
              you're going to do it in your apps on a regular basis.
            
            
            
              Okay, so let's take a look at the upload preset.
            
            
            
              So the first thing that I'm going to do is I'm going to call the
            
            
            
              upload preset cloudinary API create upload preset,
            
            
            
              and in order to use this, I have to import cloudinary.
            
            
            
              Other libraries that I have to import from cloudinary are the uploader
            
            
            
              and the API libraries.
            
            
            
              And within the upload preset, I'm going to pass a bunch of parameters.
            
            
            
              First of all, the name. I'm going to name it.
            
            
            
              I'm going to give it a certain name. Of course you can name it whatever
            
            
            
              you want. I'm going to make it an unsigned preset.
            
            
            
              This enables me to upload all of the images
            
            
            
              from the client side without any signatures and
            
            
            
              without having to use my API key and secret use
            
            
            
              file. Name equals true. That means that whatever the image name
            
            
            
              is that I upload, that's also going to be its public id name within cloudinary.
            
            
            
              And I'm specifying the folder that it's going to be uploaded to within
            
            
            
              the UI, and I'm giving it a certain tag so that I
            
            
            
              know that each image that's uploaded with this preset has come from
            
            
            
              this computer vision demo,
            
            
            
              and the remainder of the parameters that I'm passing are actually activating
            
            
            
              the analysis. Color equals true means that I'm going
            
            
            
              to track the predominant color of the images that I upload with
            
            
            
              this preset. Faces equals true means that I'm
            
            
            
              going to detect the faces, I'm going to count them, I'm going to return the
            
            
            
              coordinates for each face.
            
            
            
              Customization equals Google tagging means that I'm
            
            
            
              going to detect objects in the images that
            
            
            
              are uploaded, with auto tagging being 0.7.
            
            
            
              That means that everything that was detected, any object that was detected
            
            
            
              with a confidence of 70% is going to be based
            
            
            
              as a tag on that image. Ocr this parameter
            
            
            
              activates my text detection,
            
            
            
              my Alphabet detection, my word detection and
            
            
            
              moderation means that I'm activating AWS
            
            
            
              recognition that add on to actually
            
            
            
              monitor my pictures and make sure that I'm not
            
            
            
              including any inappropriate content or anything illegal there.
            
            
            
              So let's take a look at how I apply the upload preset to the images
            
            
            
              that I upload. So let's go to the index HTML
            
            
            
              file and take a look. I'm going to create an upload
            
            
            
              widget and let me remind you what that upload widget was.
            
            
            
              In my demo, I clicked upload files and there
            
            
            
              appeared this nice little UI that allowed
            
            
            
              me to browse my local files and upload the images of
            
            
            
              my choice. So the button with id
            
            
            
              upload widget calls the Javascript in
            
            
            
              order to instantiate that upload widget.
            
            
            
              Now I need to add this script from
            
            
            
              Javascript and then I
            
            
            
              need to instantiate my upload widget with a cloud name and
            
            
            
              the name of the upload preset that I had just created.
            
            
            
              On success I'm going to display the
            
            
            
              images that were uploaded and then
            
            
            
              I'm going to follow through and display
            
            
            
              the next button that will bring me to
            
            
            
              my output. So when I click the show details
            
            
            
              button I'm going to submit the form and that's going to route me to
            
            
            
              the output function in my demo py file.
            
            
            
              Let's take a look at what happens in the output function.
            
            
            
              So first of all, I'm going to get a list of all the assets,
            
            
            
              all the images that I uploaded using the upload
            
            
            
              preset and labeled as computer vision demo.
            
            
            
              Next, I'm going to loop through every single one of those assets and get
            
            
            
              all of the details that I gathered using the analysis
            
            
            
              that I set in the upload preset. Cloudinary API resources
            
            
            
              actually returns a JSON object which contains all the information that
            
            
            
              we gathered on analysis, and it also includes the
            
            
            
              images delivery URL. And here you can see an example of
            
            
            
              what that might look like. Now let's take a look at the parameters that we
            
            
            
              use in that method. I'm going to call each image
            
            
            
              by its public id. That's how I'm going to specify the image.
            
            
            
              And faces equals true means that I'm going to gather
            
            
            
              all the information that I got on the faces. Color equals true means
            
            
            
              I'm gathering all the information that I got on the predominant color.
            
            
            
              First thing I'm going to do is I'm only going to display the
            
            
            
              image if the moderation status is approved,
            
            
            
              meaning that any image that wasn't deemed to be appropriate or wasn't
            
            
            
              deemed to be legal is going to not appear on my website.
            
            
            
              The next thing that I'm going to do is I'm going to save the
            
            
            
              delivery URL of the particular images
            
            
            
              in the variable URL. Now, I didn't discuss this earlier,
            
            
            
              but you should know that one of the hallmark collateral
            
            
            
              functionalities is that I can actually do edits and transformations
            
            
            
              on the images by adding details, by adding parameters
            
            
            
              to its delivery URL. Meaning if I want to crop
            
            
            
              or add an effect or add an overlay,
            
            
            
              all I have to do is programmatically change its delivery URL
            
            
            
              and voila, you'll see it affecting how the image actually is displayed.
            
            
            
              So we're going to look at that in a second. The next
            
            
            
              thing that I'm going to do is I'm going to build the title.
            
            
            
              Now, how am I going to build the title? If you remember,
            
            
            
              I used object detection in my upload parameter and
            
            
            
              I auto tagged each image based on the objects that
            
            
            
              were detected. So I'm going to retrieve those tags
            
            
            
              and that's how I'm going to build what I display in my title
            
            
            
              for each image. Now,
            
            
            
              the message on the bottom, all the information that I displayed
            
            
            
              underneath each picture, I'm also going to build that. So first of
            
            
            
              all, the object detection, if it detected some sort
            
            
            
              of phrase, it's going to display that in the message. If there
            
            
            
              was no message, if there's no text detected, then it's going
            
            
            
              to tell me that also faces,
            
            
            
              if I don't detect any faces, I'm going to display the message.
            
            
            
              There aren't any faces, but if I do
            
            
            
              detect one or more faces, then I'm going to display
            
            
            
              that and I'm going to also print out the coordinates of the detected
            
            
            
              faces. I'm going to also be able to output
            
            
            
              whether the image is landscape or portrait
            
            
            
              orientation by dividing the width and height of
            
            
            
              the image as detected by the analysis.
            
            
            
              I'm going to take the predominant colors and print that out.
            
            
            
              And finally, and most excitingly, I'm going to take the
            
            
            
              deliver URL and I'm going to create a transformation out of that.
            
            
            
              Okay, in the deliver URL, I'm going to
            
            
            
              say that I want to have a width of 600, a height
            
            
            
              of 600, making it square. I'm going to
            
            
            
              set it to paint out the background.
            
            
            
              Remember what we said, that I don't want to squash my image, I don't want
            
            
            
              to distort it, I don't want to crop off any parts of it. What I
            
            
            
              want to do is I want to fill in the parts that
            
            
            
              are kind of left blank when
            
            
            
              I shrunk it to fit into a square. And I'm going to fill that
            
            
            
              in with AI so that actually the picture is automatically
            
            
            
              and beautifully painted out to fit the bounding box of a square.
            
            
            
              This is where I overlay the sunglasses onto each face and
            
            
            
              if I do say so myself, it actually did quite a
            
            
            
              good job in placing those sunglasses right on top of the eyes of
            
            
            
              every single image that was of every single face that was detected
            
            
            
              in the image. I'm going to create a
            
            
            
              border out of the predominant color and the
            
            
            
              last thing that I'm going to do within the transformation is
            
            
            
              also something that is a cloudinary feature which is
            
            
            
              optimizing each image. Quality equals
            
            
            
              auto and fetch format equals auto.
            
            
            
              Actually optimize your image so that the loading
            
            
            
              time for your website is reduced and your web
            
            
            
              performance is increased by a ton.
            
            
            
              So what quality equals auto does is it compresses
            
            
            
              all of your images automatically so that you've got the
            
            
            
              best compression versus keeping your
            
            
            
              images as clear and as high quality visually as
            
            
            
              possible. What fetch format does
            
            
            
              is it delivers the image in the optimal format
            
            
            
              for the requesting browser so that each time you automatically get
            
            
            
              the image compressed and delivered
            
            
            
              in the best format and compression possible for that image
            
            
            
              for the requesting browser. Finally,
            
            
            
              we finished with our transformations. We finished appending our messages
            
            
            
              and the last thing that we want to do is we want to sort through
            
            
            
              based on the tags and the auto tagging that we saved
            
            
            
              for each image. And we want to make sure that we take the people
            
            
            
              and we put them in the people category and the shoes and we put
            
            
            
              them in the shoe category. And of course you can go on and on and
            
            
            
              on and you can build this out to whatever your needs are,
            
            
            
              whether you're displaying accessories or clothes
            
            
            
              or shirts or dresses or menswear or women's wear,
            
            
            
              children's wear, whatever you want. You can definitely
            
            
            
              use the AI and the auto tagging to display the
            
            
            
              images in the proper location. And of course,
            
            
            
              the outcome of this function is to render output HTML where
            
            
            
              all our images are delivered, using the analysis
            
            
            
              and applying it to them appropriately as we instructed on our
            
            
            
              program. So hopefully
            
            
            
              you've gained a little bit of insight and a little bit of inspiration
            
            
            
              from this app. You've gotten a taste of what AI
            
            
            
              can do for you and how it can help you handle your images and
            
            
            
              videos in your websites or apps when you're using a large volume
            
            
            
              of images or user generated content.
            
            
            
              And feel free to take any of these features
            
            
            
              that we've shown here on our little demo
            
            
            
              and use them as appropriate for your use case and your website
            
            
            
              or app. This code is available on GitHub and I've
            
            
            
              provided a link in the corresponding presentation. Now I've
            
            
            
              also provided a few links that you can go ahead and
            
            
            
              learn some more in our documentation,
            
            
            
              including seeing AI in action transformations,
            
            
            
              you've got a listing, a full listing of all the transformations that are
            
            
            
              available, all the parameters that you can add and all
            
            
            
              the effects that you can add, all of the optimizations
            
            
            
              and transformations and
            
            
            
              cropping methods that you can utilize just
            
            
            
              by adding parameters inside your delivery URL.
            
            
            
              Of course, the optimization make sure that compression for your
            
            
            
              images are optimal, meaning that they are the smallest
            
            
            
              size they could be, while not losing any visual quality
            
            
            
              that you're delivering your images in the
            
            
            
              optimal format for the requesting browser.
            
            
            
              All of the options that you can set on your upload presets.
            
            
            
              We've seen just a few of them in this app.
            
            
            
              Images analysis, all the features, all the ways in
            
            
            
              which you can ask AI to analyze your images,
            
            
            
              and of course the upload widget, which is a cute little UI for
            
            
            
              user generated content on your e commerce websites.
            
            
            
              So I hope you enjoyed this presentation, and I hope you
            
            
            
              enjoy the rest of the talks in content reference 42.
            
            
            
              And please, I welcome you and I encourage you to experiment
            
            
            
              with your new free account in cloudinary and let us know how you've
            
            
            
              used cloudinary in our community and Discord Channel.