Exemplo n.º 1
0
        private static void AddFeaturesToJArray(JArray array, PtypeMetadata data)
        {
            foreach (string key in data.Ptype.Features.Keys)
            {
                Bitmap  feature     = data.Ptype.Features[key];
                JObject featureJson = new JObject();
                BitmapToJson(featureJson, feature);
                featureJson.Add("name", key);

                array.Add(featureJson);
            }
        }
Exemplo n.º 2
0
 private static void AddRegionsToJArray(JArray array, PtypeMetadata data)
 {
     foreach (string key in data.Ptype.Regions.Keys)
     {
         Region  region     = data.Ptype.Regions[key];
         JObject regionJson = new JObject();
         BitmapToJson(regionJson, region.Bitmap);
         regionJson.Add("name", key);
         regionJson.Add("matchstrategy", region.MatchStrategy);
         array.Add(regionJson);
     }
 }
Exemplo n.º 3
0
        private static bool LoadDataFromAnnotations(List <AnnotatedNode> annotations, Dictionary <string, PtypeMetadata> ptypeData)
        {
            bool needsUpdate = false;

            foreach (AnnotatedNode a in annotations)
            {
                string id;

                JObject alldata = a.Data;
                JArray  ptypes  = alldata["ptypes"].Value <JArray>();

                foreach (JObject dataJson in ptypes)
                {
                    id = dataJson["ptypeId"].Value <string>();
                    PtypeMetadata data;
                    if (ptypeData.ContainsKey(id))
                    {
                        data = ptypeData[id];
                    }
                    else
                    {
                        data = new PtypeMetadata(id);
                        ptypeData.Add(id, data);
                        data.NeedsUpdate = true;
                    }

                    bool    isPos = dataJson["positive"].Value <bool>();
                    Example ex    = new Example(a.Region, isPos, a.ImageId);

                    if (!data.Examples.Contains(ex))
                    {
                        data.Examples.Add(ex);
                        data.NeedsUpdate = true;
                    }
                    string model = dataJson["model"].Value <string>();


                    if (data.Ptype.Model == null || !data.Ptype.Model.Equals(model))
                    {
                        data.Ptype.Model = model;
                        data.NeedsUpdate = true;
                        needsUpdate      = true;
                    }
                }
            }

            return(needsUpdate);
        }
Exemplo n.º 4
0
        private Dictionary <string, PtypeMetadata> LoadPtypesFromIntent()
        {
            JToken ptypeStr = intent.GetData(INTENT_PTYPES);
            Dictionary <string, PtypeMetadata> ptypeData = new Dictionary <string, PtypeMetadata>();

            if (ptypeStr != null)
            {
                JArray arr = ptypeStr.Value <JArray>();
                foreach (JObject obj in arr)
                {
                    string id = obj.GetValue("id").Value <string> ();

                    PtypeMetadata data = new PtypeMetadata(id);
                    ptypeData.Add(id, data);


                    JArray examplesJson = obj["examples"].Value <JArray>();

                    foreach (JObject exJson in examplesJson)
                    {
                        Example e = GetExample(exJson);
                        data.Examples.Add(e);
                    }

                    JArray featuresJson = obj["features"].Value <JArray>();
                    Dictionary <string, Bitmap> features = GetFeatures(featuresJson);

                    JArray regionsJson = obj["regions"].Value <JArray>();
                    Dictionary <string, Region> regions = GetRegions(regionsJson);
                    string model = obj.Value <string> ("model");


                    data.Ptype.Model    = model;
                    data.Ptype.Features = features;
                    data.Ptype.Regions  = regions;
                }
            }

            return(ptypeData);
        }
		private Dictionary<string, PtypeMetadata> LoadPtypesFromIntent(){

			JToken ptypeStr = intent.GetData(INTENT_PTYPES);
			Dictionary<string, PtypeMetadata> ptypeData = new Dictionary<string, PtypeMetadata>();
			if(ptypeStr != null){

                JArray arr = ptypeStr.Value<JArray>();
				foreach(JObject obj in arr){

					string id = obj.GetValue ("id").Value<string> ();

					PtypeMetadata data = new PtypeMetadata(id);
					ptypeData.Add(id, data);


					JArray examplesJson = obj["examples"].Value<JArray>();

					foreach(JObject exJson in examplesJson){
						Example e = GetExample(exJson);
						data.Examples.Add(e);
					}

					JArray featuresJson = obj["features"].Value<JArray>();
					Dictionary<string, Bitmap> features = GetFeatures(featuresJson);

					JArray regionsJson = obj["regions"].Value<JArray>();
					Dictionary<string, Region> regions = GetRegions(regionsJson);
					string model = obj.Value<string> ("model");


					data.Ptype.Model = model;
					data.Ptype.Features = features;
					data.Ptype.Regions = regions;
				}
			}

			return ptypeData;
		}
		private static void AddFeaturesToJArray(JArray array, PtypeMetadata data){

			foreach(string key in data.Ptype.Features.Keys){
				Bitmap feature = data.Ptype.Features[key];
				JObject featureJson = new JObject ();
				BitmapToJson(featureJson, feature);
				featureJson.Add("name", key);

				array.Add(featureJson);
			}
		}
		private static void AddRegionsToJArray(JArray array, PtypeMetadata data){

			foreach(string key in data.Ptype.Regions.Keys){
				Region region = data.Ptype.Regions[key];
				JObject regionJson = new JObject();
				BitmapToJson(regionJson, region.Bitmap);
				regionJson.Add("name", key);
				regionJson.Add("matchstrategy", region.MatchStrategy);
				array.Add(regionJson);
			}
		}
		private static bool LoadDataFromAnnotations(List<AnnotatedNode> annotations, Dictionary<string, PtypeMetadata> ptypeData) 
        {

			bool needsUpdate = false;
			foreach(AnnotatedNode a in annotations){


				string id;

                JObject alldata = a.Data;
                JArray ptypes = alldata["ptypes"].Value<JArray>();

                foreach (JObject dataJson in ptypes)
                {

                    id = dataJson["ptypeId"].Value<string>();
                    PtypeMetadata data;
                    if (ptypeData.ContainsKey(id))
                        data = ptypeData[id];
                    else
                    {
                        data = new PtypeMetadata(id);
                        ptypeData.Add(id, data);
                        data.NeedsUpdate = true;
                    }

                    bool isPos = dataJson["positive"].Value<bool>();
                    Example ex = new Example(a.Region, isPos, a.ImageId);

                    if (!data.Examples.Contains(ex))
                    {
                        data.Examples.Add(ex);
                        data.NeedsUpdate = true;
                    }
                    string model = dataJson["model"].Value<string>();


                    if (data.Ptype.Model == null || !data.Ptype.Model.Equals(model))
                    {
                        data.Ptype.Model = model;
                        data.NeedsUpdate = true;
                        needsUpdate = true;
                    }
                }

			}

			return needsUpdate;
		}
Exemplo n.º 9
0
        public bool UpdatePtypes(List <AnnotatedNode> annotations, List <Ptype> newLib)
        {
            bool anyRemoved  = RemoveDeletedAnnotations(annotations, ptypeData);
            bool needsUpdate = LoadDataFromAnnotations(annotations, ptypeData) || anyRemoved;

            Dictionary <string, Bitmap> images = new Dictionary <string, Bitmap>();

            foreach (AnnotatedNode n in annotations)
            {
                if (!images.ContainsKey(n.ImageId))
                {
                    images.Add(n.ImageId, (Bitmap)n.Root["capturedpixels"]);
                }
            }

            List <BuildPrototypeArgs> buildargs = new List <BuildPrototypeArgs>();
            List <Ptype.Mutable>      ptypes    = new List <Ptype.Mutable>();

            foreach (PtypeMetadata data in ptypeData.Values)
            {
                if (data.NeedsUpdate)
                {
                    List <Bitmap> positives = new List <Bitmap>();
                    List <Bitmap> negatives = new List <Bitmap>();

                    foreach (Example e in data.Examples)
                    {
                        Bitmap example = Bitmap.Crop(images[e.ImageId], e.Region);
                        if (e.IsPositive)
                        {
                            positives.Add(example);
                        }
                        else
                        {
                            negatives.Add(example);
                        }
                    }

                    Examples           examples = new Examples(positives, negatives);
                    BuildPrototypeArgs args     = new BuildPrototypeArgs(examples, ModelInstances.Get(data.Ptype.Model), data.Ptype.Id);

                    buildargs.Add(args);
                }
                else
                {
                    ptypes.Add(data.Ptype);
                }
            }


            ptypes.AddRange(Ptype.BuildFromExamples(buildargs));

            foreach (Ptype.Mutable ptype in ptypes)
            {
                PtypeMetadata data = ptypeData[ptype.Id];
                data.Ptype.Features = ptype.Features;
                data.Ptype.Regions  = ptype.Regions;
                data.Ptype.Model    = ptype.Model;
            }

            SavePtypesToIntent(intent, ptypeData.Values);

            newLib.AddRange(Ptype.CreatePrototypeLibrary(ptypes));

            return(needsUpdate);
        }