teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

修正

2020/08/05 11:37

投稿

kotori_a
kotori_a

スコア898

answer CHANGED
@@ -5,12 +5,12 @@
5
5
  tensorflow 2.3.0
6
6
  keras 2.4.3
7
7
 
8
- 下記darknet公式から入手できるyolov3-tinyトレーニング済データ
8
+ 下記darknet公式から入手できるyolov3-tinyのweightファイル
9
- .h5ファイルに変換し、そ.h5ファイルをcoremltoolsにすることを目標にしました。
9
+ .h5ファイルに変換し、そ.h5ファイルをcoremltoolsにすることを目標にしました。
10
10
 
11
11
  サンプルデータ:[https://pjreddie.com/media/files/yolov3-tiny.weight](https://pjreddie.com/media/files/yolov3-tiny.weight)
12
12
 
13
- いろいろ試したり調べたりした結果、このデータを、最終的にmlmodelファイルに変換できた事例を一応載せておきます。
13
+ いろいろ試したり調べたりした結果、この.weightデータを、最終的にmlmodelファイルに変換できた事例を一応載せておきます。
14
14
 
15
15
  注)
16
16
  ・今回変換?できたのはあくまで**上記tiny-yolov3のサンプルデータ**です。
@@ -20,7 +20,7 @@
20
20
  ・変換後のデータが、本当にきちんと学習済のものとして使用に耐えうるものかも検証できていません.
21
21
  ・tinyでないyolov3とtiny-yolov3は別物なので引数に指定するファイル名等は気をつけてください(自分も何回か間違えて変換に失敗した)
22
22
 
23
- 手順:tiny-yolov3から.h5ファイルへの変換に、keras-yolo3ではなく、YAD2Kを使用します。
23
+ 手順:tiny-yolov3のweightsファイルから.h5ファイルへの変換に、keras-yolo3ではなく、YAD2Kを使用します。
24
24
  ただし、[本家YAD2k](https://github.com/allanzelener/YAD2K)は、現状tiny-yolov3に完全対応していないようなので、(yolo_0 header errorが出る)
25
25
  フォークされた[https://github.com/prakharcode/YAD2K](https://github.com/prakharcode/YAD2K)を使用します。
26
26
 

4

修正

2020/08/05 11:37

投稿

kotori_a
kotori_a

スコア898

answer CHANGED
@@ -6,14 +6,14 @@
6
6
  keras 2.4.3
7
7
 
8
8
  下記darknet公式から入手できるyolov3-tinyトレーニング済データを
9
- .h5ファイルに変換し、その.h5ファイルをcoremltoolsにすることを目標にしました。
9
+ .h5ファイルに変換し、そ.h5ファイルをcoremltoolsにすることを目標にしました。
10
10
 
11
11
  サンプルデータ:[https://pjreddie.com/media/files/yolov3-tiny.weight](https://pjreddie.com/media/files/yolov3-tiny.weight)
12
12
 
13
13
  いろいろ試したり調べたりした結果、このデータを、最終的にmlmodelファイルに変換できた事例を一応載せておきます。
14
14
 
15
15
  注)
16
- ・今回変換?できたのはあくまで**上記tiny-yolov3のサンプルデータ**です。
16
+ ・今回変換?できたのはあくまで**上記tiny-yolov3のサンプルデータ**です。
17
17
  ・「tinyでない」yolov3サンプルデータ(上の公式から別で落とせます)は変換に失敗しました。(shortcut_0 header error が出る)
18
18
  ・darknetではなくcocoで学習したデータは試していません。
19
19
  ・自力でdarknetを用いてtiny-yolov3として学習させたオリジナルデータを作成して試したりしていません。
@@ -53,9 +53,9 @@
53
53
 
54
54
  蛇足:
55
55
  https://github.com/xiaochus/YOLOv3
56
- も、変換できるようです。
56
+ を使っても、一応変換できるようです。
57
57
  (上記私家版YAD2Kで変換してできるh5ファイルとはファイルサイズが異なっていました。
58
- 処理の最後で、pydotとgraphizがビルドされていないというエラーが出ますが.h5ファイルは作られま
58
+ 処理の最後で、pydotとgraphizがビルドされていないというエラーが出ますが.h5ファイルは作られていした
59
59
 
60
60
  参考:
61
61
  [coremlのドキュメント内のサンプルコード](https://coremltools.readme.io/docs/tensorflow-2#conversion-from-user-defined-models)

3

修正

2020/08/05 11:33

投稿

kotori_a
kotori_a

スコア898

answer CHANGED
@@ -5,8 +5,8 @@
5
5
  tensorflow 2.3.0
6
6
  keras 2.4.3
7
7
 
8
- 下記darknet公式から入手できるyolov3-tinyトレーニング済データを
8
+ 下記darknet公式から入手できるyolov3-tinyトレーニング済データを
9
- kelas-yolo3で.h5ファイルに変換し,.h5ファイルをcoremltoolsにすることを目標にしました。
9
+ .h5ファイルに変換し、その.h5ファイルをcoremltoolsにすることを目標にしました。
10
10
 
11
11
  サンプルデータ:[https://pjreddie.com/media/files/yolov3-tiny.weight](https://pjreddie.com/media/files/yolov3-tiny.weight)
12
12
 

2

追試したので修正

2020/08/05 11:31

投稿

kotori_a
kotori_a

スコア898

answer CHANGED
@@ -1,35 +1,62 @@
1
- 下記環境で試しました:
1
+ 引き続き下記環境で試しました:
2
2
  macOS 10.15.5
3
3
  python 3.7.7 (virtualenv)
4
4
  coreremltools 4.0b2
5
5
  tensorflow 2.3.0
6
6
  keras 2.4.3
7
7
 
8
+ 下記のdarknet公式から入手できるyolov3-tinyトレーニング済データを
8
- [coremlのドキュメント内のサンプルコード](https://coremltools.readme.io/docs/tensorflow-2#conversion-from-user-defined-models)参照すると、最終段で
9
+ kelas-yolo3で.h5ファイルに変換し,.h5ファイルcoremltoolsにするを目標にしました。
9
10
 
10
- ```
11
- # or save the keras model in HDF5 format and then convert
12
- tf_keras_model.save('tf_keras_model.h5')
13
- mlmodel = ct.convert('tf_keras_model.h5')
11
+ サンプルデータ:[https://pjreddie.com/media/files/yolov3-tiny.weight](https://pjreddie.com/media/files/yolov3-tiny.weight)
14
- ```
15
- となっていました。
16
- このconvert関数はバージョン3.4.0では実装されておらず、少なくとも最新バージョン4.0b2に実装されています。
17
12
 
18
- そこでまず最新版coremlをインストー
13
+ いろいろ試したり調べたりした結果データ、最終的にmlmodelファイルに変換できた事例を一応載せておきます。
19
14
 
15
+ 注)
16
+ ・今回変換?できたのはあくまで**上記tiny-yolov3のサンプルデータ**です。
17
+ ・「tinyでない」yolov3サンプルデータ(上の公式から別で落とせます)は変換に失敗しました。(shortcut_0 header error が出る)
18
+ ・darknetではなくcocoで学習したデータは試していません。
20
- (pip install coremltools==4.0b2  バーョン指定する必要があります)
19
+ ・自力でdarknetを用いてtiny-yolov3して学習させたオリナルデータを作成して試したしていせん。
21
- また、
22
- tensorflow==2.3.0
20
+ ・変換後のデータが、本当にきちんと学習済のものとして使用に耐えうるものかも検証できていません.
23
- keras==2.4.3
21
+ ・tinyでないyolov3とtiny-yolov3は別物なので引数に指定するファイル名等は気をつけてください(自分も何回か間違えて変換に失敗した)
24
- もインストール
25
22
 
23
+ 手順:tiny-yolov3から.h5ファイルへの変換に、keras-yolo3ではなく、YAD2Kを使用します。
24
+ ただし、[本家YAD2k](https://github.com/allanzelener/YAD2K)は、現状tiny-yolov3に完全対応していないようなので、(yolo_0 header errorが出る)
25
+ フォークされた[https://github.com/prakharcode/YAD2K](https://github.com/prakharcode/YAD2K)を使用します。
26
26
 
27
+
28
+ ```lang-Terminal
29
+ git clone https://github.com/prakharcode/YAD2K.git
27
- そして質問元コードの
30
+ cd YAD2K
28
31
  ```
32
+ yolov3-tinyのサンプルデータ:[https://pjreddie.com/media/files/yolov3-tiny.weight](https://pjreddie.com/media/files/yolov3-tiny.weight)
33
+ をダウンロードし、上記YAD2Kディレクトリにコピーします。
34
+
35
+ また同じYAD2Kディレクトリに、yolov3-tiny.cfgもコピーします。(実際はトレーニング時に使った物と同じcfgがいいかもしれませんが、私は[keras-yolo3](https://github.com/qqwweee/keras-yolo3)リポジトリ内にあるyolov3-tiny.cfgを利用しました)
36
+
37
+ YAD2Kディレクトリ内で下記を実行します。
38
+ ```lang-Terminal
29
- coreml_model = coremltools.converters.keras.convert(model)
39
+ python3 yad2k.py yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.h5
30
40
  ```
41
+ エラーなければ、yolov3-tiny.h5が作成されているはずです。
42
+
43
+ あとはこのyolov3-tiny.h5 をcoremltools 4.0bで変換します。
31
- となっている部分
44
+ (以前言及した、convert()関数使用)
32
45
  ```
46
+ import coremltools
47
+ from tensorflow.keras import models, layers
48
+
49
+ model = models.load_model('yolov3-tiny.h5')
33
50
  coreml_model = coremltools.convert(model)
51
+ coreml_model.save('my_model-yolov3-tiny.mlmodel')
34
52
  ```
53
+
54
+ 蛇足:
55
+ https://github.com/xiaochus/YOLOv3
35
- えてみた場合どうしょか?
56
+ でも、きるよです。
57
+ (上記私家版YAD2Kで変換してできるh5ファイルとはファイルサイズが異なっていました。
58
+ 処理の最後で、pydotとgraphizがビルドされていないというエラーが出ますが.h5ファイルは作られます)
59
+
60
+ 参考:
61
+ [coremlのドキュメント内のサンプルコード](https://coremltools.readme.io/docs/tensorflow-2#conversion-from-user-defined-models)
62
+  [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

スコア898

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  下記環境で試しました:
2
2
  macOS 10.15.5
3
- python
3
+ python 3.7.7 (virtualenv)
4
4
  coreremltools 4.0b2
5
5
  tensorflow 2.3.0
6
6
  keras 2.4.3