sugarme / gotch

Go binding for Pytorch C++ API (libtorch)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Yolo model

rebelate opened this issue · comments

commented

Hi, i want to know the process of making the yolo model on the example file, i always getting error when i try to load my own model (ofc after exporting it as a torchscript
thanks

@rebelate,

In the Yolo3 example, pretrained model weights were saved to numpy .npz. The weights then were loaded to go. Have a look at the below example (taken from example/convert):

package main

import (
	"fmt"
	"log"

	ts "github.com/sugarme/gotch/tensor"
)

func main() {
	// NOTE. Python script to save model to .npz can be found at https://github.com/sugarme/pytorch-pretrained/bert/bert-base-uncased-to-npz.py
	filepath := "../../data/convert-model/bert/model.npz"

	namedTensors, err := ts.ReadNpz(filepath)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Num of named tensor: %v\n", len(namedTensors))
	outputFile := "/home/sugarme/projects/transformer/data/bert/model.gt"
	err = ts.SaveMultiNew(namedTensors, outputFile)
	if err != nil {
		log.Fatal(err)
	}
}

With gotch there's also other ways of loading models using JIT torchscript but for this yolo3, we load pretrained weights to darknet model created in Go.

If you try to use JIT model, please see this JIT example.

Please let me know how things go. Thanks