回答編集履歴

5

修正

2020/08/05 11:37

投稿

kotori_a
kotori_a

スコア820

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

修正

2020/08/05 11:37

投稿

kotori_a
kotori_a

スコア820

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  下記darknet公式から入手できるyolov3-tinyトレーニング済データを
16
16
 
17
- .h5ファイルに変換し、その.h5ファイルをcoremltoolsにすることを目標にしました。
17
+ .h5ファイルに変換し、そ.h5ファイルをcoremltoolsにすることを目標にしました。
18
18
 
19
19
 
20
20
 
@@ -28,7 +28,7 @@
28
28
 
29
29
  注)
30
30
 
31
- ・今回変換?できたのはあくまで**上記tiny-yolov3のサンプルデータ**です。
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

修正

2020/08/05 11:33

投稿

kotori_a
kotori_a

スコア820

test CHANGED
@@ -12,9 +12,9 @@
12
12
 
13
13
 
14
14
 
15
- 下記darknet公式から入手できるyolov3-tinyトレーニング済データを
15
+ 下記darknet公式から入手できるyolov3-tinyトレーニング済データを
16
16
 
17
- kelas-yolo3で.h5ファイルに変換し,.h5ファイルをcoremltoolsにすることを目標にしました。
17
+ .h5ファイルに変換し、その.h5ファイルをcoremltoolsにすることを目標にしました。
18
18
 
19
19
 
20
20
 

2

追試したので修正

2020/08/05 11:31

投稿

kotori_a
kotori_a

スコア820

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
- [coremlのドキュメント内のサンプルコード](https://coremltools.readme.io/docs/tensorflow-2#conversion-from-user-defined-models)を参照すると、最終段で
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
- mlmodel = ct.convert('tf_keras_model.h5')
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
- まず新版のcoremlンストー
25
+ いろいろ試したり調べたりした結果、のデータを、最終的にmlmodelファイルに変換できた事例を一応載せておきます。
36
26
 
37
27
 
38
28
 
39
- (pip install coremltools==4.0b2  とバージョン指定する必要があります
29
+
40
30
 
41
- た、
31
+ ・今回変換?できたのはあくで**上記tiny-yolov3のサンプルデータ**です。
42
32
 
43
- tensorflow==2.3.0
33
+ ・「tinyでない」yolov3サンプルデータ(上の公式から別で落とせます)は変換に失敗しました。(shortcut_0 header error が出る)
44
34
 
45
- keras==2.4.3
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
- coreml_model = coremltools.converters.keras.convert(model)
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バージョンを追記

2020/08/05 11:28

投稿

kotori_a
kotori_a

スコア820

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