頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


Create MLのObject Detection用のデータセットを作成する

Create ML起動時の画面

↑これはCreate MLのプロジェクト作成時画面だけど、このObject Detectionで生成されたNNは、画像内にどんなオブジェクトがどこにあるかを出力してくれる。
このデータセット(画像とJSONファイル)をmacOSアプリで作成しようとしたんだが、はまったことが二つ。

1つ目)
JSONファイルに画像ファイル名やオブジェクトのラベルや座標を持たせる必要があるんだが、この座標はx, y, width, heightというキーで整数を与える。
このx, yは画像の中心であり、左上でも左下でもない!

2つ目)
macOSでNSViewなどを扱ったことがあればご存じだろうが、、、macOSではiOSと違い、原点が左下だ。うっかり左下を原点とした座標を与えていたのだが、JSONファイルで与えるべき座標は左上が原点としての値だ。

とまあしょうもないところで随分と時間をロスしたのでこれからやる場合にはご注意を。

なお、Create MLで学習させて無事mlmodelファイルを作成し、それをiOSアプリに持ってきて使うと出力される座標は左下が原点になってる。なんでやねーん!
スポンサーサイト






Pik Friendsの開発時の話

ピクミンブルームですでにプレイしてないフレンドを探す方法
↑リリースしましたよ!って記事はこちらに書いたんだけど、iOS開発がらみの話を少々。

動画から文字を読み取る、というのはVisionのVNVideoProcessor, VNRecognizeTextRequestなどのクラスを使用。
残念ながら日本語の読み取りは現在のところ不可らしいので、名前(日本語可能)ではなくAccount ID(英数字のみ)を読み取っている。

前回との比較をするのでデータは保存しておく必要があるんだけど、たいした量でもないのでUserDefaultsでさくっとsave/loadしてる。

このアプリは初のSwiftUIベースのプロジェクト。
いいわあ~、SwiftUI。まあ、たまにイラつくこともあるけど。

こういう他のアプリを使う場合にちょっと便利になるアプリ、というのを作成する場合、元のアプリに変更があった場合に突然動作しなくなる可能性がある。
なので、そうそう時間をかけてらんないよな、ということで英語版のみでリリースした。
タブのアイコンも元々systemが持ってるのを使ってる。
Infoタブあたりのページは以前作成したアプリ(storyboardベースだけど一部はSwiftUI使ってた)からの流用。
流用する場合にSwiftUIの方がラクだなあと改めて思ったわ。
iPadのスクショを用意するのが面倒なのでiPhone専用アプリにした。
App Previewは6.5インチ用だけは作成したが、5.5インチ用は作成せずスクショだけにした。

などなどの簡略化により自分にしては短期間でリリースに至ったと思う。


今回申請した日の夜には審査に入り(最近早いね)、すぐにリジェクトされた。
Guideline 2.1 - Information Needed
で引っかかった。
再申請ではなく、メッセージでこちらが説明の返信、向こうが返信、さらにこちらも返信で再審査に入り、すぐに通過した。


ピクミンブルームですでにプレイしてないフレンドを探す方法

iPhoneでピクミンブルームを楽しんでいます。ポケモンGOもいいですが、歩行時にたいしてやることないのがナイスです。

時々フレンドさんにポストカードを送ります。
ポストカードは手持ちのピクミンが”配達”してくれるのですが、フレンドさんがポストカードを開封すると配達してくれたピクミンは手元に戻ります。しかし、フレンドさんがポストカードを開封しない場合は3日くらい(?)行ったきりになります。
ですので、なるべく開封してくれないフレンドさんにはポストカードを送りたくないなあ、と。送るのも面倒ですしピクミンがなかなか帰ってきませんし。

ポストカードを開けてくれないフレンドさんは、もしかしたらすでにピクミンブルームをプレイしていないかもしれません。
こちらから細かい状況はわからないのですが、フレンドさんの歩数は毎日更新されています(多分一日一回)。

ですから、たまに(数日に一度)歩数をチェックして歩数が変わってなければ「もうこのフレンドさんはプレイしてないかも」と考えていいのでは?
ということで簡単にフレンドさんの歩数をチェックできるiOSアプリを作成、リリースしました。

PikFriendsアイコン
Pik Friends
↑こちら「Pik Friends」です。

使い方は、
1)ピクミンブルームでフレンドさんを見られる画面に行き、全てのフレンドさんが映るような動画を作成します。
2)Pik Friendsでその動画を選択するとアプリは動画の内容を読み取り、フレンドさんの名前(Account ID)と歩数を表にまとめます。


PikFriends分析結果1
↑こんな感じになり、前回の歩数の差に変化がないフレンドさんを簡単に見つけることができます。
私のフレンドさんも何人かすでにプレイしていないようです、、、


PikFriends分析結果2
↑ちなみにアプリはこんな感じで動画内の文字を読み取ります。デフォルトでは0.1秒ごと(変更可能)に調べますので、録画時にまあまあ早くスクロールさせても大丈夫だと思います。


  TopPage  



Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.