Skip to content

maianumerosky/EryxYOLO

Repository files navigation

yolov1-pytorch

This repo is a fork from [https://github.com/ivanwhaf/yolov1-pytorch], which is a pytorch implementation of yolov1.

The aim of our project is to get our own implementation up and running and train it in our own dataset.

Readme of the original Project at https://github.com/ivanwhaf/yolov1-pytorch

  • Deep Learning based yolov1 object detector, using Pytorch deep learning framework
  • This project can be also transplanted to other edge platforms like Raspberry Pi
  • Paper: https://arxiv.org/pdf/1506.02640.pdf

Demo

Run in command line

detect.py runs inference on a variety of sources, cd your project path and type:

$ python detect.py -c cfg/yolov1.cfg -d cfg/dataset.cfg -w weights/yolov1.pth --source 0  # webcam
                                                                                       file.jpg  # image 
                                                                                       file.mp4  # video
                                                                                       path/*.jpg # img folder path
                                                                                       path/*.mp4 # video folder path

image

Usage

Preparation

  • 1.Create an empty folder (in this project was dataset folder) as your dataset folder
  • 2.Organize directories, you should move images folder and labels folder into dataset folder. Each image must have corresponding same-name .txt label in labels folder. Each label file has several rows, each row represents an object, each object has x,y,w,h,c five values, which represents center_x, center_y, width, height, class. The coord value should be normalized to 0~1
    image
  • 3.Your dataset folder should be like this:
dataset/{dataset name}/
  ├──images
  |   ├──001.png
  |   ├──002.png
  |   └──003.jpg
  └──labels 
      ├──001.txt
      ├──002.txt
      └──003.txt
  • 4.Your label .txt file should be like this:
0.153262 0.252950 0.185673 0.524723 0
0.467835 0.562623 0.265428 0.113139 1
....

Train

  • 1.Edit cfg/yolov1.yaml config file, and set num_classes according to class number of dataset (this repo num_classes=10)
  • 2.Edit cfg/dataset.yaml config file, and set class_names as class names, set images as dataset images path, set labels as dataset labels path
  • 3.Modify epochs, learning rate, batch size and other hyper parameters in train.py depending on actual situations
  • 4.Run train.py to train your own yolov1 model:
$ python train.py --cfg cfg/yolov1.cfg --data cfg/dataset.cfg

image

Caution

  • Need plotting model structure? Just install graphviz and torchviz first
  • Validation and test periods are among training process, see train.py for more details
  • You can also imitate models/model.py customizing your own model

Program Structure Introduction

  • cfg: some yolo and dataset config files
  • data: some samples and demo jpgs
  • dataset: your own dataset path
  • models: some network model structure files
  • utils: some util and kernel files
  • output: output file folder
  • weights: model weights

Requirements

Python 3.X version with all requirements.txt dependencies installed, including torch>=1.2. To install run:

$ pip install -r requirements.txt

Environment

PC Ⅰ

  • Ubuntu 20.04
  • Python 3.7.8
  • CUDA 10.0
  • cuDNN 7.4
  • torch 1.2.0
  • Nvidia MX350 2G

PC Ⅱ

  • Windows 10
  • Python 3.6.8
  • CUDA 10.2
  • cuDNN 7.6
  • torch 1.6.0
  • Nvidia GTX 1060 3G

PC Ⅲ

  • Windows 10
  • Python 3.8.6
  • CUDA 10.1
  • cuDNN 7.6.5
  • torch 1.7.0
  • Nvidia GTX 1080 TI 11G

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published