Beispiel #1
0
        private void Check(GpuConfig gpuConfig)
        {
            var yoloWrapper = new YoloWrapper("yolov2-tiny-voc.cfg", "yolov2-tiny-voc.weights", "voc.names", gpuConfig);
            var files       = Directory.GetFiles(@".\Images");

            var retrys = 10;

            var sw = new Stopwatch();

            foreach (var file in files)
            {
                var elapsed   = 0.0;
                var fileInfo  = new FileInfo(file);
                var imageData = File.ReadAllBytes(file);

                for (var i = 0; i < retrys; i++)
                {
                    sw.Restart();
                    yoloWrapper.Detect(imageData);
                    sw.Stop();

                    elapsed += sw.Elapsed.TotalMilliseconds;
                }

                var average = elapsed / retrys;
                Console.WriteLine($"{fileInfo.Name} {average}ms");
            }

            yoloWrapper.Dispose();
        }
Beispiel #2
0
        private void Initialize(YoloConfiguration config)
        {
            try
            {
                if (this._yoloWrapper != null)
                {
                    this._yoloWrapper.Dispose();
                }

                var gpuConfig  = new GpuConfig();
                var useOnlyCpu = false;
                if (useOnlyCpu)
                {
                    gpuConfig = null;
                }

                this._yoloWrapper = new YoloWrapper(config.ConfigFile, config.WeightsFile, config.NamesFile, gpuConfig);


                var action = new MethodInvoker(delegate()
                {
                    var deviceName = this._yoloWrapper.GetGraphicDeviceName(gpuConfig);
                });
            }
            catch (Exception exception)
            {
                MessageBox.Show($"{nameof(Initialize)} - {exception}", "Error Initialize", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Instantiates the model / gets the wrapper up and running
        /// </summary>
        public void WalkThisWay()
        {
            var gpuConfig = new GpuConfig();

            try
            {
                this.yoloWrapper = new YoloWrapper(configurationFilename: this.modelDetailsCfg,
                                                   weightsFilename: this.modelDetailsWeights,
                                                   namesFilename: this.modelDetailsNames,
                                                   gpuConfig: gpuConfig);

                Console.WriteLine(" GPU is ready to be used. Welcome to the fast lane!");
                gpuAvailable = true;
            }
            catch
            {
                Console.WriteLine(" GPU is not able to be used. See documentation for details.");
                Console.WriteLine(" Running with CPU config instead...");

                this.yoloWrapper = new YoloWrapper(configurationFilename: this.modelDetailsCfg,
                                                   weightsFilename: this.modelDetailsWeights,
                                                   namesFilename: this.modelDetailsNames,
                                                   gpuConfig: null);

                gpuAvailable = false;
            }
        }
Beispiel #4
0
        public void run()
        {
            detect = true;

            const int screenWidth = 1920;
            const int screenHeight = 1080;
            const int captureRegionWidth = 1200;
            const int captureRegionHeight = 675;

            Console.WriteLine("Starting YOLO object detection ...");
            var gpuConfig = new GpuConfig();
            var yoloConfig =
                new YoloConfiguration("yolov4-valorant.cfg", "yolov4-valorant_last.weights", "valorant.names");
            using (var yoloWrapper = new YoloWrapper(yoloConfig, gpuConfig))
            {
                Console.WriteLine("Starting detection loop ...");
                Stopwatch watch = new Stopwatch();
                Rectangle capRegion = new Rectangle((screenWidth / 2) - (captureRegionWidth / 2),
                    (screenHeight / 2) - (captureRegionHeight / 2), captureRegionWidth, 675);
                while (detect)
                {
                    watch.Restart();
                    Bitmap bmp = cap.CaptureRegion(capRegion);

                    byte[] jpgBytes = (byte[]) new ImageConverter().ConvertTo(bmp, typeof(byte[]));
                    var detectedObjects = yoloWrapper.Detect(jpgBytes);

                    using (Graphics capturedScreen = Graphics.FromImage(bmp))
                    {
                        foreach (var detectedObject in detectedObjects)
                        {
                            Color color;
                            switch (detectedObject.Type)
                            {
                                case "player":
                                    color = Color.LawnGreen;
                                    break;
                                case "head_player":
                                    color = Color.Red;
                                    break;
                                default:
                                    color = Color.Black;
                                    break;
                            }

                            capturedScreen.DrawRectangle(new Pen(color), detectedObject.X, detectedObject.Y,
                                detectedObject.Width, detectedObject.Height);
                            capturedScreen.DrawString(
                                detectedObject.Type + "(" + Math.Round(detectedObject.Confidence * 100) + "%)",
                                new Font(FontFamily.GenericMonospace, 15), new SolidBrush(color), detectedObject.X,
                                detectedObject.Y);
                        }

                        watch.Stop();
                        capturedScreen.DrawString(
                            (1000 / watch.ElapsedMilliseconds) + "FPS (" + watch.ElapsedMilliseconds + "ms)",
                            new Font(FontFamily.GenericMonospace, 15), new SolidBrush(Color.LimeGreen), 10, 10);
                    }

                    form.pictureBox1.Image = bmp;
                }
            }
        }