Nota: Este projeto não é mais mantido e pode não ser compatível com o mais novo Pytorch (após 0,4.0).
Esta é uma implementação de Pytorch do Yolov2. Este projeto é baseado principalmente no Darkflow e DarkNet.
Usei uma extensão de Cython para pós -processamento e multiprocessing.Pool para pré -processamento de imagem. Testar uma imagem no VOC2007 custa cerca de 13 ~ 20ms.
Para detalhes sobre YOLO e YOLOV2, consulte a página do projeto e o artigo: YOLO9000: Melhor, mais rápido, mais forte por Joseph Redmon e Ali Farhadi .
Nota 1: Este ainda é um projeto experimental. O mapa de teste VOC07 é de cerca de 0,71 (treinado no VOC07+12 TrainVal, relatado por @cory8249). Consulte a edição1 e a edição23 para obter mais detalhes sobre o treinamento.
Nota 2: Eu recomendo escrever seu próprio dataloader usando torch.utils.data.dataSet Desde que multiprocessing.Pool.imap não parará, mesmo não há espaço de memória suficiente. Um exemplo de dataloader para Vocdataset: Edição71.
Nota 3: Atualizar para Pytorch 0.4: #59
Clone este repositório
git clone [email protected]:longcw/yolo2-pytorch.git Construa a camada reorg ( tf.extract_image_patches )
cd yolo2-pytorch
./make.sh Faça o download do modelo treinado yolo-voc.weights.h5 (link atualizado) e defina o caminho do modelo em demo.py
Run Demo python demo.py
Você pode treinar YOLO2 em qualquer conjunto de dados. Aqui treinamos no VOC2007/2012.
Faça o download do treinamento, validação, dados de teste e vocdevkit
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar Extraia todos esses alcatrões em um diretório chamado VOCdevkit
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tarDeve ter essa estrutura básica
$VOCdevkit / # development kit
$VOCdevkit /VOCcode/ # VOC utility code
$VOCdevkit /VOC2007 # image sets, annotations, etc.
# ... and several other directories ... Como o programa carregando os dados no yolo2-pytorch/data por padrão, você pode definir o caminho dos dados como seguintes.
cd yolo2-pytorch
mkdir data
cd data
ln -s $VOCdevkit VOCdevkit2007 Faça o download do modelo pré-terenciado DarkNet19 (link atualizado) e defina o caminho em yolo2-pytorch/cfgs/exps/darknet19_exp1.py .
(Opcional) Treinamento com Tensorboard.
Para usar o Tensorboard, defina use_tensorboard = True em yolo2-pytorch/cfgs/config.py e instale o tensorboardx (https://github.com/lanpa/tensorboard-pytorch). O Tensorboard Log será salvo em training/runs .
Execute o programa de treinamento: python train.py .
Defina o caminho do trained_model em yolo2-pytorch/cfgs/config.py .
cd faster_rcnn_pytorch
mkdir output
python test.pyO passe para a frente exige que você forneça 4 argumentos à rede:
im_data - dados de imagem.C x H x W , onde C corresponde aos canais de cores da imagem e H e W são a altura e a largura, respectivamente.imcv2_recolor fornecida no utils/im_transform.py para pré -processar sua imagem. Além disso, verifique se as imagens foram redimensionadas para 416 x 416 pixelsgt_boxes - Uma lista de matrizes numpy , onde cada uma é de tamanho N x 4 , onde N é o número de recursos na imagem. Os quatro valores em cada linha devem corresponder a x_bottom_left , y_bottom_left , x_top_right e y_top_right .gt_classes - Uma lista de matrizes numpy , onde cada matriz contém um valor inteiro correspondente à classe de cada caixa delimitadora fornecida em gt_boxesdontcare - uma lista de listasLicença: MIT Licença (MIT)