回答編集履歴
5
修正
test
CHANGED
@@ -12,9 +12,9 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
下記darknet公式から入手できるyolov3-tiny
|
15
|
+
下記darknet公式から入手できるyolov3-tinyのweightファイルを
|
16
16
|
|
17
|
-
.h5ファイルに変換し、そ.h5ファイルをcoremltoolsにすることを目標にしました。
|
17
|
+
.h5ファイルに変換し、その.h5ファイルをcoremltoolsにすることを目標にしました。
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
-
いろいろ試したり調べたりした結果、このデータを、最終的にmlmodelファイルに変換できた事例を一応載せておきます。
|
25
|
+
いろいろ試したり調べたりした結果、この.weightデータを、最終的にmlmodelファイルに変換できた事例を一応載せておきます。
|
26
26
|
|
27
27
|
|
28
28
|
|
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
-
手順:tiny-yolov3から.h5ファイルへの変換に、keras-yolo3ではなく、YAD2Kを使用します。
|
45
|
+
手順:tiny-yolov3のweightsファイルから.h5ファイルへの変換に、keras-yolo3ではなく、YAD2Kを使用します。
|
46
46
|
|
47
47
|
ただし、[本家YAD2k](https://github.com/allanzelener/YAD2K)は、現状tiny-yolov3に完全対応していないようなので、(yolo_0 header errorが出る)
|
48
48
|
|
4
修正
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
下記darknet公式から入手できるyolov3-tinyトレーニング済データを
|
16
16
|
|
17
|
-
.h5ファイルに変換し、そ
|
17
|
+
.h5ファイルに変換し、そ.h5ファイルをcoremltoolsにすることを目標にしました。
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
注)
|
30
30
|
|
31
|
-
・今回変換?できたのはあくまで
|
31
|
+
・今回変換?できたのはあくまで**上記tiny-yolov3のサンプルデータ**です。
|
32
32
|
|
33
33
|
・「tinyでない」yolov3サンプルデータ(上の公式から別で落とせます)は変換に失敗しました。(shortcut_0 header error が出る)
|
34
34
|
|
@@ -108,11 +108,11 @@
|
|
108
108
|
|
109
109
|
https://github.com/xiaochus/YOLOv3
|
110
110
|
|
111
|
-
|
111
|
+
を使っても、一応変換できるようです。
|
112
112
|
|
113
113
|
(上記私家版YAD2Kで変換してできるh5ファイルとはファイルサイズが異なっていました。
|
114
114
|
|
115
|
-
処理の最後で、pydotとgraphizがビルドされていないというエラーが出ますが.h5ファイルは作られま
|
115
|
+
処理の最後で、pydotとgraphizがビルドされていないというエラーが出ますが.h5ファイルは作られていました)
|
116
116
|
|
117
117
|
|
118
118
|
|
3
修正
test
CHANGED
@@ -12,9 +12,9 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
下記
|
15
|
+
下記darknet公式から入手できるyolov3-tinyトレーニング済データを
|
16
16
|
|
17
|
-
|
17
|
+
.h5ファイルに変換し、その.h5ファイルをcoremltoolsにすることを目標にしました。
|
18
18
|
|
19
19
|
|
20
20
|
|
2
追試したので修正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
下記環境で試しました:
|
1
|
+
引き続き下記環境で試しました:
|
2
2
|
|
3
3
|
macOS 10.15.5
|
4
4
|
|
@@ -12,58 +12,112 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
+
下記のdarknet公式から入手できるyolov3-tinyトレーニング済データを
|
16
|
+
|
15
|
-
|
17
|
+
kelas-yolo3で.h5ファイルに変換し,.h5ファイルをcoremltoolsにすることを目標にしました。
|
16
18
|
|
17
19
|
|
18
20
|
|
19
|
-
```
|
20
|
-
|
21
|
-
# or save the keras model in HDF5 format and then convert
|
22
|
-
|
23
|
-
tf_keras_model.save('tf_keras_model.h5')
|
24
|
-
|
25
|
-
m
|
21
|
+
サンプルデータ:[https://pjreddie.com/media/files/yolov3-tiny.weight](https://pjreddie.com/media/files/yolov3-tiny.weight)
|
26
|
-
|
27
|
-
```
|
28
|
-
|
29
|
-
となっていました。
|
30
|
-
|
31
|
-
このconvert関数はバージョン3.4.0では実装されておらず、少なくとも最新バージョン4.0b2に実装されています。
|
32
22
|
|
33
23
|
|
34
24
|
|
35
|
-
|
25
|
+
いろいろ試したり調べたりした結果、このデータを、最終的にmlmodelファイルに変換できた事例を一応載せておきます。
|
36
26
|
|
37
27
|
|
38
28
|
|
39
|
-
|
29
|
+
注)
|
40
30
|
|
41
|
-
ま
|
31
|
+
・今回変換?できたのはあくまで**上記tiny-yolov3のサンプルデータ**です。
|
42
32
|
|
43
|
-
t
|
33
|
+
・「tinyでない」yolov3サンプルデータ(上の公式から別で落とせます)は変換に失敗しました。(shortcut_0 header error が出る)
|
44
34
|
|
45
|
-
ke
|
35
|
+
・darknetではなくcocoで学習したデータは試していません。
|
46
36
|
|
37
|
+
・自力でdarknetを用いてtiny-yolov3として学習させたオリジナルデータを作成して試したりしていません。
|
38
|
+
|
47
|
-
も
|
39
|
+
・変換後のデータが、本当にきちんと学習済のものとして使用に耐えうるものかも検証できていません.
|
40
|
+
|
41
|
+
・tinyでないyolov3とtiny-yolov3は別物なので引数に指定するファイル名等は気をつけてください(自分も何回か間違えて変換に失敗した)
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
手順:tiny-yolov3から.h5ファイルへの変換に、keras-yolo3ではなく、YAD2Kを使用します。
|
46
|
+
|
47
|
+
ただし、[本家YAD2k](https://github.com/allanzelener/YAD2K)は、現状tiny-yolov3に完全対応していないようなので、(yolo_0 header errorが出る)
|
48
|
+
|
49
|
+
フォークされた[https://github.com/prakharcode/YAD2K](https://github.com/prakharcode/YAD2K)を使用します。
|
48
50
|
|
49
51
|
|
50
52
|
|
51
53
|
|
52
54
|
|
55
|
+
```lang-Terminal
|
56
|
+
|
57
|
+
git clone https://github.com/prakharcode/YAD2K.git
|
58
|
+
|
53
|
-
|
59
|
+
cd YAD2K
|
54
60
|
|
55
61
|
```
|
56
62
|
|
63
|
+
yolov3-tinyのサンプルデータ:[https://pjreddie.com/media/files/yolov3-tiny.weight](https://pjreddie.com/media/files/yolov3-tiny.weight)
|
64
|
+
|
65
|
+
をダウンロードし、上記YAD2Kディレクトリにコピーします。
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
また同じYAD2Kディレクトリに、yolov3-tiny.cfgもコピーします。(実際はトレーニング時に使った物と同じcfgがいいかもしれませんが、私は[keras-yolo3](https://github.com/qqwweee/keras-yolo3)リポジトリ内にあるyolov3-tiny.cfgを利用しました)
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
YAD2Kディレクトリ内で下記を実行します。
|
74
|
+
|
75
|
+
```lang-Terminal
|
76
|
+
|
57
|
-
|
77
|
+
python3 yad2k.py yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.h5
|
58
78
|
|
59
79
|
```
|
60
80
|
|
81
|
+
エラーなければ、yolov3-tiny.h5が作成されているはずです。
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
あとはこのyolov3-tiny.h5 をcoremltools 4.0bで変換します。
|
86
|
+
|
61
|
-
|
87
|
+
(以前言及した、convert()関数を使用)
|
62
88
|
|
63
89
|
```
|
64
90
|
|
91
|
+
import coremltools
|
92
|
+
|
93
|
+
from tensorflow.keras import models, layers
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
model = models.load_model('yolov3-tiny.h5')
|
98
|
+
|
65
99
|
coreml_model = coremltools.convert(model)
|
100
|
+
|
101
|
+
coreml_model.save('my_model-yolov3-tiny.mlmodel')
|
66
102
|
|
67
103
|
```
|
68
104
|
|
105
|
+
|
106
|
+
|
107
|
+
蛇足:
|
108
|
+
|
109
|
+
https://github.com/xiaochus/YOLOv3
|
110
|
+
|
69
|
-
|
111
|
+
でも、変換できるようです。
|
112
|
+
|
113
|
+
(上記私家版YAD2Kで変換してできるh5ファイルとはファイルサイズが異なっていました。
|
114
|
+
|
115
|
+
処理の最後で、pydotとgraphizがビルドされていないというエラーが出ますが.h5ファイルは作られます)
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
参考:
|
120
|
+
|
121
|
+
[coremlのドキュメント内のサンプルコード](https://coremltools.readme.io/docs/tensorflow-2#conversion-from-user-defined-models)
|
122
|
+
|
123
|
+
[https://github.com/qqwweee/keras-yolo3/issues/507](https://github.com/qqwweee/keras-yolo3/issues/507#issuecomment-552976826)
|
1
pythonバージョンを追記
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
macOS 10.15.5
|
4
4
|
|
5
|
-
python
|
5
|
+
python 3.7.7 (virtualenv)
|
6
6
|
|
7
7
|
coreremltools 4.0b2
|
8
8
|
|