Пример #1
0
        public async Task SearchForImages()
        {
            IsBusy = true;
            //Bing Image API
            var url = $"https://api.cognitive.microsoft.com/bing/v7.0/images" +
                      $"search?q={_searchString}" +
                      $"&count=20&offset=0&mkt=en-us&safeSearch=Strict";

            try
            {
                var result = await BingImageSearchService.SearchForImages(url);

                Images = result.Images.Select(i => new ImageResult
                {
                    ContextLink   = i.HostPageUrl,
                    FileFormat    = i.EncodingFormat,
                    ImageLink     = i.ContentUrl,
                    ThumbnailLink = i.ThumbnailUrl,
                    Title         = i.Name
                }).ToList();
            }
            catch (Exception ex)
            {
                var message = ex.Message;
            }
            finally
            {
                IsBusy = false;
            }
        }
Пример #2
0
        public async Task TopPlayersPositionAvailable(IDialogContext context, LuisResult result)
        {
            await context.PostAsync("Let me take a look...");

            DBConnector            _dbconnector        = new DBConnector();
            BingImageSearchService _imageSearchService = new BingImageSearchService();

            string message = "";

            if (result.Entities.Count > 0)
            {
                string position = result.Entities.Where(e => e.Type == "Position").FirstOrDefault().Entity.ToUpper();
                int    number   = 0;
                int.TryParse(result.Entities.Where(e => e.Type == "builtin.number").FirstOrDefault().Entity, out number);
                if (string.IsNullOrEmpty(position))
                {
                    message = "Didn't get the position...could you please try again?";
                    await PostMessage(context, message);
                }
                else
                {
                    List <Predictions> predictions = new List <Predictions>();
                    if (number > 0)
                    {
                        predictions = await _dbconnector.GetAvailableTopPlayersByPosition(position, number);

                        await context.PostAsync($"These are the top {number} {position}s available:");
                    }
                    else
                    {
                        predictions = await _dbconnector.GetAvailablePlayersByPosition(position);

                        message = $"These are all the {position}s available:\n";
                    }

                    List <Attachment> attachments = new List <Attachment>();
                    foreach (Predictions p in predictions)
                    {
                        string picture = await _imageSearchService.GetPlayerPhotoByName(p.Player);

                        Attachment attachment = CreateThumbnailCard(picture, p, false);
                        attachments.Add(attachment);
                    }
                    await ReplyWithCards(context, attachments);
                }
            }
            else
            {
                message = "Something went wrong...could you please try again?";
                await PostMessage(context, message);
            }
        }
Пример #3
0
 // Matt Custom Search Part 3
 public static void CallBingCustomSearchImageAPI()
 {
     try
     {
         // Get the file name
         Console.WriteLine("Please enter a search query:");
         var searchQuery = Console.ReadLine();
         var query       = new BingImageSearchQuery(searchQuery, Constants.BING_CUSTOM_SEARCH_KEY, Constants.CUSTOM_CONFIG_ID, "en-US", 10);
         var result      = BingImageSearchService.CallImageSearchAPI(query).Result;
         ExportJSON(JsonConvert.SerializeObject(result));
         Console.WriteLine("\nPress Enter to exit ");
         Console.ReadLine();
     }
     catch (Exception ex)
     {
         Console.WriteLine("Error: " + ex.Message);
         Console.ReadLine();
         throw;
     }
 }
Пример #4
0
        public async Task PlayerOverview(IDialogContext context, LuisResult result)
        {
            await context.PostAsync("Looking for him, give me a sec...");

            DBConnector            _dbconnector        = new DBConnector();
            BingImageSearchService _imageSearchService = new BingImageSearchService();
            BingNewsSearchService  _newsSearchService  = new BingNewsSearchService();

            string message = "";

            if (result.Entities.Count > 0)
            {
                string      playerName = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(result.Entities.Where(e => e.Type == "Player").FirstOrDefault().Entity);
                Predictions playerInfo = await _dbconnector.GetPlayerInfoByName(playerName);

                if (string.IsNullOrEmpty(playerName) || playerInfo == null)
                {
                    message = "I'm afraid I don't know this player...could you please try again?";
                    await PostMessage(context, message);
                }
                else
                {
                    var picture = await _imageSearchService.GetPlayerPhotoByName(playerInfo.Player);

                    List <NewsValue> news = await _newsSearchService.GetPlayerNewsByName(playerInfo.Player);

                    Attachment        card         = CreateOverviewCard(picture, playerInfo);
                    List <Attachment> newsCarousel = CreateNewsCarousel(news);

                    await context.PostAsync("Got it!");
                    await ReplyWithCardAndNews(context, card, newsCarousel);
                }
            }
            else
            {
                message = "I'm afraid I don't know this player...could you please try again?";
                await PostMessage(context, message);
            }
        }
Пример #5
0
        static async Task MainAsync(string[] args)
        {
            /* you need at least 2 tags and 5 images for each tag to start*/


            var basepath = Directory.GetCurrentDirectory();

            //read tags
            var tsgfilepath = $"{basepath}\\tags.csv";

            Console.WriteLine($"\tReading Tags from {tsgfilepath}");
            var tags = ReadTags(tsgfilepath);

            //generate random name for the project
            var projectName = tags.Count == 2 ? $"{tags[0]} {tags[1]} classifier {DateTime.Now:yyyyMMddHHmm}" : DateTime.Now.ToString("yyyyMMddHHmm");

            Console.WriteLine($"\tCreating a project in customvision.ai - project name: {projectName}");

            var project = CreateProject(projectName);

            //download images -
            var imagesresouce   = $"{basepath}\\{projectName}\\data\\";
            var trainingSetPath = $"{imagesresouce}TrainingSet";
            var testSetPath     = $"{imagesresouce}TestSet";

            Console.WriteLine($"\tBing search & downloading images - split them in TrainingSet & TestSet for each tag");
            Console.WriteLine($"\tTrainingSetPath: {trainingSetPath}");
            Console.WriteLine($"\tTestSetPath: {testSetPath}");
            System.IO.Directory.CreateDirectory(trainingSetPath);
            System.IO.Directory.CreateDirectory(testSetPath);



            var minTrainingPhotosCount = int.Parse(ConfigurationManager.AppSettings["TrainingImagesCount"]);
            var minTestPhotosCount     = int.Parse(ConfigurationManager.AppSettings["TestImagesCount"]);

            var sizeOfImageSet = (minTrainingPhotosCount + minTestPhotosCount) * 3;

            var augmentTrainingImages = bool.Parse(ConfigurationManager.AppSettings["AugmentTrainingImages"]);

            foreach (var tag in tags)
            {
                {
                    using (var bingImageSearchService = new BingImageSearchService())
                    {
                        Console.WriteLine($"\tStarting the Process for : {tag}");

                        var bingresult = await bingImageSearchService.ImageSearch(tag, sizeOfImageSet);

                        if (bingresult.value == null)
                        {
                            return;
                        }
                        //
                        using (var writer = new StreamWriter($"{imagesresouce}\\{tag}_resource.csv"))
                        {
                            using (var csvWriter = new CsvWriter(writer))
                            {
                                csvWriter.WriteRecords(bingresult.value);
                            }
                        }

                        var randomize = bool.Parse(ConfigurationManager.AppSettings["Randomize"]);
                        var imageList = bingresult.value.ToList();
                        if (randomize)
                        {
                            imageList.Shuffle();
                        }
                        //training
                        Console.WriteLine($"\tDownloading the training set");
                        var trainingphotos = await DownloadImagesAsync($"{trainingSetPath}\\{tag}", imageList, minTrainingPhotosCount, augmentTrainingImages);

                        //test
                        Console.WriteLine($"\tDownloading the test set");
                        var testphotos = await DownloadImagesAsync($"{testSetPath}\\{tag}", imageList.Skip(trainingphotos).ToList(), minTestPhotosCount);

                        if (trainingphotos < minTrainingPhotosCount || testphotos < minTestPhotosCount)
                        {
                            throw new Exception($"Bing couldn't find required images.you need at least 2 tags and 5 images for each tag to start");
                        }
                    }
                }
            }



            CreateTheModel(trainingSetPath, project);

            // Now there are images with tags start training the project
            TrainTheModel(project);

            Console.WriteLine($"\tTesting the Model");

            TestingTheModel(testSetPath, project);
        }
Пример #6
0
        static async Task MainAsync(string[] args)
        {
            /* you need at least 2 tags and 5 images for each tag to start*/

            //generate random name for the project
            var projectName = Guid.NewGuid().ToString();

            Console.WriteLine($"\tCreating a project in customvision.ai - project name: {projectName}");
            var project = CreateProject(projectName);


            var basepath = Directory.GetCurrentDirectory();

            //read tags
            var tsgfilepath = $"{basepath}\\tags.csv";

            Console.WriteLine($"\tReading Tags from {tsgfilepath}");
            var tags = ReadTags(tsgfilepath);


            //download images -
            var trainingSetPath = $"{basepath}\\{projectName}\\data\\TrainingSet";
            var testSetPath     = $"{basepath}\\{projectName}\\data\\TestSet";

            Console.WriteLine($"\tBing search & downloading images - split them in TrainingSet & TestSet for each tag");
            Console.WriteLine($"\tTrainingSetPath: {trainingSetPath}");
            Console.WriteLine($"\tTestSetPath: {testSetPath}");
            System.IO.Directory.CreateDirectory(trainingSetPath);
            System.IO.Directory.CreateDirectory(testSetPath);


            int minTrainingPhotosCount = 5;
            int minTestPhotosCount     = 3;

            foreach (var tag in tags)
            {
                {
                    using (var bingImageSearchService = new BingImageSearchService())
                    {
                        Console.WriteLine($"\tStarting the Process for : {tag}");

                        var bingresult = await bingImageSearchService.ImageSearch(tag, 20);

                        if (bingresult.value == null)
                        {
                            return;
                        }
                        //training
                        Console.WriteLine($"\tDownloading the training set");
                        var trainingphotos = DownloadImages($"{trainingSetPath}\\{tag}", bingresult.value.ToList(), minTrainingPhotosCount);
                        //test
                        Console.WriteLine($"\tDownloading the test set");
                        var testphotos = DownloadImages($"{testSetPath}\\{tag}", bingresult.value.Skip(trainingphotos).ToList(), minTestPhotosCount);

                        if (trainingphotos < minTrainingPhotosCount || testphotos < minTestPhotosCount)
                        {
                            throw new Exception($"Bing couldn't find required images.you need at least 2 tags and 5 images for each tag to start");
                        }
                    }
                }
            }

            CreateTheModel(trainingSetPath, project);

            // Now there are images with tags start training the project
            TrainTheModel(project);

            Console.WriteLine($"\tTesting the Model");

            TestingTheModel(testSetPath, project);
        }
Пример #7
0
        static async Task MainAsync(string[] args)
        {
            /* you need at least 2 tags and 5 images for each tag to start*/

            var basepath = Directory.GetCurrentDirectory();

            //read tags
            var tsgfilepath = $"{basepath}\\tags.csv";

            Console.WriteLine($"\tReading Tags from {tsgfilepath}");
            var tags = ReadTags(tsgfilepath);

            //generate random name for the project if projectname isn't passed in
            string projectName = string.Empty;

            try
            {
                projectName = ConfigurationManager.AppSettings["ProjectName"];
            }
            catch { }

            if (projectName == string.Empty)
            {
                projectName = tags.Count == 2 ? $"{tags[0]} {tags[1]} classifier {DateTime.Now:yyyyMMddHHmm}" : DateTime.Now.ToString("yyyyMMddHHmm");
            }

            Console.WriteLine($"\tCreating or returning project in customvision.ai - project name: {projectName}");
            var project = CreateProject(projectName);

            //download images -
            var imagesresouce   = $"{basepath}\\{projectName}\\data\\";
            var trainingSetPath = $"{imagesresouce}TrainingSet";
            var testSetPath     = $"{imagesresouce}TestSet";

            Console.WriteLine($"\tBing search & downloading images - split them in TrainingSet & TestSet for each tag");
            Console.WriteLine($"\tTrainingSetPath: {trainingSetPath}");
            Console.WriteLine($"\tTestSetPath: {testSetPath}");
            try {
                // create the directory if it doesn't already exist
                System.IO.Directory.CreateDirectory(trainingSetPath);
            }
            catch { }
            try
            {
                // create the directory if it doesn't already exist
                System.IO.Directory.CreateDirectory(testSetPath);
            }
            catch { }

            int sizeOfImageSet = 10;

            try
            {
                sizeOfImageSet = Convert.ToInt16(ConfigurationManager.AppSettings["SizeOfImageSet"]); //recommend 100
            }
            catch { }

            bool PerformImageDownload = true;

            try
            {
                PerformImageDownload = Convert.ToBoolean(ConfigurationManager.AppSettings["PerformImageDownload"]);
            }
            catch { }

            if (PerformImageDownload)
            {
                foreach (var tag in tags)
                {
                    {
                        using (var bingImageSearchService = new BingImageSearchService())
                        {
                            Console.WriteLine($"\tStarting the Process for : {tag}");
                            string tagResource = $"{imagesresouce}\\{tag}_resource.csv";
                            try
                            {
                                // if it exists from a previous run delete it
                                System.IO.File.Delete(tagResource);
                            }
                            catch { }

                            var bingresult = await bingImageSearchService.ImageSearch(tag, sizeOfImageSet);

                            if (bingresult.value == null)
                            {
                                return;
                            }
                            //
                            using (var writer = new StreamWriter(tagResource))
                            {
                                using (var csvWriter = new CsvWriter(writer))
                                {
                                    csvWriter.WriteRecords(bingresult.value);
                                }
                            }

                            Console.WriteLine($"\tDownloading the training and test set");
                            var trainingphotos = DownloadImages(projectName, tag, bingresult.value.ToList(), sizeOfImageSet);
                        }
                    }
                }
            }

            bool TrainModel = true;

            try
            {
                TrainModel = Convert.ToBoolean(ConfigurationManager.AppSettings["TrainModel"]);
            }
            catch { }

            if (TrainModel)
            {
                Console.WriteLine($"\tCreating the Model");
                CreateTheModel(trainingSetPath, project);

                // Now there are images with tags start training the project
                TrainTheModel(project);
            }

            bool TestModel = true;

            try
            {
                TestModel = Convert.ToBoolean(ConfigurationManager.AppSettings["TestModel"]);
            }
            catch { }

            if (TestModel)
            {
                Console.WriteLine($"\tTesting the Model");
                TestingTheModel(testSetPath, project);
            }
        }