From ed5d81859f6e9c14963314a2d324d2d088afc31d Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 7 Jul 2022 21:06:37 +0900 Subject: [PATCH] feat: auto nsfw detection (#8840) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: auto nsfw detection * :v: * Update ja-JP.yml * Update ja-JP.yml * ポルノ判定のしきい値を高めに * エラーハンドリングちゃんとした * Update ja-JP.yml * 感度設定を強化 * refactor * feat: add video support for auto nsfw detection * rename: image -> media * .js * fix: add missing error handling * fix: use valid pathname instead of using filename due to invalid usage * perf(nsfw-detection): decode frames * disable detection of video for some reasons * perf(nsfw-detection): streamify detection process for video * disable disallowUploadWhenPredictedAsPorn option * fix(nsfw-detection): improve reliability * fix(nsfw-detection): use Math.ceil instead of Math.round * perf(nsfw-detection): delete tmp frames after used * fix(nsfw-detection): FSWatcher does not emit ready event * perf(nsfw-detection): skip black frames * refactor: strip exists check * Update package.json * めっちゃ変えた * lint * Update COPYING * オプションで動画解析できるように * Update yarn.lock * Update CHANGELOG.md Co-authored-by: Acid Chicken (硫酸鶏) --- CHANGELOG.md | 4 + COPYING | 6 +- locales/ja-JP.yml | 18 + .../migration/1655368940105-nsfw-detection.js | 23 + .../1655371960534-nsfw-detection-2.js | 15 + .../1655388169582-nsfw-detection-3.js | 21 + .../1655393015659-nsfw-detection-4.js | 25 + .../1656251734807-nsfw-detection-5.js | 33 + .../1656408772602-nsfw-detection-6.js | 11 + packages/backend/nsfw-model/group1-shard1of6 | 3 + packages/backend/nsfw-model/group1-shard2of6 | 3 + packages/backend/nsfw-model/group1-shard3of6 | 3 + packages/backend/nsfw-model/group1-shard4of6 | 3 + packages/backend/nsfw-model/group1-shard5of6 | 3 + packages/backend/nsfw-model/group1-shard6of6 | 3 + packages/backend/nsfw-model/model.json | 1 + packages/backend/package.json | 3 + packages/backend/src/misc/get-file-info.ts | 172 ++++- .../backend/src/models/entities/drive-file.ts | 13 + packages/backend/src/models/entities/meta.ts | 22 + .../src/models/entities/user-profile.ts | 5 + .../backend/src/models/repositories/user.ts | 1 + packages/backend/src/models/schema/user.ts | 28 +- .../src/server/api/endpoints/admin/meta.ts | 20 + .../server/api/endpoints/admin/show-user.ts | 1 + .../server/api/endpoints/admin/update-meta.ts | 20 + .../api/endpoints/drive/files/create.ts | 17 + .../api/endpoints/drive/files/update.ts | 4 +- .../src/server/api/endpoints/i/update.ts | 11 +- .../backend/src/services/detect-sensitive.ts | 28 + .../backend/src/services/drive/add-file.ts | 32 +- packages/backend/test/get-file-info.ts | 27 +- packages/backend/yarn.lock | 599 +++++++++++++++++- packages/client/src/pages/admin/security.vue | 69 +- packages/client/src/pages/settings/drive.vue | 22 +- .../client/src/pages/settings/profile.vue | 4 - packages/client/src/scripts/select-file.ts | 23 +- packages/client/src/scripts/upload.ts | 36 +- packages/client/src/style.scss | 10 + 39 files changed, 1264 insertions(+), 78 deletions(-) create mode 100644 packages/backend/migration/1655368940105-nsfw-detection.js create mode 100644 packages/backend/migration/1655371960534-nsfw-detection-2.js create mode 100644 packages/backend/migration/1655388169582-nsfw-detection-3.js create mode 100644 packages/backend/migration/1655393015659-nsfw-detection-4.js create mode 100644 packages/backend/migration/1656251734807-nsfw-detection-5.js create mode 100644 packages/backend/migration/1656408772602-nsfw-detection-6.js create mode 100644 packages/backend/nsfw-model/group1-shard1of6 create mode 100644 packages/backend/nsfw-model/group1-shard2of6 create mode 100644 packages/backend/nsfw-model/group1-shard3of6 create mode 100644 packages/backend/nsfw-model/group1-shard4of6 create mode 100644 packages/backend/nsfw-model/group1-shard5of6 create mode 100644 packages/backend/nsfw-model/group1-shard6of6 create mode 100644 packages/backend/nsfw-model/model.json create mode 100644 packages/backend/src/services/detect-sensitive.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 1046a1046..128ee4cde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ You should also include the user name that made the change. ## 12.x.x (unreleased) +### Known issues +- 現在arm64環境ではインストールに失敗します。これは次のバージョンで修正される予定です。 + ### Changes - ハイライトがみつけるに統合されました - カスタム絵文字ページはインスタンス情報ページに統合されました @@ -18,6 +21,7 @@ You should also include the user name that made the change. ### Improvements - Server: Allow GET method for some endpoints @syuilo +- Server: Auto NSFW detection @syuilo - Server: Add rate limit to i/notifications @tamaina - Client: Improve control panel @syuilo - Client: Show warning in control panel when there is an unresolved abuse report @syuilo diff --git a/COPYING b/COPYING index 13c13bf93..afa179459 100644 --- a/COPYING +++ b/COPYING @@ -1,5 +1,5 @@ Unless otherwise stated this repository is -Copyright © 2014-2020 syuilo and contributers +Copyright © 2014-2022 syuilo and contributers And is distributed under The GNU Affero General Public License Version 3, you should have received a copy of the license file as LICENSE. @@ -13,3 +13,7 @@ https://github.com/muan/emojilib/blob/master/LICENSE RsaSignature2017 implementation by Transmute Industries Inc License: MIT https://github.com/transmute-industries/RsaSignature2017/blob/master/LICENSE + +Machine learning model for sensitive images by Infinite Red, Inc. +License: MIT +https://github.com/infinitered/nsfwjs/blob/master/LICENSE diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 49cce121d..3eecc3b57 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -877,6 +877,24 @@ type: "タイプ" speed: "速度" slow: "遅い" fast: "速い" +sensitiveMediaDetection: "センシティブなメディアの検出" +localOnly: "ローカルのみ" +remoteOnly: "リモートのみ" +failedToUpload: "アップロード失敗" +cannotUploadBecauseInappropriate: "不適切な内容を含む可能性があると判定されたためアップロードできません。" +cannotUploadBecauseNoFreeSpace: "ドライブの空き容量が無いためアップロードできません。" +beta: "ベータ" +enableAutoSensitive: "自動NSFW判定" +enableAutoSensitiveDescription: "利用可能な場合は、機械学習を利用して自動でメディアにNSFWフラグを設定します。この機能をオフにしても、インスタンスによっては自動で設定されることがあります。" + +_sensitiveMediaDetection: + description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てることができます。サーバーの負荷が少し増えます。" + sensitivity: "検出感度" + sensitivityDescription: "感度を低くすると、誤検知(偽陽性)が減ります。感度を高くすると、検知漏れ(偽陰性)が減ります。" + setSensitiveFlagAutomatically: "NSFWフラグを設定する" + setSensitiveFlagAutomaticallyDescription: "この設定をオフにしても内部的に判定結果は保持されます。" + analyzeVideos: "動画の解析を有効化" + analyzeVideosDescription: "静止画に加えて動画も解析するようにします。サーバーの負荷が少し増えます。" _emailUnavailable: used: "既に使用されています" diff --git a/packages/backend/migration/1655368940105-nsfw-detection.js b/packages/backend/migration/1655368940105-nsfw-detection.js new file mode 100644 index 000000000..9268f4340 --- /dev/null +++ b/packages/backend/migration/1655368940105-nsfw-detection.js @@ -0,0 +1,23 @@ +export class nsfwDetection1655368940105 { + name = 'nsfwDetection1655368940105' + + async up(queryRunner) { + await queryRunner.query(`ALTER TABLE "drive_file" ADD "forceIsSensitive" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`ALTER TABLE "drive_file" ADD "predictedIsSensitive" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`COMMENT ON COLUMN "drive_file"."predictedIsSensitive" IS 'Whether the DriveFile is NSFW. (predict)'`); + await queryRunner.query(`CREATE TYPE "public"."meta_sensitiveimagedetection_enum" AS ENUM('none', 'all', 'local', 'remote')`); + await queryRunner.query(`ALTER TABLE "meta" ADD "sensitiveImageDetection" "public"."meta_sensitiveimagedetection_enum" NOT NULL DEFAULT 'none'`); + await queryRunner.query(`ALTER TABLE "meta" ADD "forceIsSensitiveWhenPredicted" boolean NOT NULL DEFAULT true`); + await queryRunner.query(`CREATE INDEX "IDX_fc2d74a6d7d8b11292a851d8f8" ON "drive_file" ("predictedIsSensitive") `); + } + + async down(queryRunner) { + await queryRunner.query(`DROP INDEX "public"."IDX_fc2d74a6d7d8b11292a851d8f8"`); + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "forceIsSensitiveWhenPredicted"`); + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "sensitiveImageDetection"`); + await queryRunner.query(`DROP TYPE "public"."meta_sensitiveimagedetection_enum"`); + await queryRunner.query(`COMMENT ON COLUMN "drive_file"."predictedIsSensitive" IS 'Whether the DriveFile is NSFW. (predict)'`); + await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "predictedIsSensitive"`); + await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "forceIsSensitive"`); + } +} diff --git a/packages/backend/migration/1655371960534-nsfw-detection-2.js b/packages/backend/migration/1655371960534-nsfw-detection-2.js new file mode 100644 index 000000000..aac6f37da --- /dev/null +++ b/packages/backend/migration/1655371960534-nsfw-detection-2.js @@ -0,0 +1,15 @@ +export class nsfwDetection21655371960534 { + name = 'nsfwDetection21655371960534' + + async up(queryRunner) { + await queryRunner.query(`CREATE TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum" AS ENUM('medium', 'low', 'high')`); + await queryRunner.query(`ALTER TABLE "meta" ADD "sensitiveImageDetectionSensitivity" "public"."meta_sensitiveimagedetectionsensitivity_enum" NOT NULL DEFAULT 'medium'`); + await queryRunner.query(`ALTER TABLE "meta" ADD "disallowUploadWhenPredictedAsPorn" boolean NOT NULL DEFAULT false`); + } + + async down(queryRunner) { + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "disallowUploadWhenPredictedAsPorn"`); + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "sensitiveImageDetectionSensitivity"`); + await queryRunner.query(`DROP TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum"`); + } +} diff --git a/packages/backend/migration/1655388169582-nsfw-detection-3.js b/packages/backend/migration/1655388169582-nsfw-detection-3.js new file mode 100644 index 000000000..a5c80cf96 --- /dev/null +++ b/packages/backend/migration/1655388169582-nsfw-detection-3.js @@ -0,0 +1,21 @@ +export class nsfwDetection31655388169582 { + name = 'nsfwDetection31655388169582' + + async up(queryRunner) { + await queryRunner.query(`ALTER TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum" RENAME TO "meta_sensitiveimagedetectionsensitivity_enum_old"`); + await queryRunner.query(`CREATE TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum" AS ENUM('medium', 'low', 'high', 'veryLow', 'veryHigh')`); + await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "sensitiveImageDetectionSensitivity" DROP DEFAULT`); + await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "sensitiveImageDetectionSensitivity" TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum" USING "sensitiveImageDetectionSensitivity"::"text"::"public"."meta_sensitiveimagedetectionsensitivity_enum"`); + await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "sensitiveImageDetectionSensitivity" SET DEFAULT 'medium'`); + await queryRunner.query(`DROP TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum_old"`); + } + + async down(queryRunner) { + await queryRunner.query(`CREATE TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum_old" AS ENUM('medium', 'low', 'high')`); + await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "sensitiveImageDetectionSensitivity" DROP DEFAULT`); + await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "sensitiveImageDetectionSensitivity" TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum_old" USING "sensitiveImageDetectionSensitivity"::"text"::"public"."meta_sensitiveimagedetectionsensitivity_enum_old"`); + await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "sensitiveImageDetectionSensitivity" SET DEFAULT 'medium'`); + await queryRunner.query(`DROP TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum"`); + await queryRunner.query(`ALTER TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum_old" RENAME TO "meta_sensitiveimagedetectionsensitivity_enum"`); + } +} diff --git a/packages/backend/migration/1655393015659-nsfw-detection-4.js b/packages/backend/migration/1655393015659-nsfw-detection-4.js new file mode 100644 index 000000000..e78073262 --- /dev/null +++ b/packages/backend/migration/1655393015659-nsfw-detection-4.js @@ -0,0 +1,25 @@ +export class nsfwDetection41655393015659 { + name = 'nsfwDetection41655393015659' + + async up(queryRunner) { + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "sensitiveImageDetection"`); + await queryRunner.query(`DROP TYPE "public"."meta_sensitiveimagedetection_enum"`); + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "sensitiveImageDetectionSensitivity"`); + await queryRunner.query(`DROP TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum"`); + await queryRunner.query(`CREATE TYPE "public"."meta_sensitivemediadetection_enum" AS ENUM('none', 'all', 'local', 'remote')`); + await queryRunner.query(`ALTER TABLE "meta" ADD "sensitiveMediaDetection" "public"."meta_sensitivemediadetection_enum" NOT NULL DEFAULT 'none'`); + await queryRunner.query(`CREATE TYPE "public"."meta_sensitivemediadetectionsensitivity_enum" AS ENUM('medium', 'low', 'high', 'veryLow', 'veryHigh')`); + await queryRunner.query(`ALTER TABLE "meta" ADD "sensitiveMediaDetectionSensitivity" "public"."meta_sensitivemediadetectionsensitivity_enum" NOT NULL DEFAULT 'medium'`); + } + + async down(queryRunner) { + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "sensitiveMediaDetectionSensitivity"`); + await queryRunner.query(`DROP TYPE "public"."meta_sensitivemediadetectionsensitivity_enum"`); + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "sensitiveMediaDetection"`); + await queryRunner.query(`DROP TYPE "public"."meta_sensitivemediadetection_enum"`); + await queryRunner.query(`CREATE TYPE "public"."meta_sensitiveimagedetectionsensitivity_enum" AS ENUM('medium', 'low', 'high', 'veryLow', 'veryHigh')`); + await queryRunner.query(`ALTER TABLE "meta" ADD "sensitiveImageDetectionSensitivity" "public"."meta_sensitiveimagedetectionsensitivity_enum" NOT NULL DEFAULT 'medium'`); + await queryRunner.query(`CREATE TYPE "public"."meta_sensitiveimagedetection_enum" AS ENUM('none', 'all', 'local', 'remote')`); + await queryRunner.query(`ALTER TABLE "meta" ADD "sensitiveImageDetection" "public"."meta_sensitiveimagedetection_enum" NOT NULL DEFAULT 'none'`); + } +} diff --git a/packages/backend/migration/1656251734807-nsfw-detection-5.js b/packages/backend/migration/1656251734807-nsfw-detection-5.js new file mode 100644 index 000000000..6f0c53690 --- /dev/null +++ b/packages/backend/migration/1656251734807-nsfw-detection-5.js @@ -0,0 +1,33 @@ +export class nsfwDetection51656251734807 { + name = 'nsfwDetection51656251734807' + + async up(queryRunner) { + await queryRunner.query(`DROP INDEX "public"."IDX_fc2d74a6d7d8b11292a851d8f8"`); + await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "forceIsSensitive"`); + await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "predictedIsSensitive"`); + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "forceIsSensitiveWhenPredicted"`); + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "disallowUploadWhenPredictedAsPorn"`); + await queryRunner.query(`ALTER TABLE "drive_file" ADD "maybeSensitive" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`COMMENT ON COLUMN "drive_file"."maybeSensitive" IS 'Whether the DriveFile is NSFW. (predict)'`); + await queryRunner.query(`ALTER TABLE "drive_file" ADD "maybePorn" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`ALTER TABLE "meta" ADD "setSensitiveFlagAutomatically" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`ALTER TABLE "user_profile" ADD "autoSensitive" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`CREATE INDEX "IDX_3b33dff77bb64b23c88151d23e" ON "drive_file" ("maybeSensitive") `); + await queryRunner.query(`CREATE INDEX "IDX_8bdcd3dd2bddb78014999a16ce" ON "drive_file" ("maybePorn") `); + } + + async down(queryRunner) { + await queryRunner.query(`DROP INDEX "public"."IDX_8bdcd3dd2bddb78014999a16ce"`); + await queryRunner.query(`DROP INDEX "public"."IDX_3b33dff77bb64b23c88151d23e"`); + await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "autoSensitive"`); + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "setSensitiveFlagAutomatically"`); + await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "maybePorn"`); + await queryRunner.query(`COMMENT ON COLUMN "drive_file"."maybeSensitive" IS 'Whether the DriveFile is NSFW. (predict)'`); + await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "maybeSensitive"`); + await queryRunner.query(`ALTER TABLE "meta" ADD "disallowUploadWhenPredictedAsPorn" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`ALTER TABLE "meta" ADD "forceIsSensitiveWhenPredicted" boolean NOT NULL DEFAULT true`); + await queryRunner.query(`ALTER TABLE "drive_file" ADD "predictedIsSensitive" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`ALTER TABLE "drive_file" ADD "forceIsSensitive" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`CREATE INDEX "IDX_fc2d74a6d7d8b11292a851d8f8" ON "drive_file" ("predictedIsSensitive") `); + } +} diff --git a/packages/backend/migration/1656408772602-nsfw-detection-6.js b/packages/backend/migration/1656408772602-nsfw-detection-6.js new file mode 100644 index 000000000..7ef223a4c --- /dev/null +++ b/packages/backend/migration/1656408772602-nsfw-detection-6.js @@ -0,0 +1,11 @@ +export class nsfwDetection61656408772602 { + name = 'nsfwDetection61656408772602' + + async up(queryRunner) { + await queryRunner.query(`ALTER TABLE "meta" ADD "enableSensitiveMediaDetectionForVideos" boolean NOT NULL DEFAULT false`); + } + + async down(queryRunner) { + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableSensitiveMediaDetectionForVideos"`); + } +} diff --git a/packages/backend/nsfw-model/group1-shard1of6 b/packages/backend/nsfw-model/group1-shard1of6 new file mode 100644 index 000000000..7a75f60c7 --- /dev/null +++ b/packages/backend/nsfw-model/group1-shard1of6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a3a4c075cfcaa7f0b095f55b2ba54a288c2f770e504c8537394efda9545994b +size 4194304 diff --git a/packages/backend/nsfw-model/group1-shard2of6 b/packages/backend/nsfw-model/group1-shard2of6 new file mode 100644 index 000000000..ad92a3a66 --- /dev/null +++ b/packages/backend/nsfw-model/group1-shard2of6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8826da12bda0db9415aef0e6a8d1f178a0d950deab28c4e79b9da994748702a4 +size 4194304 diff --git a/packages/backend/nsfw-model/group1-shard3of6 b/packages/backend/nsfw-model/group1-shard3of6 new file mode 100644 index 000000000..bd822c321 --- /dev/null +++ b/packages/backend/nsfw-model/group1-shard3of6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4557a96cf87ceb8df6c9647b647ac9843251a4455457cb40f35c02250a63e51c +size 4194304 diff --git a/packages/backend/nsfw-model/group1-shard4of6 b/packages/backend/nsfw-model/group1-shard4of6 new file mode 100644 index 000000000..717077006 --- /dev/null +++ b/packages/backend/nsfw-model/group1-shard4of6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:399b99397ccd64351b59f04cdabe30000a15494c82f75c1e2ccb41c9b6338b7d +size 4194304 diff --git a/packages/backend/nsfw-model/group1-shard5of6 b/packages/backend/nsfw-model/group1-shard5of6 new file mode 100644 index 000000000..d70d6d71c --- /dev/null +++ b/packages/backend/nsfw-model/group1-shard5of6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:994515b0f73407d71740301e9877511b086609dbdc7ead1b31bcb82b3397ae74 +size 4194304 diff --git a/packages/backend/nsfw-model/group1-shard6of6 b/packages/backend/nsfw-model/group1-shard6of6 new file mode 100644 index 000000000..8c10ef446 --- /dev/null +++ b/packages/backend/nsfw-model/group1-shard6of6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfb856c9d8fcefacca87b6063ed4949adf69f0372407d6edca8cec0c1694a28b +size 1389349 diff --git a/packages/backend/nsfw-model/model.json b/packages/backend/nsfw-model/model.json new file mode 100644 index 000000000..8b24b119b --- /dev/null +++ b/packages/backend/nsfw-model/model.json @@ -0,0 +1 @@ +{"modelTopology": {"keras_version": "2.2.4", "backend": "tensorflow", "model_config": {"class_name": "Model", "config": {"name": "model_1", "layers": [{"name": "input_1", "class_name": "InputLayer", "config": {"batch_input_shape": [null, 299, 299, 3], "dtype": "float32", "sparse": false, "name": "input_1"}, "inbound_nodes": []}, {"name": "conv2d_1", "class_name": "Conv2D", "config": {"name": "conv2d_1", "trainable": false, "filters": 32, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"name": "batch_normalization_1", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_1", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_1", 0, 0, {}]]]}, {"name": "activation_1", "class_name": "Activation", "config": {"name": "activation_1", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_1", 0, 0, {}]]]}, {"name": "conv2d_2", "class_name": "Conv2D", "config": {"name": "conv2d_2", "trainable": false, "filters": 32, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_1", 0, 0, {}]]]}, {"name": "batch_normalization_2", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_2", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_2", 0, 0, {}]]]}, {"name": "activation_2", "class_name": "Activation", "config": {"name": "activation_2", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_2", 0, 0, {}]]]}, {"name": "conv2d_3", "class_name": "Conv2D", "config": {"name": "conv2d_3", "trainable": false, "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_2", 0, 0, {}]]]}, {"name": "batch_normalization_3", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_3", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_3", 0, 0, {}]]]}, {"name": "activation_3", "class_name": "Activation", "config": {"name": "activation_3", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_3", 0, 0, {}]]]}, {"name": "max_pooling2d_1", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_1", "trainable": false, "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_3", 0, 0, {}]]]}, {"name": "conv2d_4", "class_name": "Conv2D", "config": {"name": "conv2d_4", "trainable": false, "filters": 80, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_1", 0, 0, {}]]]}, {"name": "batch_normalization_4", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_4", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_4", 0, 0, {}]]]}, {"name": "activation_4", "class_name": "Activation", "config": {"name": "activation_4", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_4", 0, 0, {}]]]}, {"name": "conv2d_5", "class_name": "Conv2D", "config": {"name": "conv2d_5", "trainable": false, "filters": 192, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_4", 0, 0, {}]]]}, {"name": "batch_normalization_5", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_5", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_5", 0, 0, {}]]]}, {"name": "activation_5", "class_name": "Activation", "config": {"name": "activation_5", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_5", 0, 0, {}]]]}, {"name": "max_pooling2d_2", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_2", "trainable": false, "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_5", 0, 0, {}]]]}, {"name": "conv2d_9", "class_name": "Conv2D", "config": {"name": "conv2d_9", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "batch_normalization_9", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_9", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_9", 0, 0, {}]]]}, {"name": "activation_9", "class_name": "Activation", "config": {"name": "activation_9", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_9", 0, 0, {}]]]}, {"name": "conv2d_7", "class_name": "Conv2D", "config": {"name": "conv2d_7", "trainable": false, "filters": 48, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_10", "class_name": "Conv2D", "config": {"name": "conv2d_10", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_9", 0, 0, {}]]]}, {"name": "batch_normalization_7", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_7", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_7", 0, 0, {}]]]}, {"name": "batch_normalization_10", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_10", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_10", 0, 0, {}]]]}, {"name": "activation_7", "class_name": "Activation", "config": {"name": "activation_7", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_7", 0, 0, {}]]]}, {"name": "activation_10", "class_name": "Activation", "config": {"name": "activation_10", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_10", 0, 0, {}]]]}, {"name": "average_pooling2d_1", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_1", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_6", "class_name": "Conv2D", "config": {"name": "conv2d_6", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_8", "class_name": "Conv2D", "config": {"name": "conv2d_8", "trainable": false, "filters": 64, "kernel_size": [5, 5], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_7", 0, 0, {}]]]}, {"name": "conv2d_11", "class_name": "Conv2D", "config": {"name": "conv2d_11", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_10", 0, 0, {}]]]}, {"name": "conv2d_12", "class_name": "Conv2D", "config": {"name": "conv2d_12", "trainable": false, "filters": 32, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]]}, {"name": "batch_normalization_6", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_6", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_6", 0, 0, {}]]]}, {"name": "batch_normalization_8", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_8", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_8", 0, 0, {}]]]}, {"name": "batch_normalization_11", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_11", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_11", 0, 0, {}]]]}, {"name": "batch_normalization_12", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_12", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_12", 0, 0, {}]]]}, {"name": "activation_6", "class_name": "Activation", "config": {"name": "activation_6", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_6", 0, 0, {}]]]}, {"name": "activation_8", "class_name": "Activation", "config": {"name": "activation_8", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_8", 0, 0, {}]]]}, {"name": "activation_11", "class_name": "Activation", "config": {"name": "activation_11", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_11", 0, 0, {}]]]}, {"name": "activation_12", "class_name": "Activation", "config": {"name": "activation_12", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_12", 0, 0, {}]]]}, {"name": "mixed0", "class_name": "Concatenate", "config": {"name": "mixed0", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_6", 0, 0, {}], ["activation_8", 0, 0, {}], ["activation_11", 0, 0, {}], ["activation_12", 0, 0, {}]]]}, {"name": "conv2d_16", "class_name": "Conv2D", "config": {"name": "conv2d_16", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed0", 0, 0, {}]]]}, {"name": "batch_normalization_16", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_16", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_16", 0, 0, {}]]]}, {"name": "activation_16", "class_name": "Activation", "config": {"name": "activation_16", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_16", 0, 0, {}]]]}, {"name": "conv2d_14", "class_name": "Conv2D", "config": {"name": "conv2d_14", "trainable": false, "filters": 48, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed0", 0, 0, {}]]]}, {"name": "conv2d_17", "class_name": "Conv2D", "config": {"name": "conv2d_17", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_16", 0, 0, {}]]]}, {"name": "batch_normalization_14", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_14", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_14", 0, 0, {}]]]}, {"name": "batch_normalization_17", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_17", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_17", 0, 0, {}]]]}, {"name": "activation_14", "class_name": "Activation", "config": {"name": "activation_14", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_14", 0, 0, {}]]]}, {"name": "activation_17", "class_name": "Activation", "config": {"name": "activation_17", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_17", 0, 0, {}]]]}, {"name": "average_pooling2d_2", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_2", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed0", 0, 0, {}]]]}, {"name": "conv2d_13", "class_name": "Conv2D", "config": {"name": "conv2d_13", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed0", 0, 0, {}]]]}, {"name": "conv2d_15", "class_name": "Conv2D", "config": {"name": "conv2d_15", "trainable": false, "filters": 64, "kernel_size": [5, 5], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_14", 0, 0, {}]]]}, {"name": "conv2d_18", "class_name": "Conv2D", "config": {"name": "conv2d_18", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_17", 0, 0, {}]]]}, {"name": "conv2d_19", "class_name": "Conv2D", "config": {"name": "conv2d_19", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]]}, {"name": "batch_normalization_13", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_13", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_13", 0, 0, {}]]]}, {"name": "batch_normalization_15", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_15", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_15", 0, 0, {}]]]}, {"name": "batch_normalization_18", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_18", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_18", 0, 0, {}]]]}, {"name": "batch_normalization_19", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_19", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_19", 0, 0, {}]]]}, {"name": "activation_13", "class_name": "Activation", "config": {"name": "activation_13", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_13", 0, 0, {}]]]}, {"name": "activation_15", "class_name": "Activation", "config": {"name": "activation_15", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_15", 0, 0, {}]]]}, {"name": "activation_18", "class_name": "Activation", "config": {"name": "activation_18", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_18", 0, 0, {}]]]}, {"name": "activation_19", "class_name": "Activation", "config": {"name": "activation_19", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_19", 0, 0, {}]]]}, {"name": "mixed1", "class_name": "Concatenate", "config": {"name": "mixed1", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_13", 0, 0, {}], ["activation_15", 0, 0, {}], ["activation_18", 0, 0, {}], ["activation_19", 0, 0, {}]]]}, {"name": "conv2d_23", "class_name": "Conv2D", "config": {"name": "conv2d_23", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed1", 0, 0, {}]]]}, {"name": "batch_normalization_23", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_23", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_23", 0, 0, {}]]]}, {"name": "activation_23", "class_name": "Activation", "config": {"name": "activation_23", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_23", 0, 0, {}]]]}, {"name": "conv2d_21", "class_name": "Conv2D", "config": {"name": "conv2d_21", "trainable": false, "filters": 48, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed1", 0, 0, {}]]]}, {"name": "conv2d_24", "class_name": "Conv2D", "config": {"name": "conv2d_24", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_23", 0, 0, {}]]]}, {"name": "batch_normalization_21", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_21", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_21", 0, 0, {}]]]}, {"name": "batch_normalization_24", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_24", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_24", 0, 0, {}]]]}, {"name": "activation_21", "class_name": "Activation", "config": {"name": "activation_21", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_21", 0, 0, {}]]]}, {"name": "activation_24", "class_name": "Activation", "config": {"name": "activation_24", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_24", 0, 0, {}]]]}, {"name": "average_pooling2d_3", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_3", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed1", 0, 0, {}]]]}, {"name": "conv2d_20", "class_name": "Conv2D", "config": {"name": "conv2d_20", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed1", 0, 0, {}]]]}, {"name": "conv2d_22", "class_name": "Conv2D", "config": {"name": "conv2d_22", "trainable": false, "filters": 64, "kernel_size": [5, 5], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_21", 0, 0, {}]]]}, {"name": "conv2d_25", "class_name": "Conv2D", "config": {"name": "conv2d_25", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_24", 0, 0, {}]]]}, {"name": "conv2d_26", "class_name": "Conv2D", "config": {"name": "conv2d_26", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_3", 0, 0, {}]]]}, {"name": "batch_normalization_20", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_20", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_20", 0, 0, {}]]]}, {"name": "batch_normalization_22", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_22", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_22", 0, 0, {}]]]}, {"name": "batch_normalization_25", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_25", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_25", 0, 0, {}]]]}, {"name": "batch_normalization_26", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_26", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_26", 0, 0, {}]]]}, {"name": "activation_20", "class_name": "Activation", "config": {"name": "activation_20", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_20", 0, 0, {}]]]}, {"name": "activation_22", "class_name": "Activation", "config": {"name": "activation_22", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_22", 0, 0, {}]]]}, {"name": "activation_25", "class_name": "Activation", "config": {"name": "activation_25", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_25", 0, 0, {}]]]}, {"name": "activation_26", "class_name": "Activation", "config": {"name": "activation_26", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_26", 0, 0, {}]]]}, {"name": "mixed2", "class_name": "Concatenate", "config": {"name": "mixed2", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_20", 0, 0, {}], ["activation_22", 0, 0, {}], ["activation_25", 0, 0, {}], ["activation_26", 0, 0, {}]]]}, {"name": "conv2d_28", "class_name": "Conv2D", "config": {"name": "conv2d_28", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed2", 0, 0, {}]]]}, {"name": "batch_normalization_28", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_28", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_28", 0, 0, {}]]]}, {"name": "activation_28", "class_name": "Activation", "config": {"name": "activation_28", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_28", 0, 0, {}]]]}, {"name": "conv2d_29", "class_name": "Conv2D", "config": {"name": "conv2d_29", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_28", 0, 0, {}]]]}, {"name": "batch_normalization_29", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_29", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_29", 0, 0, {}]]]}, {"name": "activation_29", "class_name": "Activation", "config": {"name": "activation_29", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_29", 0, 0, {}]]]}, {"name": "conv2d_27", "class_name": "Conv2D", "config": {"name": "conv2d_27", "trainable": false, "filters": 384, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed2", 0, 0, {}]]]}, {"name": "conv2d_30", "class_name": "Conv2D", "config": {"name": "conv2d_30", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_29", 0, 0, {}]]]}, {"name": "batch_normalization_27", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_27", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_27", 0, 0, {}]]]}, {"name": "batch_normalization_30", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_30", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_30", 0, 0, {}]]]}, {"name": "activation_27", "class_name": "Activation", "config": {"name": "activation_27", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_27", 0, 0, {}]]]}, {"name": "activation_30", "class_name": "Activation", "config": {"name": "activation_30", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_30", 0, 0, {}]]]}, {"name": "max_pooling2d_3", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_3", "trainable": false, "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["mixed2", 0, 0, {}]]]}, {"name": "mixed3", "class_name": "Concatenate", "config": {"name": "mixed3", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_27", 0, 0, {}], ["activation_30", 0, 0, {}], ["max_pooling2d_3", 0, 0, {}]]]}, {"name": "conv2d_35", "class_name": "Conv2D", "config": {"name": "conv2d_35", "trainable": false, "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed3", 0, 0, {}]]]}, {"name": "batch_normalization_35", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_35", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_35", 0, 0, {}]]]}, {"name": "activation_35", "class_name": "Activation", "config": {"name": "activation_35", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_35", 0, 0, {}]]]}, {"name": "conv2d_36", "class_name": "Conv2D", "config": {"name": "conv2d_36", "trainable": false, "filters": 128, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_35", 0, 0, {}]]]}, {"name": "batch_normalization_36", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_36", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_36", 0, 0, {}]]]}, {"name": "activation_36", "class_name": "Activation", "config": {"name": "activation_36", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_36", 0, 0, {}]]]}, {"name": "conv2d_32", "class_name": "Conv2D", "config": {"name": "conv2d_32", "trainable": false, "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed3", 0, 0, {}]]]}, {"name": "conv2d_37", "class_name": "Conv2D", "config": {"name": "conv2d_37", "trainable": false, "filters": 128, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_36", 0, 0, {}]]]}, {"name": "batch_normalization_32", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_32", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_32", 0, 0, {}]]]}, {"name": "batch_normalization_37", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_37", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_37", 0, 0, {}]]]}, {"name": "activation_32", "class_name": "Activation", "config": {"name": "activation_32", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_32", 0, 0, {}]]]}, {"name": "activation_37", "class_name": "Activation", "config": {"name": "activation_37", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_37", 0, 0, {}]]]}, {"name": "conv2d_33", "class_name": "Conv2D", "config": {"name": "conv2d_33", "trainable": false, "filters": 128, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_32", 0, 0, {}]]]}, {"name": "conv2d_38", "class_name": "Conv2D", "config": {"name": "conv2d_38", "trainable": false, "filters": 128, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_37", 0, 0, {}]]]}, {"name": "batch_normalization_33", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_33", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_33", 0, 0, {}]]]}, {"name": "batch_normalization_38", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_38", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_38", 0, 0, {}]]]}, {"name": "activation_33", "class_name": "Activation", "config": {"name": "activation_33", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_33", 0, 0, {}]]]}, {"name": "activation_38", "class_name": "Activation", "config": {"name": "activation_38", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_38", 0, 0, {}]]]}, {"name": "average_pooling2d_4", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_4", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed3", 0, 0, {}]]]}, {"name": "conv2d_31", "class_name": "Conv2D", "config": {"name": "conv2d_31", "trainable": false, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed3", 0, 0, {}]]]}, {"name": "conv2d_34", "class_name": "Conv2D", "config": {"name": "conv2d_34", "trainable": false, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_33", 0, 0, {}]]]}, {"name": "conv2d_39", "class_name": "Conv2D", "config": {"name": "conv2d_39", "trainable": false, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_38", 0, 0, {}]]]}, {"name": "conv2d_40", "class_name": "Conv2D", "config": {"name": "conv2d_40", "trainable": false, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_4", 0, 0, {}]]]}, {"name": "batch_normalization_31", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_31", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_31", 0, 0, {}]]]}, {"name": "batch_normalization_34", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_34", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_34", 0, 0, {}]]]}, {"name": "batch_normalization_39", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_39", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_39", 0, 0, {}]]]}, {"name": "batch_normalization_40", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_40", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_40", 0, 0, {}]]]}, {"name": "activation_31", "class_name": "Activation", "config": {"name": "activation_31", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_31", 0, 0, {}]]]}, {"name": "activation_34", "class_name": "Activation", "config": {"name": "activation_34", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_34", 0, 0, {}]]]}, {"name": "activation_39", "class_name": "Activation", "config": {"name": "activation_39", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_39", 0, 0, {}]]]}, {"name": "activation_40", "class_name": "Activation", "config": {"name": "activation_40", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_40", 0, 0, {}]]]}, {"name": "mixed4", "class_name": "Concatenate", "config": {"name": "mixed4", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_31", 0, 0, {}], ["activation_34", 0, 0, {}], ["activation_39", 0, 0, {}], ["activation_40", 0, 0, {}]]]}, {"name": "conv2d_45", "class_name": "Conv2D", "config": {"name": "conv2d_45", "trainable": false, "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed4", 0, 0, {}]]]}, {"name": "batch_normalization_45", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_45", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_45", 0, 0, {}]]]}, {"name": "activation_45", "class_name": "Activation", "config": {"name": "activation_45", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_45", 0, 0, {}]]]}, {"name": "conv2d_46", "class_name": "Conv2D", "config": {"name": "conv2d_46", "trainable": false, "filters": 160, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_45", 0, 0, {}]]]}, {"name": "batch_normalization_46", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_46", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_46", 0, 0, {}]]]}, {"name": "activation_46", "class_name": "Activation", "config": {"name": "activation_46", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_46", 0, 0, {}]]]}, {"name": "conv2d_42", "class_name": "Conv2D", "config": {"name": "conv2d_42", "trainable": false, "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed4", 0, 0, {}]]]}, {"name": "conv2d_47", "class_name": "Conv2D", "config": {"name": "conv2d_47", "trainable": false, "filters": 160, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_46", 0, 0, {}]]]}, {"name": "batch_normalization_42", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_42", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_42", 0, 0, {}]]]}, {"name": "batch_normalization_47", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_47", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_47", 0, 0, {}]]]}, {"name": "activation_42", "class_name": "Activation", "config": {"name": "activation_42", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_42", 0, 0, {}]]]}, {"name": "activation_47", "class_name": "Activation", "config": {"name": "activation_47", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_47", 0, 0, {}]]]}, {"name": "conv2d_43", "class_name": "Conv2D", "config": {"name": "conv2d_43", "trainable": false, "filters": 160, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_42", 0, 0, {}]]]}, {"name": "conv2d_48", "class_name": "Conv2D", "config": {"name": "conv2d_48", "trainable": false, "filters": 160, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_47", 0, 0, {}]]]}, {"name": "batch_normalization_43", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_43", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_43", 0, 0, {}]]]}, {"name": "batch_normalization_48", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_48", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_48", 0, 0, {}]]]}, {"name": "activation_43", "class_name": "Activation", "config": {"name": "activation_43", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_43", 0, 0, {}]]]}, {"name": "activation_48", "class_name": "Activation", "config": {"name": "activation_48", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_48", 0, 0, {}]]]}, {"name": "average_pooling2d_5", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_5", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed4", 0, 0, {}]]]}, {"name": "conv2d_41", "class_name": "Conv2D", "config": {"name": "conv2d_41", "trainable": false, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed4", 0, 0, {}]]]}, {"name": "conv2d_44", "class_name": "Conv2D", "config": {"name": "conv2d_44", "trainable": false, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_43", 0, 0, {}]]]}, {"name": "conv2d_49", "class_name": "Conv2D", "config": {"name": "conv2d_49", "trainable": false, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_48", 0, 0, {}]]]}, {"name": "conv2d_50", "class_name": "Conv2D", "config": {"name": "conv2d_50", "trainable": false, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_5", 0, 0, {}]]]}, {"name": "batch_normalization_41", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_41", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_41", 0, 0, {}]]]}, {"name": "batch_normalization_44", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_44", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_44", 0, 0, {}]]]}, {"name": "batch_normalization_49", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_49", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_49", 0, 0, {}]]]}, {"name": "batch_normalization_50", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_50", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_50", 0, 0, {}]]]}, {"name": "activation_41", "class_name": "Activation", "config": {"name": "activation_41", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_41", 0, 0, {}]]]}, {"name": "activation_44", "class_name": "Activation", "config": {"name": "activation_44", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_44", 0, 0, {}]]]}, {"name": "activation_49", "class_name": "Activation", "config": {"name": "activation_49", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_49", 0, 0, {}]]]}, {"name": "activation_50", "class_name": "Activation", "config": {"name": "activation_50", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_50", 0, 0, {}]]]}, {"name": "mixed5", "class_name": "Concatenate", "config": {"name": "mixed5", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_41", 0, 0, {}], ["activation_44", 0, 0, {}], ["activation_49", 0, 0, {}], ["activation_50", 0, 0, {}]]]}, {"name": "conv2d_55", "class_name": "Conv2D", "config": {"name": "conv2d_55", "trainable": false, "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed5", 0, 0, {}]]]}, {"name": "batch_normalization_55", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_55", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_55", 0, 0, {}]]]}, {"name": "activation_55", "class_name": "Activation", "config": {"name": "activation_55", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_55", 0, 0, {}]]]}, {"name": "conv2d_56", "class_name": "Conv2D", "config": {"name": "conv2d_56", "trainable": true, "filters": 160, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_55", 0, 0, {}]]]}, {"name": "batch_normalization_56", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_56", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_56", 0, 0, {}]]]}, {"name": "activation_56", "class_name": "Activation", "config": {"name": "activation_56", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_56", 0, 0, {}]]]}, {"name": "conv2d_52", "class_name": "Conv2D", "config": {"name": "conv2d_52", "trainable": true, "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed5", 0, 0, {}]]]}, {"name": "conv2d_57", "class_name": "Conv2D", "config": {"name": "conv2d_57", "trainable": true, "filters": 160, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_56", 0, 0, {}]]]}, {"name": "batch_normalization_52", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_52", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_52", 0, 0, {}]]]}, {"name": "batch_normalization_57", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_57", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_57", 0, 0, {}]]]}, {"name": "activation_52", "class_name": "Activation", "config": {"name": "activation_52", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_52", 0, 0, {}]]]}, {"name": "activation_57", "class_name": "Activation", "config": {"name": "activation_57", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_57", 0, 0, {}]]]}, {"name": "conv2d_53", "class_name": "Conv2D", "config": {"name": "conv2d_53", "trainable": true, "filters": 160, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_52", 0, 0, {}]]]}, {"name": "conv2d_58", "class_name": "Conv2D", "config": {"name": "conv2d_58", "trainable": true, "filters": 160, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_57", 0, 0, {}]]]}, {"name": "batch_normalization_53", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_53", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_53", 0, 0, {}]]]}, {"name": "batch_normalization_58", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_58", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_58", 0, 0, {}]]]}, {"name": "activation_53", "class_name": "Activation", "config": {"name": "activation_53", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_53", 0, 0, {}]]]}, {"name": "activation_58", "class_name": "Activation", "config": {"name": "activation_58", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_58", 0, 0, {}]]]}, {"name": "average_pooling2d_6", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_6", "trainable": true, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed5", 0, 0, {}]]]}, {"name": "conv2d_51", "class_name": "Conv2D", "config": {"name": "conv2d_51", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed5", 0, 0, {}]]]}, {"name": "conv2d_54", "class_name": "Conv2D", "config": {"name": "conv2d_54", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_53", 0, 0, {}]]]}, {"name": "conv2d_59", "class_name": "Conv2D", "config": {"name": "conv2d_59", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_58", 0, 0, {}]]]}, {"name": "conv2d_60", "class_name": "Conv2D", "config": {"name": "conv2d_60", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_6", 0, 0, {}]]]}, {"name": "batch_normalization_51", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_51", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_51", 0, 0, {}]]]}, {"name": "batch_normalization_54", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_54", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_54", 0, 0, {}]]]}, {"name": "batch_normalization_59", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_59", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_59", 0, 0, {}]]]}, {"name": "batch_normalization_60", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_60", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_60", 0, 0, {}]]]}, {"name": "activation_51", "class_name": "Activation", "config": {"name": "activation_51", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_51", 0, 0, {}]]]}, {"name": "activation_54", "class_name": "Activation", "config": {"name": "activation_54", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_54", 0, 0, {}]]]}, {"name": "activation_59", "class_name": "Activation", "config": {"name": "activation_59", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_59", 0, 0, {}]]]}, {"name": "activation_60", "class_name": "Activation", "config": {"name": "activation_60", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_60", 0, 0, {}]]]}, {"name": "mixed6", "class_name": "Concatenate", "config": {"name": "mixed6", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_51", 0, 0, {}], ["activation_54", 0, 0, {}], ["activation_59", 0, 0, {}], ["activation_60", 0, 0, {}]]]}, {"name": "conv2d_65", "class_name": "Conv2D", "config": {"name": "conv2d_65", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed6", 0, 0, {}]]]}, {"name": "batch_normalization_65", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_65", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_65", 0, 0, {}]]]}, {"name": "activation_65", "class_name": "Activation", "config": {"name": "activation_65", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_65", 0, 0, {}]]]}, {"name": "conv2d_66", "class_name": "Conv2D", "config": {"name": "conv2d_66", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_65", 0, 0, {}]]]}, {"name": "batch_normalization_66", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_66", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_66", 0, 0, {}]]]}, {"name": "activation_66", "class_name": "Activation", "config": {"name": "activation_66", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_66", 0, 0, {}]]]}, {"name": "conv2d_62", "class_name": "Conv2D", "config": {"name": "conv2d_62", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed6", 0, 0, {}]]]}, {"name": "conv2d_67", "class_name": "Conv2D", "config": {"name": "conv2d_67", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_66", 0, 0, {}]]]}, {"name": "batch_normalization_62", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_62", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_62", 0, 0, {}]]]}, {"name": "batch_normalization_67", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_67", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_67", 0, 0, {}]]]}, {"name": "activation_62", "class_name": "Activation", "config": {"name": "activation_62", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_62", 0, 0, {}]]]}, {"name": "activation_67", "class_name": "Activation", "config": {"name": "activation_67", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_67", 0, 0, {}]]]}, {"name": "conv2d_63", "class_name": "Conv2D", "config": {"name": "conv2d_63", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_62", 0, 0, {}]]]}, {"name": "conv2d_68", "class_name": "Conv2D", "config": {"name": "conv2d_68", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_67", 0, 0, {}]]]}, {"name": "batch_normalization_63", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_63", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_63", 0, 0, {}]]]}, {"name": "batch_normalization_68", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_68", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_68", 0, 0, {}]]]}, {"name": "activation_63", "class_name": "Activation", "config": {"name": "activation_63", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_63", 0, 0, {}]]]}, {"name": "activation_68", "class_name": "Activation", "config": {"name": "activation_68", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_68", 0, 0, {}]]]}, {"name": "average_pooling2d_7", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_7", "trainable": true, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed6", 0, 0, {}]]]}, {"name": "conv2d_61", "class_name": "Conv2D", "config": {"name": "conv2d_61", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed6", 0, 0, {}]]]}, {"name": "conv2d_64", "class_name": "Conv2D", "config": {"name": "conv2d_64", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_63", 0, 0, {}]]]}, {"name": "conv2d_69", "class_name": "Conv2D", "config": {"name": "conv2d_69", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_68", 0, 0, {}]]]}, {"name": "conv2d_70", "class_name": "Conv2D", "config": {"name": "conv2d_70", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_7", 0, 0, {}]]]}, {"name": "batch_normalization_61", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_61", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_61", 0, 0, {}]]]}, {"name": "batch_normalization_64", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_64", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_64", 0, 0, {}]]]}, {"name": "batch_normalization_69", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_69", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_69", 0, 0, {}]]]}, {"name": "batch_normalization_70", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_70", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_70", 0, 0, {}]]]}, {"name": "activation_61", "class_name": "Activation", "config": {"name": "activation_61", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_61", 0, 0, {}]]]}, {"name": "activation_64", "class_name": "Activation", "config": {"name": "activation_64", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_64", 0, 0, {}]]]}, {"name": "activation_69", "class_name": "Activation", "config": {"name": "activation_69", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_69", 0, 0, {}]]]}, {"name": "activation_70", "class_name": "Activation", "config": {"name": "activation_70", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_70", 0, 0, {}]]]}, {"name": "mixed7", "class_name": "Concatenate", "config": {"name": "mixed7", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_61", 0, 0, {}], ["activation_64", 0, 0, {}], ["activation_69", 0, 0, {}], ["activation_70", 0, 0, {}]]]}, {"name": "conv2d_73", "class_name": "Conv2D", "config": {"name": "conv2d_73", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed7", 0, 0, {}]]]}, {"name": "batch_normalization_73", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_73", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_73", 0, 0, {}]]]}, {"name": "activation_73", "class_name": "Activation", "config": {"name": "activation_73", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_73", 0, 0, {}]]]}, {"name": "conv2d_74", "class_name": "Conv2D", "config": {"name": "conv2d_74", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_73", 0, 0, {}]]]}, {"name": "batch_normalization_74", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_74", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_74", 0, 0, {}]]]}, {"name": "activation_74", "class_name": "Activation", "config": {"name": "activation_74", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_74", 0, 0, {}]]]}, {"name": "conv2d_71", "class_name": "Conv2D", "config": {"name": "conv2d_71", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed7", 0, 0, {}]]]}, {"name": "conv2d_75", "class_name": "Conv2D", "config": {"name": "conv2d_75", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_74", 0, 0, {}]]]}, {"name": "batch_normalization_71", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_71", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_71", 0, 0, {}]]]}, {"name": "batch_normalization_75", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_75", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_75", 0, 0, {}]]]}, {"name": "activation_71", "class_name": "Activation", "config": {"name": "activation_71", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_71", 0, 0, {}]]]}, {"name": "activation_75", "class_name": "Activation", "config": {"name": "activation_75", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_75", 0, 0, {}]]]}, {"name": "conv2d_72", "class_name": "Conv2D", "config": {"name": "conv2d_72", "trainable": true, "filters": 320, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_71", 0, 0, {}]]]}, {"name": "conv2d_76", "class_name": "Conv2D", "config": {"name": "conv2d_76", "trainable": true, "filters": 192, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_75", 0, 0, {}]]]}, {"name": "batch_normalization_72", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_72", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_72", 0, 0, {}]]]}, {"name": "batch_normalization_76", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_76", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_76", 0, 0, {}]]]}, {"name": "activation_72", "class_name": "Activation", "config": {"name": "activation_72", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_72", 0, 0, {}]]]}, {"name": "activation_76", "class_name": "Activation", "config": {"name": "activation_76", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_76", 0, 0, {}]]]}, {"name": "max_pooling2d_4", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_4", "trainable": true, "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["mixed7", 0, 0, {}]]]}, {"name": "mixed8", "class_name": "Concatenate", "config": {"name": "mixed8", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_72", 0, 0, {}], ["activation_76", 0, 0, {}], ["max_pooling2d_4", 0, 0, {}]]]}, {"name": "conv2d_81", "class_name": "Conv2D", "config": {"name": "conv2d_81", "trainable": true, "filters": 448, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed8", 0, 0, {}]]]}, {"name": "batch_normalization_81", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_81", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_81", 0, 0, {}]]]}, {"name": "activation_81", "class_name": "Activation", "config": {"name": "activation_81", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_81", 0, 0, {}]]]}, {"name": "conv2d_78", "class_name": "Conv2D", "config": {"name": "conv2d_78", "trainable": true, "filters": 384, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed8", 0, 0, {}]]]}, {"name": "conv2d_82", "class_name": "Conv2D", "config": {"name": "conv2d_82", "trainable": true, "filters": 384, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_81", 0, 0, {}]]]}, {"name": "batch_normalization_78", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_78", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_78", 0, 0, {}]]]}, {"name": "batch_normalization_82", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_82", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_82", 0, 0, {}]]]}, {"name": "activation_78", "class_name": "Activation", "config": {"name": "activation_78", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_78", 0, 0, {}]]]}, {"name": "activation_82", "class_name": "Activation", "config": {"name": "activation_82", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_82", 0, 0, {}]]]}, {"name": "conv2d_79", "class_name": "Conv2D", "config": {"name": "conv2d_79", "trainable": true, "filters": 384, "kernel_size": [1, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_78", 0, 0, {}]]]}, {"name": "conv2d_80", "class_name": "Conv2D", "config": {"name": "conv2d_80", "trainable": true, "filters": 384, "kernel_size": [3, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_78", 0, 0, {}]]]}, {"name": "conv2d_83", "class_name": "Conv2D", "config": {"name": "conv2d_83", "trainable": true, "filters": 384, "kernel_size": [1, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_82", 0, 0, {}]]]}, {"name": "conv2d_84", "class_name": "Conv2D", "config": {"name": "conv2d_84", "trainable": true, "filters": 384, "kernel_size": [3, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_82", 0, 0, {}]]]}, {"name": "average_pooling2d_8", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_8", "trainable": true, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed8", 0, 0, {}]]]}, {"name": "conv2d_77", "class_name": "Conv2D", "config": {"name": "conv2d_77", "trainable": true, "filters": 320, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed8", 0, 0, {}]]]}, {"name": "batch_normalization_79", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_79", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_79", 0, 0, {}]]]}, {"name": "batch_normalization_80", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_80", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_80", 0, 0, {}]]]}, {"name": "batch_normalization_83", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_83", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_83", 0, 0, {}]]]}, {"name": "batch_normalization_84", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_84", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_84", 0, 0, {}]]]}, {"name": "conv2d_85", "class_name": "Conv2D", "config": {"name": "conv2d_85", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_8", 0, 0, {}]]]}, {"name": "batch_normalization_77", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_77", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_77", 0, 0, {}]]]}, {"name": "activation_79", "class_name": "Activation", "config": {"name": "activation_79", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_79", 0, 0, {}]]]}, {"name": "activation_80", "class_name": "Activation", "config": {"name": "activation_80", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_80", 0, 0, {}]]]}, {"name": "activation_83", "class_name": "Activation", "config": {"name": "activation_83", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_83", 0, 0, {}]]]}, {"name": "activation_84", "class_name": "Activation", "config": {"name": "activation_84", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_84", 0, 0, {}]]]}, {"name": "batch_normalization_85", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_85", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_85", 0, 0, {}]]]}, {"name": "activation_77", "class_name": "Activation", "config": {"name": "activation_77", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_77", 0, 0, {}]]]}, {"name": "mixed9_0", "class_name": "Concatenate", "config": {"name": "mixed9_0", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_79", 0, 0, {}], ["activation_80", 0, 0, {}]]]}, {"name": "concatenate_1", "class_name": "Concatenate", "config": {"name": "concatenate_1", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_83", 0, 0, {}], ["activation_84", 0, 0, {}]]]}, {"name": "activation_85", "class_name": "Activation", "config": {"name": "activation_85", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_85", 0, 0, {}]]]}, {"name": "mixed9", "class_name": "Concatenate", "config": {"name": "mixed9", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_77", 0, 0, {}], ["mixed9_0", 0, 0, {}], ["concatenate_1", 0, 0, {}], ["activation_85", 0, 0, {}]]]}, {"name": "conv2d_90", "class_name": "Conv2D", "config": {"name": "conv2d_90", "trainable": true, "filters": 448, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed9", 0, 0, {}]]]}, {"name": "batch_normalization_90", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_90", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_90", 0, 0, {}]]]}, {"name": "activation_90", "class_name": "Activation", "config": {"name": "activation_90", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_90", 0, 0, {}]]]}, {"name": "conv2d_87", "class_name": "Conv2D", "config": {"name": "conv2d_87", "trainable": true, "filters": 384, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed9", 0, 0, {}]]]}, {"name": "conv2d_91", "class_name": "Conv2D", "config": {"name": "conv2d_91", "trainable": true, "filters": 384, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_90", 0, 0, {}]]]}, {"name": "batch_normalization_87", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_87", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_87", 0, 0, {}]]]}, {"name": "batch_normalization_91", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_91", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_91", 0, 0, {}]]]}, {"name": "activation_87", "class_name": "Activation", "config": {"name": "activation_87", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_87", 0, 0, {}]]]}, {"name": "activation_91", "class_name": "Activation", "config": {"name": "activation_91", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_91", 0, 0, {}]]]}, {"name": "conv2d_88", "class_name": "Conv2D", "config": {"name": "conv2d_88", "trainable": true, "filters": 384, "kernel_size": [1, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_87", 0, 0, {}]]]}, {"name": "conv2d_89", "class_name": "Conv2D", "config": {"name": "conv2d_89", "trainable": true, "filters": 384, "kernel_size": [3, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_87", 0, 0, {}]]]}, {"name": "conv2d_92", "class_name": "Conv2D", "config": {"name": "conv2d_92", "trainable": true, "filters": 384, "kernel_size": [1, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_91", 0, 0, {}]]]}, {"name": "conv2d_93", "class_name": "Conv2D", "config": {"name": "conv2d_93", "trainable": true, "filters": 384, "kernel_size": [3, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_91", 0, 0, {}]]]}, {"name": "average_pooling2d_9", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_9", "trainable": true, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed9", 0, 0, {}]]]}, {"name": "conv2d_86", "class_name": "Conv2D", "config": {"name": "conv2d_86", "trainable": true, "filters": 320, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed9", 0, 0, {}]]]}, {"name": "batch_normalization_88", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_88", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_88", 0, 0, {}]]]}, {"name": "batch_normalization_89", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_89", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_89", 0, 0, {}]]]}, {"name": "batch_normalization_92", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_92", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_92", 0, 0, {}]]]}, {"name": "batch_normalization_93", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_93", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_93", 0, 0, {}]]]}, {"name": "conv2d_94", "class_name": "Conv2D", "config": {"name": "conv2d_94", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_9", 0, 0, {}]]]}, {"name": "batch_normalization_86", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_86", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_86", 0, 0, {}]]]}, {"name": "activation_88", "class_name": "Activation", "config": {"name": "activation_88", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_88", 0, 0, {}]]]}, {"name": "activation_89", "class_name": "Activation", "config": {"name": "activation_89", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_89", 0, 0, {}]]]}, {"name": "activation_92", "class_name": "Activation", "config": {"name": "activation_92", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_92", 0, 0, {}]]]}, {"name": "activation_93", "class_name": "Activation", "config": {"name": "activation_93", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_93", 0, 0, {}]]]}, {"name": "batch_normalization_94", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_94", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_94", 0, 0, {}]]]}, {"name": "activation_86", "class_name": "Activation", "config": {"name": "activation_86", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_86", 0, 0, {}]]]}, {"name": "mixed9_1", "class_name": "Concatenate", "config": {"name": "mixed9_1", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_88", 0, 0, {}], ["activation_89", 0, 0, {}]]]}, {"name": "concatenate_2", "class_name": "Concatenate", "config": {"name": "concatenate_2", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_92", 0, 0, {}], ["activation_93", 0, 0, {}]]]}, {"name": "activation_94", "class_name": "Activation", "config": {"name": "activation_94", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_94", 0, 0, {}]]]}, {"name": "mixed10", "class_name": "Concatenate", "config": {"name": "mixed10", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_86", 0, 0, {}], ["mixed9_1", 0, 0, {}], ["concatenate_2", 0, 0, {}], ["activation_94", 0, 0, {}]]]}, {"name": "average_pooling2d_10", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_10", "trainable": true, "pool_size": [8, 8], "padding": "valid", "strides": [8, 8], "data_format": "channels_last"}, "inbound_nodes": [[["mixed10", 0, 0, {}]]]}, {"name": "flatten_1", "class_name": "Flatten", "config": {"name": "flatten_1", "trainable": true, "data_format": "channels_last"}, "inbound_nodes": [[["average_pooling2d_10", 0, 0, {}]]]}, {"name": "dense_1", "class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "units": 256, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "mode": "fan_in", "distribution": "normal", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": {"class_name": "L1L2", "config": {"l1": 0.0, "l2": 0.0005000000237487257}}, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["flatten_1", 0, 0, {}]]]}, {"name": "dropout_2", "class_name": "Dropout", "config": {"name": "dropout_2", "trainable": true, "rate": 0.5, "noise_shape": null, "seed": null}, "inbound_nodes": [[["dense_1", 0, 0, {}]]]}, {"name": "dense_2", "class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "units": 128, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "mode": "fan_in", "distribution": "normal", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_2", 0, 0, {}]]]}, {"name": "dropout_3", "class_name": "Dropout", "config": {"name": "dropout_3", "trainable": true, "rate": 0.25, "noise_shape": null, "seed": null}, "inbound_nodes": [[["dense_2", 0, 0, {}]]]}, {"name": "dense_3", "class_name": "Dense", "config": {"name": "dense_3", "trainable": true, "units": 5, "activation": "softmax", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_3", 0, 0, {}]]]}], "input_layers": [["input_1", 0, 0]], "output_layers": [["dense_3", 0, 0]]}}, "training_config": {"optimizer_config": {"class_name": "SGD", "config": {"lr": 8.999999749903509e-07, "momentum": 0.8999999761581421, "decay": 0.0, "nesterov": false}}, "loss": "categorical_crossentropy", "metrics": ["accuracy"], "sample_weight_mode": null, "loss_weights": null}}, "weightsManifest": [{"paths": ["group1-shard1of6", "group1-shard2of6", "group1-shard3of6", "group1-shard4of6", "group1-shard5of6", "group1-shard6of6"], "weights": [{"name": "batch_normalization_1/beta", "shape": [32], "dtype": "float32", "quantization": {"min": -1.4470329237919228, "scale": 0.022262044981414198, "dtype": "uint8"}}, {"name": "batch_normalization_1/moving_mean", "shape": [32], "dtype": "float32", "quantization": {"min": -1.3392340445051008, "scale": 0.009048878679088518, "dtype": "uint8"}}, {"name": "batch_normalization_1/moving_variance", "shape": [32], "dtype": "float32", "quantization": {"min": 0.0029792252462357283, "scale": 0.002011585912174162, "dtype": "uint8"}}, {"name": "batch_normalization_10/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.3942089782041662, "scale": 0.013152914888718548, "dtype": "uint8"}}, {"name": "batch_normalization_10/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -3.4377058178770774, "scale": 0.022322765051149853, "dtype": "uint8"}}, {"name": "batch_normalization_10/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.32849419116973877, "scale": 0.0067040401346543255, "dtype": "uint8"}}, {"name": "batch_normalization_11/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.516452667759914, "scale": 0.019195603389366, "dtype": "uint8"}}, {"name": "batch_normalization_11/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -2.7463201915516575, "scale": 0.01830880127701105, "dtype": "uint8"}}, {"name": "batch_normalization_11/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.2191103845834732, "scale": 0.01466470086107067, "dtype": "uint8"}}, {"name": "batch_normalization_12/beta", "shape": [32], "dtype": "float32", "quantization": {"min": -1.301803892734004, "scale": 0.006319436372495165, "dtype": "uint8"}}, {"name": "batch_normalization_12/moving_mean", "shape": [32], "dtype": "float32", "quantization": {"min": -4.4007081592784205, "scale": 0.034114016738592406, "dtype": "uint8"}}, {"name": "batch_normalization_12/moving_variance", "shape": [32], "dtype": "float32", "quantization": {"min": 0.16819331049919128, "scale": 0.005921194716995838, "dtype": "uint8"}}, {"name": "batch_normalization_13/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -0.4739857888689228, "scale": 0.016928063888175814, "dtype": "uint8"}}, {"name": "batch_normalization_13/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -3.5917917167439177, "scale": 0.04128496226142434, "dtype": "uint8"}}, {"name": "batch_normalization_13/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.4459476172924042, "scale": 0.023625042976117602, "dtype": "uint8"}}, {"name": "batch_normalization_14/beta", "shape": [48], "dtype": "float32", "quantization": {"min": -1.0772361334632425, "scale": 0.00979305575875675, "dtype": "uint8"}}, {"name": "batch_normalization_14/moving_mean", "shape": [48], "dtype": "float32", "quantization": {"min": -3.953980264476701, "scale": 0.03350830732607374, "dtype": "uint8"}}, {"name": "batch_normalization_14/moving_variance", "shape": [48], "dtype": "float32", "quantization": {"min": 0.24940407276153564, "scale": 0.0058701262754552504, "dtype": "uint8"}}, {"name": "batch_normalization_15/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.35126254418317, "scale": 0.01571235516492058, "dtype": "uint8"}}, {"name": "batch_normalization_15/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -4.0795912321876076, "scale": 0.020920980677885167, "dtype": "uint8"}}, {"name": "batch_normalization_15/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.49905598163604736, "scale": 0.01223441152011647, "dtype": "uint8"}}, {"name": "batch_normalization_16/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.1064918892056335, "scale": 0.01286618475820504, "dtype": "uint8"}}, {"name": "batch_normalization_16/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -3.809274101257324, "scale": 0.03527105649312337, "dtype": "uint8"}}, {"name": "batch_normalization_16/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.19940871000289917, "scale": 0.009950414592144536, "dtype": "uint8"}}, {"name": "batch_normalization_17/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -2.0270998253541834, "scale": 0.014376594506058039, "dtype": "uint8"}}, {"name": "batch_normalization_17/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -3.1735796909706266, "scale": 0.018031702789605832, "dtype": "uint8"}}, {"name": "batch_normalization_17/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.2549457848072052, "scale": 0.008325207350300807, "dtype": "uint8"}}, {"name": "batch_normalization_18/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -2.1231734135571645, "scale": 0.016458708632226083, "dtype": "uint8"}}, {"name": "batch_normalization_18/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -1.3713552848965516, "scale": 0.009657431583778532, "dtype": "uint8"}}, {"name": "batch_normalization_18/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.1513037383556366, "scale": 0.0068373657909094115, "dtype": "uint8"}}, {"name": "batch_normalization_19/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.4365768666360892, "scale": 0.006776305974698534, "dtype": "uint8"}}, {"name": "batch_normalization_19/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -2.476449997284833, "scale": 0.015673734160030588, "dtype": "uint8"}}, {"name": "batch_normalization_19/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.09515814483165741, "scale": 0.0020481755336125692, "dtype": "uint8"}}, {"name": "batch_normalization_2/beta", "shape": [32], "dtype": "float32", "quantization": {"min": -3.4433995106640984, "scale": 0.02125555253496357, "dtype": "uint8"}}, {"name": "batch_normalization_2/moving_mean", "shape": [32], "dtype": "float32", "quantization": {"min": -5.612242926803289, "scale": 0.04526002360325233, "dtype": "uint8"}}, {"name": "batch_normalization_2/moving_variance", "shape": [32], "dtype": "float32", "quantization": {"min": 1.6788238754359384e-14, "scale": 0.036660007402008594, "dtype": "uint8"}}, {"name": "batch_normalization_20/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -0.8893205343508253, "scale": 0.02021183032615512, "dtype": "uint8"}}, {"name": "batch_normalization_20/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -3.9672318907345043, "scale": 0.026625717387479896, "dtype": "uint8"}}, {"name": "batch_normalization_20/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.420120507478714, "scale": 0.012815360345092475, "dtype": "uint8"}}, {"name": "batch_normalization_21/beta", "shape": [48], "dtype": "float32", "quantization": {"min": -0.9888528188069662, "scale": 0.007270976608874751, "dtype": "uint8"}}, {"name": "batch_normalization_21/moving_mean", "shape": [48], "dtype": "float32", "quantization": {"min": -2.3340306749530866, "scale": 0.017954082115023744, "dtype": "uint8"}}, {"name": "batch_normalization_21/moving_variance", "shape": [48], "dtype": "float32", "quantization": {"min": 0.28571629524230957, "scale": 0.0053000637129241345, "dtype": "uint8"}}, {"name": "batch_normalization_22/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.415032872031717, "scale": 0.016453870605019964, "dtype": "uint8"}}, {"name": "batch_normalization_22/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -2.3663464188575745, "scale": 0.011214911937713623, "dtype": "uint8"}}, {"name": "batch_normalization_22/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.8183495402336121, "scale": 0.01016303815093695, "dtype": "uint8"}}, {"name": "batch_normalization_23/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -0.8289626280466715, "scale": 0.012190626883039287, "dtype": "uint8"}}, {"name": "batch_normalization_23/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -3.606444087682986, "scale": 0.03370508493161669, "dtype": "uint8"}}, {"name": "batch_normalization_23/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.28999996185302734, "scale": 0.007630550160127527, "dtype": "uint8"}}, {"name": "batch_normalization_24/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.7479860670426313, "scale": 0.011972507308511173, "dtype": "uint8"}}, {"name": "batch_normalization_24/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -1.6063279857822492, "scale": 0.009504899324155321, "dtype": "uint8"}}, {"name": "batch_normalization_24/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.24551624059677124, "scale": 0.013059020743650548, "dtype": "uint8"}}, {"name": "batch_normalization_25/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.283474132126453, "scale": 0.009368424322090898, "dtype": "uint8"}}, {"name": "batch_normalization_25/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -1.5872352920326533, "scale": 0.007117647049473781, "dtype": "uint8"}}, {"name": "batch_normalization_25/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.39823248982429504, "scale": 0.004755370172799802, "dtype": "uint8"}}, {"name": "batch_normalization_26/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.5112898941425716, "scale": 0.0061685301801737615, "dtype": "uint8"}}, {"name": "batch_normalization_26/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -2.16122173982508, "scale": 0.01637289196837182, "dtype": "uint8"}}, {"name": "batch_normalization_26/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.11441070586442947, "scale": 0.004070372412017747, "dtype": "uint8"}}, {"name": "batch_normalization_27/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.3188155637067907, "scale": 0.007579399791418338, "dtype": "uint8"}}, {"name": "batch_normalization_27/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -5.909318789313821, "scale": 0.03517451660305846, "dtype": "uint8"}}, {"name": "batch_normalization_27/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.2954988181591034, "scale": 0.006337425404903936, "dtype": "uint8"}}, {"name": "batch_normalization_28/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.0164603177238913, "scale": 0.006515771267460842, "dtype": "uint8"}}, {"name": "batch_normalization_28/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -2.281826620943406, "scale": 0.015522630074444939, "dtype": "uint8"}}, {"name": "batch_normalization_28/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.1750023365020752, "scale": 0.002921118923262054, "dtype": "uint8"}}, {"name": "batch_normalization_29/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.9762367010116577, "scale": 0.005986429195778043, "dtype": "uint8"}}, {"name": "batch_normalization_29/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -1.1413830504697913, "scale": 0.009058595638649136, "dtype": "uint8"}}, {"name": "batch_normalization_29/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.20233316719532013, "scale": 0.002113556335954105, "dtype": "uint8"}}, {"name": "batch_normalization_3/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -2.6871745165656593, "scale": 0.02020431967342601, "dtype": "uint8"}}, {"name": "batch_normalization_3/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -5.694581502091651, "scale": 0.028190997535107183, "dtype": "uint8"}}, {"name": "batch_normalization_3/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.14262264966964722, "scale": 0.019136658135582418, "dtype": "uint8"}}, {"name": "batch_normalization_30/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -0.6150621568455416, "scale": 0.007410387431873995, "dtype": "uint8"}}, {"name": "batch_normalization_30/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -0.5138443261969323, "scale": 0.003593316966412114, "dtype": "uint8"}}, {"name": "batch_normalization_30/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.09833530336618423, "scale": 0.0014371293140392678, "dtype": "uint8"}}, {"name": "batch_normalization_31/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.0016017801621382, "scale": 0.016693363002702303, "dtype": "uint8"}}, {"name": "batch_normalization_31/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.9536140198801077, "scale": 0.02786428320641611, "dtype": "uint8"}}, {"name": "batch_normalization_31/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.3321317434310913, "scale": 0.025618675175835104, "dtype": "uint8"}}, {"name": "batch_normalization_32/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.482565550593769, "scale": 0.006832099311492023, "dtype": "uint8"}}, {"name": "batch_normalization_32/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -2.2532974004745485, "scale": 0.014727433990029728, "dtype": "uint8"}}, {"name": "batch_normalization_32/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.3239896297454834, "scale": 0.0061596725501266185, "dtype": "uint8"}}, {"name": "batch_normalization_33/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.2625880390990014, "scale": 0.008306500257230273, "dtype": "uint8"}}, {"name": "batch_normalization_33/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -1.495534519588246, "scale": 0.00826262165518368, "dtype": "uint8"}}, {"name": "batch_normalization_33/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.2597413659095764, "scale": 0.003397520149455351, "dtype": "uint8"}}, {"name": "batch_normalization_34/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.500122459262025, "scale": 0.008523423063988778, "dtype": "uint8"}}, {"name": "batch_normalization_34/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.1041239532769898, "scale": 0.012233278798122032, "dtype": "uint8"}}, {"name": "batch_normalization_34/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.16395790874958038, "scale": 0.0040355992667815265, "dtype": "uint8"}}, {"name": "batch_normalization_35/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.0832286638372086, "scale": 0.012171108582440545, "dtype": "uint8"}}, {"name": "batch_normalization_35/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -2.395103445240095, "scale": 0.023253431507185392, "dtype": "uint8"}}, {"name": "batch_normalization_35/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.16777288913726807, "scale": 0.019797573370092057, "dtype": "uint8"}}, {"name": "batch_normalization_36/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.8138037962072036, "scale": 0.013143505769617416, "dtype": "uint8"}}, {"name": "batch_normalization_36/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -1.310854683670343, "scale": 0.01057140873927696, "dtype": "uint8"}}, {"name": "batch_normalization_36/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.1670084297657013, "scale": 0.006697891623366113, "dtype": "uint8"}}, {"name": "batch_normalization_37/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.9430689110475428, "scale": 0.011776175218469956, "dtype": "uint8"}}, {"name": "batch_normalization_37/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -1.7351032495498657, "scale": 0.010206489703234504, "dtype": "uint8"}}, {"name": "batch_normalization_37/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.19027358293533325, "scale": 0.005742954974081002, "dtype": "uint8"}}, {"name": "batch_normalization_38/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.3741615199575237, "scale": 0.009222560536627676, "dtype": "uint8"}}, {"name": "batch_normalization_38/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -1.8390505080129587, "scale": 0.011941886415668563, "dtype": "uint8"}}, {"name": "batch_normalization_38/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.14841628074645996, "scale": 0.004146125737358542, "dtype": "uint8"}}, {"name": "batch_normalization_39/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.787621801039752, "scale": 0.00907422234030331, "dtype": "uint8"}}, {"name": "batch_normalization_39/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -3.0378903204319525, "scale": 0.014397584457023471, "dtype": "uint8"}}, {"name": "batch_normalization_39/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.13926127552986145, "scale": 0.010081140550912596, "dtype": "uint8"}}, {"name": "batch_normalization_4/beta", "shape": [80], "dtype": "float32", "quantization": {"min": -1.619629228816313, "scale": 0.021595056384217506, "dtype": "uint8"}}, {"name": "batch_normalization_4/moving_mean", "shape": [80], "dtype": "float32", "quantization": {"min": -7.642285971548042, "scale": 0.048676980710497086, "dtype": "uint8"}}, {"name": "batch_normalization_4/moving_variance", "shape": [80], "dtype": "float32", "quantization": {"min": 0.1652865707874298, "scale": 0.027933618017271452, "dtype": "uint8"}}, {"name": "batch_normalization_40/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.2992442846298218, "scale": 0.00419156878602271, "dtype": "uint8"}}, {"name": "batch_normalization_40/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.384939792109471, "scale": 0.017035284229353364, "dtype": "uint8"}}, {"name": "batch_normalization_40/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.06725674867630005, "scale": 0.002992297387590595, "dtype": "uint8"}}, {"name": "batch_normalization_41/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -0.8896247265385646, "scale": 0.013900386352165072, "dtype": "uint8"}}, {"name": "batch_normalization_41/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1002823920810925, "scale": 0.007588154428145465, "dtype": "uint8"}}, {"name": "batch_normalization_41/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.22883667051792145, "scale": 0.0062419147468080706, "dtype": "uint8"}}, {"name": "batch_normalization_42/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.4175063925630906, "scale": 0.00800851069244684, "dtype": "uint8"}}, {"name": "batch_normalization_42/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.06603368918101, "scale": 0.006922296682993571, "dtype": "uint8"}}, {"name": "batch_normalization_42/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.16725388169288635, "scale": 0.007173216927285288, "dtype": "uint8"}}, {"name": "batch_normalization_43/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.2026210822311103, "scale": 0.006756298214781518, "dtype": "uint8"}}, {"name": "batch_normalization_43/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1263628791360294, "scale": 0.00879970999325023, "dtype": "uint8"}}, {"name": "batch_normalization_43/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.1858157068490982, "scale": 0.0035367338680753523, "dtype": "uint8"}}, {"name": "batch_normalization_44/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.6851831992467243, "scale": 0.007625263345007803, "dtype": "uint8"}}, {"name": "batch_normalization_44/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.3855730304531024, "scale": 0.009968151298223758, "dtype": "uint8"}}, {"name": "batch_normalization_44/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.23984774947166443, "scale": 0.004611740509668986, "dtype": "uint8"}}, {"name": "batch_normalization_45/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.198061533535228, "scale": 0.009740337671018114, "dtype": "uint8"}}, {"name": "batch_normalization_45/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.954274336496989, "scale": 0.022991462782317517, "dtype": "uint8"}}, {"name": "batch_normalization_45/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.12165232747793198, "scale": 0.004625043360625997, "dtype": "uint8"}}, {"name": "batch_normalization_46/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.2301660285276526, "scale": 0.01079093007480397, "dtype": "uint8"}}, {"name": "batch_normalization_46/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.2148393953547758, "scale": 0.008098929302365172, "dtype": "uint8"}}, {"name": "batch_normalization_46/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.0945582166314125, "scale": 0.009077410692093418, "dtype": "uint8"}}, {"name": "batch_normalization_47/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.4696354982899684, "scale": 0.009481519343806248, "dtype": "uint8"}}, {"name": "batch_normalization_47/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1994350405300365, "scale": 0.007014240003099629, "dtype": "uint8"}}, {"name": "batch_normalization_47/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.11140790581703186, "scale": 0.005514528120265288, "dtype": "uint8"}}, {"name": "batch_normalization_48/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.5309041387894575, "scale": 0.010206027591929717, "dtype": "uint8"}}, {"name": "batch_normalization_48/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.9451826843560909, "scale": 0.012311282812380323, "dtype": "uint8"}}, {"name": "batch_normalization_48/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.10514998435974121, "scale": 0.005894911055471383, "dtype": "uint8"}}, {"name": "batch_normalization_49/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -2.14061705271403, "scale": 0.010442034403483073, "dtype": "uint8"}}, {"name": "batch_normalization_49/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.2268771409988406, "scale": 0.014554752555547976, "dtype": "uint8"}}, {"name": "batch_normalization_49/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.11649957299232483, "scale": 0.012523744971144434, "dtype": "uint8"}}, {"name": "batch_normalization_5/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.2072101817411534, "scale": 0.01676680807973824, "dtype": "uint8"}}, {"name": "batch_normalization_5/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -12.276217052983302, "scale": 0.11804054858637791, "dtype": "uint8"}}, {"name": "batch_normalization_5/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.5460559725761414, "scale": 0.024879303399254295, "dtype": "uint8"}}, {"name": "batch_normalization_50/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.4464423656463623, "scale": 0.00563175964954437, "dtype": "uint8"}}, {"name": "batch_normalization_50/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.8957669398363899, "scale": 0.0060524793232188505, "dtype": "uint8"}}, {"name": "batch_normalization_50/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.07341840118169785, "scale": 0.0036757070936408696, "dtype": "uint8"}}, {"name": "batch_normalization_51/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.0999449000639074, "scale": 0.008942641463934206, "dtype": "uint8"}}, {"name": "batch_normalization_51/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.029522571142982, "scale": 0.011090287274005366, "dtype": "uint8"}}, {"name": "batch_normalization_51/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.3355939984321594, "scale": 0.006160175800323487, "dtype": "uint8"}}, {"name": "batch_normalization_52/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.524581991223728, "scale": 0.007699909046584485, "dtype": "uint8"}}, {"name": "batch_normalization_52/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -2.118796606624828, "scale": 0.013582029529646331, "dtype": "uint8"}}, {"name": "batch_normalization_52/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.23068301379680634, "scale": 0.006010897311509824, "dtype": "uint8"}}, {"name": "batch_normalization_53/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.376077589334226, "scale": 0.007954205718694948, "dtype": "uint8"}}, {"name": "batch_normalization_53/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1059657826143152, "scale": 0.006912286141339471, "dtype": "uint8"}}, {"name": "batch_normalization_53/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.23038174211978912, "scale": 0.0036060267219356463, "dtype": "uint8"}}, {"name": "batch_normalization_54/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.395288348197937, "scale": 0.005394561647200117, "dtype": "uint8"}}, {"name": "batch_normalization_54/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.3039465614393644, "scale": 0.009118507422652898, "dtype": "uint8"}}, {"name": "batch_normalization_54/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.21060386300086975, "scale": 0.0029812921495998607, "dtype": "uint8"}}, {"name": "batch_normalization_55/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.5728507976905972, "scale": 0.007748033486160578, "dtype": "uint8"}}, {"name": "batch_normalization_55/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1225942415349623, "scale": 0.00870228094213149, "dtype": "uint8"}}, {"name": "batch_normalization_55/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.149143785238266, "scale": 0.0036947704997717166, "dtype": "uint8"}}, {"name": "batch_normalization_56/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.4110212517719645, "scale": 0.007882800289228852, "dtype": "uint8"}}, {"name": "batch_normalization_56/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.3976049315695669, "scale": 0.010508307756162157, "dtype": "uint8"}}, {"name": "batch_normalization_56/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.16969893872737885, "scale": 0.005670124467681436, "dtype": "uint8"}}, {"name": "batch_normalization_57/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -2.037970177566304, "scale": 0.008938465691080281, "dtype": "uint8"}}, {"name": "batch_normalization_57/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -2.0804866949717207, "scale": 0.012238157029245415, "dtype": "uint8"}}, {"name": "batch_normalization_57/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.3031127452850342, "scale": 0.009343819524727615, "dtype": "uint8"}}, {"name": "batch_normalization_58/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1626297235488892, "scale": 0.008018136024475098, "dtype": "uint8"}}, {"name": "batch_normalization_58/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1574389139811199, "scale": 0.00890337626139323, "dtype": "uint8"}}, {"name": "batch_normalization_58/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.20891253650188446, "scale": 0.008950928437943552, "dtype": "uint8"}}, {"name": "batch_normalization_59/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5612965036841, "scale": 0.008578552218044506, "dtype": "uint8"}}, {"name": "batch_normalization_59/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.9308635936063876, "scale": 0.01526491455003327, "dtype": "uint8"}}, {"name": "batch_normalization_59/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.35770270228385925, "scale": 0.015598084061753515, "dtype": "uint8"}}, {"name": "batch_normalization_6/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -0.4988247050958522, "scale": 0.018474989077624154, "dtype": "uint8"}}, {"name": "batch_normalization_6/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -4.639463159149768, "scale": 0.0473414608076507, "dtype": "uint8"}}, {"name": "batch_normalization_6/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.5386254787445068, "scale": 0.025258790745454677, "dtype": "uint8"}}, {"name": "batch_normalization_60/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5135674476623535, "scale": 0.0047089920324437755, "dtype": "uint8"}}, {"name": "batch_normalization_60/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.219797550346337, "scale": 0.006386374609143126, "dtype": "uint8"}}, {"name": "batch_normalization_60/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.13531571626663208, "scale": 0.002973755434447644, "dtype": "uint8"}}, {"name": "batch_normalization_61/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5758512195418863, "scale": 0.006677335676024942, "dtype": "uint8"}}, {"name": "batch_normalization_61/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.3910136437883565, "scale": 0.008040541293574314, "dtype": "uint8"}}, {"name": "batch_normalization_61/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.27678921818733215, "scale": 0.005867989741119684, "dtype": "uint8"}}, {"name": "batch_normalization_62/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.7731781005859375, "scale": 0.005797953932893042, "dtype": "uint8"}}, {"name": "batch_normalization_62/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1186937569403181, "scale": 0.006180628491382973, "dtype": "uint8"}}, {"name": "batch_normalization_62/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.2029876708984375, "scale": 0.003584029627781288, "dtype": "uint8"}}, {"name": "batch_normalization_63/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1662906955270207, "scale": 0.007199325281030991, "dtype": "uint8"}}, {"name": "batch_normalization_63/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.5863659428615197, "scale": 0.005235410204120711, "dtype": "uint8"}}, {"name": "batch_normalization_63/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.09435708075761795, "scale": 0.0028266684389581867, "dtype": "uint8"}}, {"name": "batch_normalization_64/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -2.0544645720837162, "scale": 0.018343433679318896, "dtype": "uint8"}}, {"name": "batch_normalization_64/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.3606223686068666, "scale": 0.011803111843034333, "dtype": "uint8"}}, {"name": "batch_normalization_64/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.24856248497962952, "scale": 0.017925596587798173, "dtype": "uint8"}}, {"name": "batch_normalization_65/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5397444839571037, "scale": 0.007474487786199533, "dtype": "uint8"}}, {"name": "batch_normalization_65/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.0257711017833036, "scale": 0.007770993195328058, "dtype": "uint8"}}, {"name": "batch_normalization_65/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.18295010924339294, "scale": 0.002770194937201107, "dtype": "uint8"}}, {"name": "batch_normalization_66/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5399934053421023, "scale": 0.009058784737306484, "dtype": "uint8"}}, {"name": "batch_normalization_66/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.2256995402130426, "scale": 0.007959087923461316, "dtype": "uint8"}}, {"name": "batch_normalization_66/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.2300872653722763, "scale": 0.004644319648836173, "dtype": "uint8"}}, {"name": "batch_normalization_67/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5030710697174072, "scale": 0.005584524601113562, "dtype": "uint8"}}, {"name": "batch_normalization_67/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.4341935107520982, "scale": 0.0067971256433748736, "dtype": "uint8"}}, {"name": "batch_normalization_67/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.13089387118816376, "scale": 0.0026349552121816898, "dtype": "uint8"}}, {"name": "batch_normalization_68/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1063206609557656, "scale": 0.005853548470665427, "dtype": "uint8"}}, {"name": "batch_normalization_68/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.067355478511137, "scale": 0.010165290271534639, "dtype": "uint8"}}, {"name": "batch_normalization_68/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.15702544152736664, "scale": 0.0025017112493515015, "dtype": "uint8"}}, {"name": "batch_normalization_69/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -2.2159725623972277, "scale": 0.012958903873667998, "dtype": "uint8"}}, {"name": "batch_normalization_69/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.008986711502075, "scale": 0.006804025056315404, "dtype": "uint8"}}, {"name": "batch_normalization_69/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.3119298219680786, "scale": 0.012169442924798704, "dtype": "uint8"}}, {"name": "batch_normalization_7/beta", "shape": [48], "dtype": "float32", "quantization": {"min": -0.6259138478952295, "scale": 0.009629443813772762, "dtype": "uint8"}}, {"name": "batch_normalization_7/moving_mean", "shape": [48], "dtype": "float32", "quantization": {"min": -2.1740409458384793, "scale": 0.019945329778334672, "dtype": "uint8"}}, {"name": "batch_normalization_7/moving_variance", "shape": [48], "dtype": "float32", "quantization": {"min": 0.3680301010608673, "scale": 0.014270223238888909, "dtype": "uint8"}}, {"name": "batch_normalization_70/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.865909457206726, "scale": 0.004504433332705031, "dtype": "uint8"}}, {"name": "batch_normalization_70/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1317527546602135, "scale": 0.0050524676547330965, "dtype": "uint8"}}, {"name": "batch_normalization_70/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.11138727515935898, "scale": 0.0026711427990128013, "dtype": "uint8"}}, {"name": "batch_normalization_71/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.6039793491363525, "scale": 0.005784372196478003, "dtype": "uint8"}}, {"name": "batch_normalization_71/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.47732780867931884, "scale": 0.004920905244116689, "dtype": "uint8"}}, {"name": "batch_normalization_71/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.037272851914167404, "scale": 0.0005219906714617037, "dtype": "uint8"}}, {"name": "batch_normalization_72/beta", "shape": [320], "dtype": "float32", "quantization": {"min": -1.540266954197603, "scale": 0.009223155414356905, "dtype": "uint8"}}, {"name": "batch_normalization_72/moving_mean", "shape": [320], "dtype": "float32", "quantization": {"min": -2.0190852207296035, "scale": 0.010461581454557532, "dtype": "uint8"}}, {"name": "batch_normalization_72/moving_variance", "shape": [320], "dtype": "float32", "quantization": {"min": 0.06347450613975525, "scale": 0.003608025172177483, "dtype": "uint8"}}, {"name": "batch_normalization_73/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -0.985390640707577, "scale": 0.012633213342404833, "dtype": "uint8"}}, {"name": "batch_normalization_73/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.9022618592954149, "scale": 0.010491416968551336, "dtype": "uint8"}}, {"name": "batch_normalization_73/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.03170640394091606, "scale": 0.0026475690889592265, "dtype": "uint8"}}, {"name": "batch_normalization_74/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.0769996951608096, "scale": 0.015608691234214633, "dtype": "uint8"}}, {"name": "batch_normalization_74/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.7473176166123034, "scale": 0.012570630335340312, "dtype": "uint8"}}, {"name": "batch_normalization_74/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.13737867772579193, "scale": 0.006850161330372679, "dtype": "uint8"}}, {"name": "batch_normalization_75/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.4387849751640769, "scale": 0.007653111570021685, "dtype": "uint8"}}, {"name": "batch_normalization_75/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.253594519110287, "scale": 0.017469724954343308, "dtype": "uint8"}}, {"name": "batch_normalization_75/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.17224669456481934, "scale": 0.014315306906606637, "dtype": "uint8"}}, {"name": "batch_normalization_76/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.6436317995482799, "scale": 0.012265908951852835, "dtype": "uint8"}}, {"name": "batch_normalization_76/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.6223250557394588, "scale": 0.009012916976330327, "dtype": "uint8"}}, {"name": "batch_normalization_76/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.10091816633939743, "scale": 0.024782416896492826, "dtype": "uint8"}}, {"name": "batch_normalization_77/beta", "shape": [320], "dtype": "float32", "quantization": {"min": -1.6236799055454778, "scale": 0.008776648138083664, "dtype": "uint8"}}, {"name": "batch_normalization_77/moving_mean", "shape": [320], "dtype": "float32", "quantization": {"min": -2.9638912789961873, "scale": 0.017033857925265444, "dtype": "uint8"}}, {"name": "batch_normalization_77/moving_variance", "shape": [320], "dtype": "float32", "quantization": {"min": 0.11361116915941238, "scale": 0.023207617945530834, "dtype": "uint8"}}, {"name": "batch_normalization_78/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.4153826966005212, "scale": 0.008277091792985504, "dtype": "uint8"}}, {"name": "batch_normalization_78/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.9769486890119664, "scale": 0.00707933832617367, "dtype": "uint8"}}, {"name": "batch_normalization_78/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.19088256359100342, "scale": 0.0073945882273655315, "dtype": "uint8"}}, {"name": "batch_normalization_79/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -2.0473411083221436, "scale": 0.004208615013197356, "dtype": "uint8"}}, {"name": "batch_normalization_79/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.7610570852663003, "scale": 0.0033089438489839144, "dtype": "uint8"}}, {"name": "batch_normalization_79/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.05480360612273216, "scale": 0.001661744786828172, "dtype": "uint8"}}, {"name": "batch_normalization_8/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.2169222845750698, "scale": 0.021349513764474908, "dtype": "uint8"}}, {"name": "batch_normalization_8/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -7.352502991171444, "scale": 0.03551933812160118, "dtype": "uint8"}}, {"name": "batch_normalization_8/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 1.2515424489974976, "scale": 0.03510500449760287, "dtype": "uint8"}}, {"name": "batch_normalization_80/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.7098569869995117, "scale": 0.003118572515599868, "dtype": "uint8"}}, {"name": "batch_normalization_80/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.7364731842980665, "scale": 0.003425456671153798, "dtype": "uint8"}}, {"name": "batch_normalization_80/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.06618082523345947, "scale": 0.0018710627275354721, "dtype": "uint8"}}, {"name": "batch_normalization_81/beta", "shape": [448], "dtype": "float32", "quantization": {"min": -1.869015963054171, "scale": 0.008693097502577539, "dtype": "uint8"}}, {"name": "batch_normalization_81/moving_mean", "shape": [448], "dtype": "float32", "quantization": {"min": -1.1766659362643372, "scale": 0.008286379832847445, "dtype": "uint8"}}, {"name": "batch_normalization_81/moving_variance", "shape": [448], "dtype": "float32", "quantization": {"min": 0.14993160963058472, "scale": 0.004515989387736601, "dtype": "uint8"}}, {"name": "batch_normalization_82/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.3327109813690183, "scale": 0.008710529289993585, "dtype": "uint8"}}, {"name": "batch_normalization_82/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -1.1086185679716223, "scale": 0.008940472322351792, "dtype": "uint8"}}, {"name": "batch_normalization_82/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.21444351971149445, "scale": 0.011961153149604798, "dtype": "uint8"}}, {"name": "batch_normalization_83/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.818679837619557, "scale": 0.015412540996775907, "dtype": "uint8"}}, {"name": "batch_normalization_83/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -2.0038957876317642, "scale": 0.012845485818152334, "dtype": "uint8"}}, {"name": "batch_normalization_83/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.07089755684137344, "scale": 0.02103717663124496, "dtype": "uint8"}}, {"name": "batch_normalization_84/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.7786205541853812, "scale": 0.008158809881584317, "dtype": "uint8"}}, {"name": "batch_normalization_84/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -1.3955397058935726, "scale": 0.01722888525794534, "dtype": "uint8"}}, {"name": "batch_normalization_84/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.07342959940433502, "scale": 0.011137770613034566, "dtype": "uint8"}}, {"name": "batch_normalization_85/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.178499460220337, "scale": 0.0028658638982211842, "dtype": "uint8"}}, {"name": "batch_normalization_85/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.690884064693077, "scale": 0.010186048582488415, "dtype": "uint8"}}, {"name": "batch_normalization_85/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.14086772501468658, "scale": 0.00910748775098838, "dtype": "uint8"}}, {"name": "batch_normalization_86/beta", "shape": [320], "dtype": "float32", "quantization": {"min": -0.5220519305736411, "scale": 0.0020882077222945643, "dtype": "uint8"}}, {"name": "batch_normalization_86/moving_mean", "shape": [320], "dtype": "float32", "quantization": {"min": -0.5231765800831365, "scale": 0.0036081143454009413, "dtype": "uint8"}}, {"name": "batch_normalization_86/moving_variance", "shape": [320], "dtype": "float32", "quantization": {"min": 0.11893065273761749, "scale": 0.005666278098143783, "dtype": "uint8"}}, {"name": "batch_normalization_87/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.984124174889396, "scale": 0.008818329666175094, "dtype": "uint8"}}, {"name": "batch_normalization_87/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.5652224242687225, "scale": 0.0036942642109066832, "dtype": "uint8"}}, {"name": "batch_normalization_87/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.06085425242781639, "scale": 0.03796012239421115, "dtype": "uint8"}}, {"name": "batch_normalization_88/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -0.3602467477321625, "scale": 0.001247984813708885, "dtype": "uint8"}}, {"name": "batch_normalization_88/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.0991711297455956, "scale": 0.0008549235322896172, "dtype": "uint8"}}, {"name": "batch_normalization_88/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.021573534235358238, "scale": 0.0022643732454846886, "dtype": "uint8"}}, {"name": "batch_normalization_89/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -0.29050213098526, "scale": 0.0009703184897993125, "dtype": "uint8"}}, {"name": "batch_normalization_89/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.12789016552999907, "scale": 0.0010231213242399926, "dtype": "uint8"}}, {"name": "batch_normalization_89/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.01962556503713131, "scale": 0.002291068997161061, "dtype": "uint8"}}, {"name": "batch_normalization_9/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.2553448396570541, "scale": 0.017435344995236864, "dtype": "uint8"}}, {"name": "batch_normalization_9/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -9.159099926668056, "scale": 0.05174632726931105, "dtype": "uint8"}}, {"name": "batch_normalization_9/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.36967048048973083, "scale": 0.022706968293470495, "dtype": "uint8"}}, {"name": "batch_normalization_90/beta", "shape": [448], "dtype": "float32", "quantization": {"min": -1.9150965461543963, "scale": 0.008825329705780628, "dtype": "uint8"}}, {"name": "batch_normalization_90/moving_mean", "shape": [448], "dtype": "float32", "quantization": {"min": -1.0748392633363313, "scale": 0.011080817147797229, "dtype": "uint8"}}, {"name": "batch_normalization_90/moving_variance", "shape": [448], "dtype": "float32", "quantization": {"min": 0.058019232004880905, "scale": 0.03696253692694739, "dtype": "uint8"}}, {"name": "batch_normalization_91/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.4989316603716683, "scale": 0.016117544735179228, "dtype": "uint8"}}, {"name": "batch_normalization_91/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -1.0672029087356492, "scale": 0.0048954261868607764, "dtype": "uint8"}}, {"name": "batch_normalization_91/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.04761062562465668, "scale": 0.02329025134152057, "dtype": "uint8"}}, {"name": "batch_normalization_92/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -0.4021552567680677, "scale": 0.0018197070441994014, "dtype": "uint8"}}, {"name": "batch_normalization_92/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.2961117188135783, "scale": 0.0027935067812601727, "dtype": "uint8"}}, {"name": "batch_normalization_92/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.3863965570926666, "scale": 0.02258765405299617, "dtype": "uint8"}}, {"name": "batch_normalization_93/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -0.4592238664627075, "scale": 0.0011769139883564968, "dtype": "uint8"}}, {"name": "batch_normalization_93/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.29778090224546544, "scale": 0.0027572305763469023, "dtype": "uint8"}}, {"name": "batch_normalization_93/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.3583631217479706, "scale": 0.01633430754437166, "dtype": "uint8"}}, {"name": "batch_normalization_94/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -0.314007496249442, "scale": 0.0017640870575811349, "dtype": "uint8"}}, {"name": "batch_normalization_94/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.7145729660987854, "scale": 0.004203370388816385, "dtype": "uint8"}}, {"name": "batch_normalization_94/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.11457707732915878, "scale": 0.008541139814199185, "dtype": "uint8"}}, {"name": "conv2d_1/kernel", "shape": [3, 3, 3, 32], "dtype": "float32", "quantization": {"min": -0.7515598654747009, "scale": 0.006423588593800863, "dtype": "uint8"}}, {"name": "conv2d_10/kernel", "shape": [3, 3, 64, 96], "dtype": "float32", "quantization": {"min": -0.5314577747793758, "scale": 0.004088136729072122, "dtype": "uint8"}}, {"name": "conv2d_11/kernel", "shape": [3, 3, 96, 96], "dtype": "float32", "quantization": {"min": -0.297173446299983, "scale": 0.0027015767845453, "dtype": "uint8"}}, {"name": "conv2d_12/kernel", "shape": [1, 1, 192, 32], "dtype": "float32", "quantization": {"min": -0.6043872510685641, "scale": 0.003874277250439513, "dtype": "uint8"}}, {"name": "conv2d_13/kernel", "shape": [1, 1, 256, 64], "dtype": "float32", "quantization": {"min": -0.6367825031280518, "scale": 0.005489504337310791, "dtype": "uint8"}}, {"name": "conv2d_14/kernel", "shape": [1, 1, 256, 48], "dtype": "float32", "quantization": {"min": -0.6980268389570946, "scale": 0.004256261213153016, "dtype": "uint8"}}, {"name": "conv2d_15/kernel", "shape": [5, 5, 48, 64], "dtype": "float32", "quantization": {"min": -0.37809036514338323, "scale": 0.0034062195057962454, "dtype": "uint8"}}, {"name": "conv2d_16/kernel", "shape": [1, 1, 256, 64], "dtype": "float32", "quantization": {"min": -0.38000125464271095, "scale": 0.002945746160021015, "dtype": "uint8"}}, {"name": "conv2d_17/kernel", "shape": [3, 3, 64, 96], "dtype": "float32", "quantization": {"min": -0.36159335772196455, "scale": 0.002658774689132092, "dtype": "uint8"}}, {"name": "conv2d_18/kernel", "shape": [3, 3, 96, 96], "dtype": "float32", "quantization": {"min": -0.322937131395527, "scale": 0.0025229463390275546, "dtype": "uint8"}}, {"name": "conv2d_19/kernel", "shape": [1, 1, 256, 64], "dtype": "float32", "quantization": {"min": -0.49620920665123885, "scale": 0.0037308962906108184, "dtype": "uint8"}}, {"name": "conv2d_2/kernel", "shape": [3, 3, 32, 32], "dtype": "float32", "quantization": {"min": -0.9963670036372017, "scale": 0.00784540947745828, "dtype": "uint8"}}, {"name": "conv2d_20/kernel", "shape": [1, 1, 288, 64], "dtype": "float32", "quantization": {"min": -0.9467216884388643, "scale": 0.005954224455590342, "dtype": "uint8"}}, {"name": "conv2d_21/kernel", "shape": [1, 1, 288, 48], "dtype": "float32", "quantization": {"min": -0.36753161491132247, "scale": 0.0028939497237112006, "dtype": "uint8"}}, {"name": "conv2d_22/kernel", "shape": [5, 5, 48, 64], "dtype": "float32", "quantization": {"min": -0.28142107234281655, "scale": 0.0023451756028568045, "dtype": "uint8"}}, {"name": "conv2d_23/kernel", "shape": [1, 1, 288, 64], "dtype": "float32", "quantization": {"min": -0.5600246597738827, "scale": 0.004912497015560374, "dtype": "uint8"}}, {"name": "conv2d_24/kernel", "shape": [3, 3, 64, 96], "dtype": "float32", "quantization": {"min": -0.40741646079456106, "scale": 0.0032334639745600084, "dtype": "uint8"}}, {"name": "conv2d_25/kernel", "shape": [3, 3, 96, 96], "dtype": "float32", "quantization": {"min": -0.2517923231218375, "scale": 0.0026786417353386973, "dtype": "uint8"}}, {"name": "conv2d_26/kernel", "shape": [1, 1, 288, 64], "dtype": "float32", "quantization": {"min": -0.40744167694858474, "scale": 0.00420042965926376, "dtype": "uint8"}}, {"name": "conv2d_27/kernel", "shape": [3, 3, 288, 384], "dtype": "float32", "quantization": {"min": -0.17904583583859837, "scale": 0.0023872778111813115, "dtype": "uint8"}}, {"name": "conv2d_28/kernel", "shape": [1, 1, 288, 64], "dtype": "float32", "quantization": {"min": -0.3550921758015951, "scale": 0.0030092557271321615, "dtype": "uint8"}}, {"name": "conv2d_29/kernel", "shape": [3, 3, 64, 96], "dtype": "float32", "quantization": {"min": -0.21044881904826443, "scale": 0.0021044881904826443, "dtype": "uint8"}}, {"name": "conv2d_3/kernel", "shape": [3, 3, 32, 64], "dtype": "float32", "quantization": {"min": -0.9826949535631666, "scale": 0.006920386996923708, "dtype": "uint8"}}, {"name": "conv2d_30/kernel", "shape": [3, 3, 96, 96], "dtype": "float32", "quantization": {"min": -0.142222724182933, "scale": 0.0013291843381582522, "dtype": "uint8"}}, {"name": "conv2d_31/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.6299613606696035, "scale": 0.004736551583981981, "dtype": "uint8"}}, {"name": "conv2d_32/kernel", "shape": [1, 1, 768, 128], "dtype": "float32", "quantization": {"min": -0.28287766400505515, "scale": 0.0029466423333859913, "dtype": "uint8"}}, {"name": "conv2d_33/kernel", "shape": [1, 7, 128, 128], "dtype": "float32", "quantization": {"min": -0.37715829119962807, "scale": 0.003308406063154632, "dtype": "uint8"}}, {"name": "conv2d_34/kernel", "shape": [7, 1, 128, 192], "dtype": "float32", "quantization": {"min": -0.2915347753786573, "scale": 0.002602989065880869, "dtype": "uint8"}}, {"name": "conv2d_35/kernel", "shape": [1, 1, 768, 128], "dtype": "float32", "quantization": {"min": -0.5098388725636052, "scale": 0.0034217373997557396, "dtype": "uint8"}}, {"name": "conv2d_36/kernel", "shape": [7, 1, 128, 128], "dtype": "float32", "quantization": {"min": -0.29266455173492434, "scale": 0.002956207593282064, "dtype": "uint8"}}, {"name": "conv2d_37/kernel", "shape": [1, 7, 128, 128], "dtype": "float32", "quantization": {"min": -0.3063901633608575, "scale": 0.002664262290094413, "dtype": "uint8"}}, {"name": "conv2d_38/kernel", "shape": [7, 1, 128, 128], "dtype": "float32", "quantization": {"min": -0.2562146642628838, "scale": 0.002227953602285946, "dtype": "uint8"}}, {"name": "conv2d_39/kernel", "shape": [1, 7, 128, 192], "dtype": "float32", "quantization": {"min": -0.32483990402782664, "scale": 0.0024062215113172343, "dtype": "uint8"}}, {"name": "conv2d_4/kernel", "shape": [1, 1, 64, 80], "dtype": "float32", "quantization": {"min": -1.0175340128879922, "scale": 0.008771844938689587, "dtype": "uint8"}}, {"name": "conv2d_40/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.5300707817077637, "scale": 0.003897579277262968, "dtype": "uint8"}}, {"name": "conv2d_41/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.4742822464774637, "scale": 0.0037345058777753046, "dtype": "uint8"}}, {"name": "conv2d_42/kernel", "shape": [1, 1, 768, 160], "dtype": "float32", "quantization": {"min": -0.4733707100737329, "scale": 0.004080781983394249, "dtype": "uint8"}}, {"name": "conv2d_43/kernel", "shape": [1, 7, 160, 160], "dtype": "float32", "quantization": {"min": -0.31529887493918923, "scale": 0.0028405304048575606, "dtype": "uint8"}}, {"name": "conv2d_44/kernel", "shape": [7, 1, 160, 192], "dtype": "float32", "quantization": {"min": -0.2984846812837264, "scale": 0.0025955189676845777, "dtype": "uint8"}}, {"name": "conv2d_45/kernel", "shape": [1, 1, 768, 160], "dtype": "float32", "quantization": {"min": -0.756424422825084, "scale": 0.0054813363972832175, "dtype": "uint8"}}, {"name": "conv2d_46/kernel", "shape": [7, 1, 160, 160], "dtype": "float32", "quantization": {"min": -0.3355672222726485, "scale": 0.0028680959168602437, "dtype": "uint8"}}, {"name": "conv2d_47/kernel", "shape": [1, 7, 160, 160], "dtype": "float32", "quantization": {"min": -0.22706727812103197, "scale": 0.002122124094589084, "dtype": "uint8"}}, {"name": "conv2d_48/kernel", "shape": [7, 1, 160, 160], "dtype": "float32", "quantization": {"min": -0.2144267187983382, "scale": 0.002257123355771981, "dtype": "uint8"}}, {"name": "conv2d_49/kernel", "shape": [1, 7, 160, 192], "dtype": "float32", "quantization": {"min": -0.3024808161398944, "scale": 0.002585306120853798, "dtype": "uint8"}}, {"name": "conv2d_5/kernel", "shape": [3, 3, 80, 192], "dtype": "float32", "quantization": {"min": -0.5794109293058807, "scale": 0.005267372084598915, "dtype": "uint8"}}, {"name": "conv2d_50/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.554896311900195, "scale": 0.0038006596705492807, "dtype": "uint8"}}, {"name": "conv2d_51/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -1.2061398295795216, "scale": 0.006931838101031733, "dtype": "uint8"}}, {"name": "conv2d_52/kernel", "shape": [1, 1, 768, 160], "dtype": "float32", "quantization": {"min": -0.3730403196577932, "scale": 0.0028695409204445633, "dtype": "uint8"}}, {"name": "conv2d_53/kernel", "shape": [1, 7, 160, 160], "dtype": "float32", "quantization": {"min": -0.3463286845123067, "scale": 0.003011553778367884, "dtype": "uint8"}}, {"name": "conv2d_54/kernel", "shape": [7, 1, 160, 192], "dtype": "float32", "quantization": {"min": -0.37797666168680377, "scale": 0.0027589537349401736, "dtype": "uint8"}}, {"name": "conv2d_55/kernel", "shape": [1, 1, 768, 160], "dtype": "float32", "quantization": {"min": -0.4141439642391953, "scale": 0.004989686316134883, "dtype": "uint8"}}, {"name": "conv2d_56/kernel", "shape": [7, 1, 160, 160], "dtype": "float32", "quantization": {"min": -0.3559323572645, "scale": 0.0032357487024045456, "dtype": "uint8"}}, {"name": "conv2d_57/kernel", "shape": [1, 7, 160, 160], "dtype": "float32", "quantization": {"min": -0.2674277156007056, "scale": 0.0026742771560070563, "dtype": "uint8"}}, {"name": "conv2d_58/kernel", "shape": [7, 1, 160, 160], "dtype": "float32", "quantization": {"min": -0.5307076104715759, "scale": 0.0035617960434333952, "dtype": "uint8"}}, {"name": "conv2d_59/kernel", "shape": [1, 7, 160, 192], "dtype": "float32", "quantization": {"min": -0.4569946948219748, "scale": 0.0036854410872739904, "dtype": "uint8"}}, {"name": "conv2d_6/kernel", "shape": [1, 1, 192, 64], "dtype": "float32", "quantization": {"min": -0.670501438776652, "scale": 0.005634465872072706, "dtype": "uint8"}}, {"name": "conv2d_60/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.7935055354062248, "scale": 0.004408364085590138, "dtype": "uint8"}}, {"name": "conv2d_61/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -1.0109173382029812, "scale": 0.006053397234748391, "dtype": "uint8"}}, {"name": "conv2d_62/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.41344635837218335, "scale": 0.004645464700811049, "dtype": "uint8"}}, {"name": "conv2d_63/kernel", "shape": [1, 7, 192, 192], "dtype": "float32", "quantization": {"min": -0.24348092184347264, "scale": 0.004508905960064308, "dtype": "uint8"}}, {"name": "conv2d_64/kernel", "shape": [7, 1, 192, 192], "dtype": "float32", "quantization": {"min": -0.4806287989896886, "scale": 0.004005239991580738, "dtype": "uint8"}}, {"name": "conv2d_65/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.3917752130358827, "scale": 0.0030136554848914053, "dtype": "uint8"}}, {"name": "conv2d_66/kernel", "shape": [7, 1, 192, 192], "dtype": "float32", "quantization": {"min": -0.20425691803296406, "scale": 0.002172945936520894, "dtype": "uint8"}}, {"name": "conv2d_67/kernel", "shape": [1, 7, 192, 192], "dtype": "float32", "quantization": {"min": -0.22208931896032072, "scale": 0.0019312114692201802, "dtype": "uint8"}}, {"name": "conv2d_68/kernel", "shape": [7, 1, 192, 192], "dtype": "float32", "quantization": {"min": -0.1574226176037508, "scale": 0.0016063532408546, "dtype": "uint8"}}, {"name": "conv2d_69/kernel", "shape": [1, 7, 192, 192], "dtype": "float32", "quantization": {"min": -0.1563245475292206, "scale": 0.0015951484441757203, "dtype": "uint8"}}, {"name": "conv2d_7/kernel", "shape": [1, 1, 192, 48], "dtype": "float32", "quantization": {"min": -0.6889615984523997, "scale": 0.005467949194066664, "dtype": "uint8"}}, {"name": "conv2d_70/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.5254201654125663, "scale": 0.003574286839541267, "dtype": "uint8"}}, {"name": "conv2d_71/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.14087693007553326, "scale": 0.001394821089856765, "dtype": "uint8"}}, {"name": "conv2d_72/kernel", "shape": [3, 3, 192, 320], "dtype": "float32", "quantization": {"min": -0.1017690990485397, "scale": 0.0009785490293128818, "dtype": "uint8"}}, {"name": "conv2d_73/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.27043156717337813, "scale": 0.0035120982749789367, "dtype": "uint8"}}, {"name": "conv2d_74/kernel", "shape": [1, 7, 192, 192], "dtype": "float32", "quantization": {"min": -0.1989350945341821, "scale": 0.0017762062011980543, "dtype": "uint8"}}, {"name": "conv2d_75/kernel", "shape": [7, 1, 192, 192], "dtype": "float32", "quantization": {"min": -0.21929225535953745, "scale": 0.0017828638647116866, "dtype": "uint8"}}, {"name": "conv2d_76/kernel", "shape": [3, 3, 192, 192], "dtype": "float32", "quantization": {"min": -0.31502492287579703, "scale": 0.003316051819745232, "dtype": "uint8"}}, {"name": "conv2d_77/kernel", "shape": [1, 1, 1280, 320], "dtype": "float32", "quantization": {"min": -0.2736586353358101, "scale": 0.0035084440427667956, "dtype": "uint8"}}, {"name": "conv2d_78/kernel", "shape": [1, 1, 1280, 384], "dtype": "float32", "quantization": {"min": -0.24273421998117484, "scale": 0.0021672698212604896, "dtype": "uint8"}}, {"name": "conv2d_79/kernel", "shape": [1, 3, 384, 384], "dtype": "float32", "quantization": {"min": -0.1003472120738497, "scale": 0.0010239511436107112, "dtype": "uint8"}}, {"name": "conv2d_8/kernel", "shape": [5, 5, 48, 64], "dtype": "float32", "quantization": {"min": -0.8959833215264714, "scale": 0.007859502820407644, "dtype": "uint8"}}, {"name": "conv2d_80/kernel", "shape": [3, 1, 384, 384], "dtype": "float32", "quantization": {"min": -0.12109428144553128, "scale": 0.0013307063895113328, "dtype": "uint8"}}, {"name": "conv2d_81/kernel", "shape": [1, 1, 1280, 448], "dtype": "float32", "quantization": {"min": -0.3801819539537617, "scale": 0.004271707347795075, "dtype": "uint8"}}, {"name": "conv2d_82/kernel", "shape": [3, 3, 448, 384], "dtype": "float32", "quantization": {"min": -0.23576255931573753, "scale": 0.0026195839923970838, "dtype": "uint8"}}, {"name": "conv2d_83/kernel", "shape": [1, 3, 384, 384], "dtype": "float32", "quantization": {"min": -1.244973014382755, "scale": 0.007454928229836857, "dtype": "uint8"}}, {"name": "conv2d_84/kernel", "shape": [3, 1, 384, 384], "dtype": "float32", "quantization": {"min": -0.25950103998184204, "scale": 0.003052953411551083, "dtype": "uint8"}}, {"name": "conv2d_85/kernel", "shape": [1, 1, 1280, 192], "dtype": "float32", "quantization": {"min": -0.29392333416377797, "scale": 0.0026479579654394413, "dtype": "uint8"}}, {"name": "conv2d_86/kernel", "shape": [1, 1, 2048, 320], "dtype": "float32", "quantization": {"min": -0.13341370236639882, "scale": 0.0018028878698162004, "dtype": "uint8"}}, {"name": "conv2d_87/kernel", "shape": [1, 1, 2048, 384], "dtype": "float32", "quantization": {"min": -0.7490756504675922, "scale": 0.004512503918479471, "dtype": "uint8"}}, {"name": "conv2d_88/kernel", "shape": [1, 3, 384, 384], "dtype": "float32", "quantization": {"min": -0.04267277524751775, "scale": 0.0009482838943892834, "dtype": "uint8"}}, {"name": "conv2d_89/kernel", "shape": [3, 1, 384, 384], "dtype": "float32", "quantization": {"min": -0.044487313663258275, "scale": 0.0009671155144186581, "dtype": "uint8"}}, {"name": "conv2d_9/kernel", "shape": [1, 1, 192, 64], "dtype": "float32", "quantization": {"min": -0.4946352222386528, "scale": 0.004191823917276719, "dtype": "uint8"}}, {"name": "conv2d_90/kernel", "shape": [1, 1, 2048, 448], "dtype": "float32", "quantization": {"min": -0.7601351137254753, "scale": 0.007836444471396652, "dtype": "uint8"}}, {"name": "conv2d_91/kernel", "shape": [3, 3, 448, 384], "dtype": "float32", "quantization": {"min": -0.31073258086746813, "scale": 0.0023902506220574472, "dtype": "uint8"}}, {"name": "conv2d_92/kernel", "shape": [1, 3, 384, 384], "dtype": "float32", "quantization": {"min": -0.09287645027917973, "scale": 0.000938145962415957, "dtype": "uint8"}}, {"name": "conv2d_93/kernel", "shape": [3, 1, 384, 384], "dtype": "float32", "quantization": {"min": -0.061754796522505144, "scale": 0.0007917281605449377, "dtype": "uint8"}}, {"name": "conv2d_94/kernel", "shape": [1, 1, 2048, 192], "dtype": "float32", "quantization": {"min": -0.31682243709470714, "scale": 0.002382123587178249, "dtype": "uint8"}}, {"name": "dense_1/kernel", "shape": [2048, 256], "dtype": "float32", "quantization": {"min": -0.0752635091251018, "scale": 0.0008456574059000202, "dtype": "uint8"}}, {"name": "dense_1/bias", "shape": [256], "dtype": "float32", "quantization": {"min": -0.4126813895562116, "scale": 0.0029904448518566057, "dtype": "uint8"}}, {"name": "dense_2/kernel", "shape": [256, 128], "dtype": "float32", "quantization": {"min": -0.41079130803837494, "scale": 0.003065606776405783, "dtype": "uint8"}}, {"name": "dense_2/bias", "shape": [128], "dtype": "float32", "quantization": {"min": -0.17716065984146268, "scale": 0.003221102906208412, "dtype": "uint8"}}, {"name": "dense_3/kernel", "shape": [128, 5], "dtype": "float32", "quantization": {"min": -0.692766010761261, "scale": 0.00461844007174174, "dtype": "uint8"}}, {"name": "dense_3/bias", "shape": [5], "dtype": "float32", "quantization": {"min": -0.5889016270637512, "scale": 0.00384903024224674, "dtype": "uint8"}}]}]} \ No newline at end of file diff --git a/packages/backend/package.json b/packages/backend/package.json index ef3f55458..8f7cd34a8 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -23,6 +23,7 @@ "@peertube/http-signature": "1.6.0", "@sinonjs/fake-timers": "9.1.2", "@syuilo/aiscript": "0.11.1", + "@tensorflow/tfjs-node": "3.18.0", "abort-controller": "3.0.0", "ajv": "8.11.0", "archiver": "5.3.1", @@ -36,6 +37,7 @@ "cbor": "8.1.0", "chalk": "5.0.1", "chalk-template": "0.4.0", + "chokidar": "3.3.1", "cli-highlight": "2.1.11", "color-convert": "2.0.1", "content-disposition": "0.5.4", @@ -74,6 +76,7 @@ "nested-property": "4.0.0", "node-fetch": "3.2.6", "nodemailer": "6.7.6", + "nsfwjs": "2.4.1", "os-utils": "0.0.14", "parse5": "7.0.0", "pg": "8.7.3", diff --git a/packages/backend/src/misc/get-file-info.ts b/packages/backend/src/misc/get-file-info.ts index d70dc3d70..42061fcf8 100644 --- a/packages/backend/src/misc/get-file-info.ts +++ b/packages/backend/src/misc/get-file-info.ts @@ -1,12 +1,18 @@ import * as fs from 'node:fs'; import * as crypto from 'node:crypto'; +import { join } from 'node:path'; import * as stream from 'node:stream'; import * as util from 'node:util'; +import { FSWatcher } from 'chokidar'; import { fileTypeFromFile } from 'file-type'; +import FFmpeg from 'fluent-ffmpeg'; import isSvg from 'is-svg'; import probeImageSize from 'probe-image-size'; +import { type predictionType } from 'nsfwjs'; import sharp from 'sharp'; import { encode } from 'blurhash'; +import { detectSensitive } from '@/services/detect-sensitive.js'; +import { createTempDir } from './create-temp.js'; const pipeline = util.promisify(stream.pipeline); @@ -21,6 +27,8 @@ export type FileInfo = { height?: number; orientation?: number; blurhash?: string; + sensitive: boolean; + porn: boolean; warnings: string[]; }; @@ -37,7 +45,12 @@ const TYPE_SVG = { /** * Get file information */ -export async function getFileInfo(path: string): Promise { +export async function getFileInfo(path: string, opts: { + skipSensitiveDetection: boolean; + sensitiveThreshold?: number; + sensitiveThresholdForPorn?: number; + enableSensitiveMediaDetectionForVideos?: boolean; +}): Promise { const warnings = [] as string[]; const size = await getFileSize(path); @@ -58,7 +71,7 @@ export async function getFileInfo(path: string): Promise { // うまく判定できない画像は octet-stream にする if (!imageSize) { - warnings.push(`cannot detect image dimensions`); + warnings.push('cannot detect image dimensions'); type = TYPE_OCTET_STREAM; } else if (imageSize.wUnits === 'px') { width = imageSize.width; @@ -67,7 +80,7 @@ export async function getFileInfo(path: string): Promise { // 制限を超えている画像は octet-stream にする if (imageSize.width > 16383 || imageSize.height > 16383) { - warnings.push(`image dimensions exceeds limits`); + warnings.push('image dimensions exceeds limits'); type = TYPE_OCTET_STREAM; } } else { @@ -84,6 +97,19 @@ export async function getFileInfo(path: string): Promise { }); } + let sensitive = false; + let porn = false; + + if (!opts.skipSensitiveDetection) { + [sensitive, porn] = await detectSensitivity( + path, + type.mime, + opts.sensitiveThreshold ?? 0.5, + opts.sensitiveThresholdForPorn ?? 0.75, + opts.enableSensitiveMediaDetectionForVideos ?? false, + ); + } + return { size, md5, @@ -92,10 +118,150 @@ export async function getFileInfo(path: string): Promise { height, orientation, blurhash, + sensitive, + porn, warnings, }; } +async function detectSensitivity(source: string, mime: string, sensitiveThreshold: number, sensitiveThresholdForPorn: number, analyzeVideo: boolean): Promise<[sensitive: boolean, porn: boolean]> { + let sensitive = false; + let porn = false; + + function judgePrediction(result: readonly predictionType[]): [sensitive: boolean, porn: boolean] { + let sensitive = false; + let porn = false; + + if ((result.find(x => x.className === 'Sexy')?.probability ?? 0) > sensitiveThreshold) sensitive = true; + if ((result.find(x => x.className === 'Hentai')?.probability ?? 0) > sensitiveThreshold) sensitive = true; + if ((result.find(x => x.className === 'Porn')?.probability ?? 0) > sensitiveThreshold) sensitive = true; + + if ((result.find(x => x.className === 'Porn')?.probability ?? 0) > sensitiveThresholdForPorn) porn = true; + + return [sensitive, porn]; + } + + if (['image/jpeg', 'image/png', 'image/webp'].includes(mime)) { + const result = await detectSensitive(source); + if (result) { + [sensitive, porn] = judgePrediction(result); + } + } else if (analyzeVideo && (mime === 'image/apng' || mime.startsWith('video/'))) { + const [outDir, disposeOutDir] = await createTempDir(); + try { + const command = FFmpeg() + .input(source) + .inputOptions([ + '-skip_frame', 'nokey', // 可能ならキーフレームのみを取得してほしいとする(そうなるとは限らない) + '-lowres', '3', // 元の画質でデコードする必要はないので 1/8 画質でデコードしてもよいとする(そうなるとは限らない) + ]) + .noAudio() + .videoFilters([ + { + filter: 'select', // フレームのフィルタリング + options: { + e: 'eq(pict_type,PICT_TYPE_I)', // I-Frame のみをフィルタする(VP9 とかはデコードしてみないとわからないっぽい) + }, + }, + { + filter: 'blackframe', // 暗いフレームの検出 + options: { + amount: '0', // 暗さに関わらず全てのフレームで測定値を取る + }, + }, + { + filter: 'metadata', + options: { + mode: 'select', // フレーム選択モード + key: 'lavfi.blackframe.pblack', // フレームにおける暗部の百分率(前のフィルタからのメタデータを参照する) + value: '50', + function: 'less', // 50% 未満のフレームを選択する(50% 以上暗部があるフレームだと誤検知を招くかもしれないので) + }, + }, + { + filter: 'scale', + options: { + w: 299, + h: 299, + }, + }, + ]) + .format('image2') + .output(join(outDir, '%d.png')) + .outputOptions(['-vsync', '0']); // 可変フレームレートにすることで穴埋めをさせない + const results: ReturnType[] = []; + let frameIndex = 0; + let targetIndex = 0; + let nextIndex = 1; + for await (const path of asyncIterateFrames(outDir, command)) { + try { + const index = frameIndex++; + if (index !== targetIndex) { + continue; + } + targetIndex = nextIndex; + nextIndex += index; // fibonacci sequence によってフレーム数制限を掛ける + const result = await detectSensitive(path); + if (result) { + results.push(judgePrediction(result)); + } + } finally { + fs.promises.unlink(path); + } + } + sensitive = results.filter(x => x[0]).length >= Math.ceil(results.length * sensitiveThreshold); + porn = results.filter(x => x[1]).length >= Math.ceil(results.length * sensitiveThresholdForPorn); + } finally { + disposeOutDir(); + } + } + + return [sensitive, porn]; +} + +async function* asyncIterateFrames(cwd: string, command: FFmpeg.FfmpegCommand): AsyncGenerator { + const watcher = new FSWatcher({ + cwd, + disableGlobbing: true, + }); + let finished = false; + command.once('end', () => { + finished = true; + watcher.close(); + }); + command.run(); + for (let i = 1; true; i++) { // eslint-disable-line @typescript-eslint/no-unnecessary-condition + const current = `${i}.png`; + const next = `${i + 1}.png`; + const framePath = join(cwd, current); + if (await exists(join(cwd, next))) { + yield framePath; + } else if (!finished) { // eslint-disable-line @typescript-eslint/no-unnecessary-condition + watcher.add(next); + await new Promise((resolve, reject) => { + watcher.on('add', function onAdd(path) { + if (path === next) { // 次フレームの書き出しが始まっているなら、現在フレームの書き出しは終わっている + watcher.unwatch(current); + watcher.off('add', onAdd); + resolve(); + } + }); + command.once('end', resolve); // 全てのフレームを処理し終わったなら、最終フレームである現在フレームの書き出しは終わっている + command.once('error', reject); + }); + yield framePath; + } else if (await exists(framePath)) { + yield framePath; + } else { + return; + } + } +} + +function exists(path: string): Promise { + return fs.promises.access(path).then(() => true, () => false); +} + /** * Detect MIME Type and extension */ diff --git a/packages/backend/src/models/entities/drive-file.ts b/packages/backend/src/models/entities/drive-file.ts index 32387290d..d410b1d42 100644 --- a/packages/backend/src/models/entities/drive-file.ts +++ b/packages/backend/src/models/entities/drive-file.ts @@ -156,6 +156,19 @@ export class DriveFile { }) public isSensitive: boolean; + @Index() + @Column('boolean', { + default: false, + comment: 'Whether the DriveFile is NSFW. (predict)', + }) + public maybeSensitive: boolean; + + @Index() + @Column('boolean', { + default: false, + }) + public maybePorn: boolean; + /** * 外部の(信頼されていない)URLへの直リンクか否か */ diff --git a/packages/backend/src/models/entities/meta.ts b/packages/backend/src/models/entities/meta.ts index 2be43bdd4..ebc082dfb 100644 --- a/packages/backend/src/models/entities/meta.ts +++ b/packages/backend/src/models/entities/meta.ts @@ -188,6 +188,28 @@ export class Meta { }) public recaptchaSecretKey: string | null; + @Column('enum', { + enum: ['none', 'all', 'local', 'remote'], + default: 'none', + }) + public sensitiveMediaDetection: 'none' | 'all' | 'local' | 'remote'; + + @Column('enum', { + enum: ['medium', 'low', 'high', 'veryLow', 'veryHigh'], + default: 'medium', + }) + public sensitiveMediaDetectionSensitivity: 'medium' | 'low' | 'high' | 'veryLow' | 'veryHigh'; + + @Column('boolean', { + default: false, + }) + public setSensitiveFlagAutomatically: boolean; + + @Column('boolean', { + default: false, + }) + public enableSensitiveMediaDetectionForVideos: boolean; + @Column('integer', { default: 1024, comment: 'Drive capacity of a local user (MB)', diff --git a/packages/backend/src/models/entities/user-profile.ts b/packages/backend/src/models/entities/user-profile.ts index 7dfe13fe1..3654b0a99 100644 --- a/packages/backend/src/models/entities/user-profile.ts +++ b/packages/backend/src/models/entities/user-profile.ts @@ -152,6 +152,11 @@ export class UserProfile { }) public alwaysMarkNsfw: boolean; + @Column('boolean', { + default: false, + }) + public autoSensitive: boolean; + @Column('boolean', { default: false, }) diff --git a/packages/backend/src/models/repositories/user.ts b/packages/backend/src/models/repositories/user.ts index 645091395..5c46ae27a 100644 --- a/packages/backend/src/models/repositories/user.ts +++ b/packages/backend/src/models/repositories/user.ts @@ -360,6 +360,7 @@ export const UserRepository = db.getRepository(User).extend({ injectFeaturedNote: profile!.injectFeaturedNote, receiveAnnouncementEmail: profile!.receiveAnnouncementEmail, alwaysMarkNsfw: profile!.alwaysMarkNsfw, + autoSensitive: profile!.autoSensitive, carefulBot: profile!.carefulBot, autoAcceptFollowed: profile!.autoAcceptFollowed, noCrawle: profile!.noCrawle, diff --git a/packages/backend/src/models/schema/user.ts b/packages/backend/src/models/schema/user.ts index 253681695..1c8fe9785 100644 --- a/packages/backend/src/models/schema/user.ts +++ b/packages/backend/src/models/schema/user.ts @@ -161,19 +161,19 @@ export const packedUserDetailedNotMeOnlySchema = { type: 'array', nullable: false, optional: false, items: { - type: 'object', - nullable: false, optional: false, - properties: { - name: { - type: 'string', - nullable: false, optional: false, - }, - value: { - type: 'string', - nullable: false, optional: false, - }, + type: 'object', + nullable: false, optional: false, + properties: { + name: { + type: 'string', + nullable: false, optional: false, }, - maxLength: 4, + value: { + type: 'string', + nullable: false, optional: false, + }, + }, + maxLength: 4, }, }, followersCount: { @@ -292,6 +292,10 @@ export const packedMeDetailedOnlySchema = { type: 'boolean', nullable: true, optional: false, }, + autoSensitive: { + type: 'boolean', + nullable: true, optional: false, + }, carefulBot: { type: 'boolean', nullable: true, optional: false, diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts index 8b7162895..cb50e128a 100644 --- a/packages/backend/src/server/api/endpoints/admin/meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/meta.ts @@ -195,6 +195,22 @@ export const meta = { type: 'string', optional: true, nullable: true, }, + sensitiveMediaDetection: { + type: 'string', + optional: true, nullable: false, + }, + sensitiveMediaDetectionSensitivity: { + type: 'string', + optional: true, nullable: false, + }, + setSensitiveFlagAutomatically: { + type: 'boolean', + optional: true, nullable: false, + }, + enableSensitiveMediaDetectionForVideos: { + type: 'boolean', + optional: true, nullable: false, + }, proxyAccountId: { type: 'string', optional: true, nullable: true, @@ -370,6 +386,10 @@ export default define(meta, paramDef, async (ps, me) => { blockedHosts: instance.blockedHosts, hcaptchaSecretKey: instance.hcaptchaSecretKey, recaptchaSecretKey: instance.recaptchaSecretKey, + sensitiveMediaDetection: instance.sensitiveMediaDetection, + sensitiveMediaDetectionSensitivity: instance.sensitiveMediaDetectionSensitivity, + setSensitiveFlagAutomatically: instance.setSensitiveFlagAutomatically, + enableSensitiveMediaDetectionForVideos: instance.enableSensitiveMediaDetectionForVideos, proxyAccountId: instance.proxyAccountId, twitterConsumerKey: instance.twitterConsumerKey, twitterConsumerSecret: instance.twitterConsumerSecret, diff --git a/packages/backend/src/server/api/endpoints/admin/show-user.ts b/packages/backend/src/server/api/endpoints/admin/show-user.ts index f04a7a67c..0d866b311 100644 --- a/packages/backend/src/server/api/endpoints/admin/show-user.ts +++ b/packages/backend/src/server/api/endpoints/admin/show-user.ts @@ -58,6 +58,7 @@ export default define(meta, paramDef, async (ps, me) => { autoAcceptFollowed: profile.autoAcceptFollowed, noCrawle: profile.noCrawle, alwaysMarkNsfw: profile.alwaysMarkNsfw, + autoSensitive: profile.autoSensitive, carefulBot: profile.carefulBot, injectFeaturedNote: profile.injectFeaturedNote, receiveAnnouncementEmail: profile.receiveAnnouncementEmail, diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts index 4dc4726a2..cc32e73c5 100644 --- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts @@ -48,6 +48,10 @@ export const paramDef = { enableRecaptcha: { type: 'boolean' }, recaptchaSiteKey: { type: 'string', nullable: true }, recaptchaSecretKey: { type: 'string', nullable: true }, + sensitiveMediaDetection: { type: 'string', enum: ['none', 'all', 'local', 'remote'] }, + sensitiveMediaDetectionSensitivity: { type: 'string', enum: ['medium', 'low', 'high', 'veryLow', 'veryHigh'] }, + setSensitiveFlagAutomatically: { type: 'boolean' }, + enableSensitiveMediaDetectionForVideos: { type: 'boolean' }, proxyAccountId: { type: 'string', format: 'misskey:id', nullable: true }, maintainerName: { type: 'string', nullable: true }, maintainerEmail: { type: 'string', nullable: true }, @@ -213,6 +217,22 @@ export default define(meta, paramDef, async (ps, me) => { set.recaptchaSecretKey = ps.recaptchaSecretKey; } + if (ps.sensitiveMediaDetection !== undefined) { + set.sensitiveMediaDetection = ps.sensitiveMediaDetection; + } + + if (ps.sensitiveMediaDetectionSensitivity !== undefined) { + set.sensitiveMediaDetectionSensitivity = ps.sensitiveMediaDetectionSensitivity; + } + + if (ps.setSensitiveFlagAutomatically !== undefined) { + set.setSensitiveFlagAutomatically = ps.setSensitiveFlagAutomatically; + } + + if (ps.enableSensitiveMediaDetectionForVideos !== undefined) { + set.enableSensitiveMediaDetectionForVideos = ps.enableSensitiveMediaDetectionForVideos; + } + if (ps.proxyAccountId !== undefined) { set.proxyAccountId = ps.proxyAccountId; } diff --git a/packages/backend/src/server/api/endpoints/drive/files/create.ts b/packages/backend/src/server/api/endpoints/drive/files/create.ts index 3a76a5d98..ddcbd6288 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/create.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/create.ts @@ -2,6 +2,7 @@ import ms from 'ms'; import { addFile } from '@/services/drive/add-file.js'; import { DriveFiles } from '@/models/index.js'; import { DB_MAX_IMAGE_COMMENT_LENGTH } from '@/misc/hard-limits.js'; +import { IdentifiableError } from '@/misc/identifiable-error.js'; import { fetchMeta } from '@/misc/fetch-meta.js'; import define from '../../../define.js'; import { apiLogger } from '../../../logger.js'; @@ -35,6 +36,18 @@ export const meta = { code: 'INVALID_FILE_NAME', id: 'f449b209-0c60-4e51-84d5-29486263bfd4', }, + + inappropriate: { + message: 'Cannot upload the file because it has been determined that it possibly contains inappropriate content.', + code: 'INAPPROPRIATE', + id: 'bec5bd69-fba3-43c9-b4fb-2894b66ad5d2', + }, + + noFreeSpace: { + message: 'Cannot upload the file because you have no free space of drive.', + code: 'NO_FREE_SPACE', + id: 'd08dbc37-a6a9-463a-8c47-96c32ab5f064', + }, }, } as const; @@ -87,6 +100,10 @@ export default define(meta, paramDef, async (ps, user, _, file, cleanup, ip, hea if (e instanceof Error || typeof e === 'string') { apiLogger.error(e); } + if (e instanceof IdentifiableError) { + if (e.id === '282f77bf-5816-4f72-9264-aa14d8261a21') throw new ApiError(meta.errors.inappropriate); + if (e.id === 'c6244ed2-a39a-4e1c-bf93-f0fbd7764fa6') throw new ApiError(meta.errors.noFreeSpace); + } throw new ApiError(); } finally { cleanup!(); diff --git a/packages/backend/src/server/api/endpoints/drive/files/update.ts b/packages/backend/src/server/api/endpoints/drive/files/update.ts index e3debe0b4..fa2ec8519 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/update.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/update.ts @@ -1,8 +1,8 @@ import { publishDriveStream } from '@/services/stream.js'; -import define from '../../../define.js'; -import { ApiError } from '../../../error.js'; import { DriveFiles, DriveFolders, Users } from '@/models/index.js'; import { DB_MAX_IMAGE_COMMENT_LENGTH } from '@/misc/hard-limits.js'; +import define from '../../../define.js'; +import { ApiError } from '../../../error.js'; export const meta = { tags: ['drive'], diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index b2964e68c..122120f27 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -3,17 +3,17 @@ import * as mfm from 'mfm-js'; import { publishMainStream, publishUserEvent } from '@/services/stream.js'; import acceptAllFollowRequests from '@/services/following/requests/accept-all.js'; import { publishToFollowers } from '@/services/i/update.js'; -import define from '../../define.js'; import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm.js'; import { extractHashtags } from '@/misc/extract-hashtags.js'; import { updateUsertags } from '@/services/update-hashtag.js'; -import { ApiError } from '../../error.js'; import { Users, DriveFiles, UserProfiles, Pages } from '@/models/index.js'; import { User } from '@/models/entities/user.js'; import { UserProfile } from '@/models/entities/user-profile.js'; import { notificationTypes } from '@/types.js'; import { normalizeForSearch } from '@/misc/normalize-for-search.js'; import { langmap } from '@/misc/langmap.js'; +import { ApiError } from '../../error.js'; +import define from '../../define.js'; export const meta = { tags: ['account'], @@ -57,7 +57,7 @@ export const meta = { message: 'Invalid Regular Expression.', code: 'INVALID_REGEXP', id: '0d786918-10df-41cd-8f33-8dec7d9a89a5', - } + }, }, res: { @@ -77,7 +77,8 @@ export const paramDef = { lang: { type: 'string', enum: [null, ...Object.keys(langmap)], nullable: true }, avatarId: { type: 'string', format: 'misskey:id', nullable: true }, bannerId: { type: 'string', format: 'misskey:id', nullable: true }, - fields: { type: 'array', + fields: { + type: 'array', minItems: 0, maxItems: 16, items: { @@ -102,6 +103,7 @@ export const paramDef = { injectFeaturedNote: { type: 'boolean' }, receiveAnnouncementEmail: { type: 'boolean' }, alwaysMarkNsfw: { type: 'boolean' }, + autoSensitive: { type: 'boolean' }, ffVisibility: { type: 'string', enum: ['public', 'followers', 'private'] }, pinnedPageId: { type: 'array', items: { type: 'string', format: 'misskey:id', @@ -168,6 +170,7 @@ export default define(meta, paramDef, async (ps, _user, token) => { if (typeof ps.injectFeaturedNote === 'boolean') profileUpdates.injectFeaturedNote = ps.injectFeaturedNote; if (typeof ps.receiveAnnouncementEmail === 'boolean') profileUpdates.receiveAnnouncementEmail = ps.receiveAnnouncementEmail; if (typeof ps.alwaysMarkNsfw === 'boolean') profileUpdates.alwaysMarkNsfw = ps.alwaysMarkNsfw; + if (typeof ps.autoSensitive === 'boolean') profileUpdates.autoSensitive = ps.autoSensitive; if (ps.emailNotificationTypes !== undefined) profileUpdates.emailNotificationTypes = ps.emailNotificationTypes; if (ps.avatarId) { diff --git a/packages/backend/src/services/detect-sensitive.ts b/packages/backend/src/services/detect-sensitive.ts new file mode 100644 index 000000000..0fa263599 --- /dev/null +++ b/packages/backend/src/services/detect-sensitive.ts @@ -0,0 +1,28 @@ +import * as fs from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; +import * as nsfw from 'nsfwjs'; +import * as tf from '@tensorflow/tfjs-node'; + +const _filename = fileURLToPath(import.meta.url); +const _dirname = dirname(_filename); + +let model: nsfw.NSFWJS; + +export async function detectSensitive(path: string): Promise { + try { + if (model == null) model = await nsfw.load(`file://${_dirname}/../../nsfw-model/`, { size: 299 }); + + const buffer = await fs.promises.readFile(path); + const image = await tf.node.decodeImage(buffer, 3) as tf.Tensor3D; + try { + const predictions = await model.classify(image); + return predictions; + } finally { + image.dispose(); + } + } catch (err) { + console.error(err); + return null; + } +} diff --git a/packages/backend/src/services/drive/add-file.ts b/packages/backend/src/services/drive/add-file.ts index 0dfad11cf..709db88f2 100644 --- a/packages/backend/src/services/drive/add-file.ts +++ b/packages/backend/src/services/drive/add-file.ts @@ -16,6 +16,7 @@ import { driveChart, perUserDriveChart, instanceChart } from '@/services/chart/i import { genId } from '@/misc/gen-id.js'; import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error.js'; import { FILE_TYPE_BROWSERSAFE } from '@/const.js'; +import { IdentifiableError } from '@/misc/identifiable-error.js'; import { getS3 } from './s3.js'; import { InternalStorage } from './internal-storage.js'; import { IImage, convertSharpToJpeg, convertSharpToWebp, convertSharpToPng } from './image-processor.js'; @@ -349,9 +350,31 @@ export async function addFile({ requestIp = null, requestHeaders = null, }: AddFileArgs): Promise { - const info = await getFileInfo(path); + let skipNsfwCheck = false; + const instance = await fetchMeta(); + if (user == null) skipNsfwCheck = true; + if (instance.sensitiveMediaDetection === 'none') skipNsfwCheck = true; + if (user && instance.sensitiveMediaDetection === 'local' && Users.isRemoteUser(user)) skipNsfwCheck = true; + if (user && instance.sensitiveMediaDetection === 'remote' && Users.isLocalUser(user)) skipNsfwCheck = true; + + const info = await getFileInfo(path, { + skipSensitiveDetection: skipNsfwCheck, + sensitiveThreshold: // 感度が高いほどしきい値は低くすることになる + instance.sensitiveMediaDetectionSensitivity === 'veryHigh' ? 0.1 : + instance.sensitiveMediaDetectionSensitivity === 'high' ? 0.3 : + instance.sensitiveMediaDetectionSensitivity === 'low' ? 0.7 : + instance.sensitiveMediaDetectionSensitivity === 'veryLow' ? 0.9 : + 0.5, + sensitiveThresholdForPorn: 0.75, + enableSensitiveMediaDetectionForVideos: instance.enableSensitiveMediaDetectionForVideos, + }); logger.info(`${JSON.stringify(info)}`); + // 現状 false positive が多すぎて実用に耐えない + //if (info.porn && instance.disallowUploadWhenPredictedAsPorn) { + // throw new IdentifiableError('282f77bf-5816-4f72-9264-aa14d8261a21', 'Detected as porn.'); + //} + // detect name const detectedName = name || (info.type.ext ? `untitled.${info.type.ext}` : 'untitled'); @@ -387,7 +410,7 @@ export async function addFile({ // If usage limit exceeded if (usage + info.size > driveCapacity) { if (Users.isLocalUser(user)) { - throw new Error('no-free-space'); + throw new IdentifiableError('c6244ed2-a39a-4e1c-bf93-f0fbd7764fa6', 'No free space.'); } else { // (アバターまたはバナーを含まず)最も古いファイルを削除する deleteOldFile(await Users.findOneByOrFail({ id: user.id }) as IRemoteUser); @@ -441,6 +464,8 @@ export async function addFile({ file.isLink = isLink; file.requestIp = requestIp; file.requestHeaders = requestHeaders; + file.maybeSensitive = info.sensitive; + file.maybePorn = info.porn; file.isSensitive = user ? Users.isLocalUser(user) && profile!.alwaysMarkNsfw ? true : (sensitive !== null && sensitive !== undefined) @@ -448,6 +473,9 @@ export async function addFile({ : false : false; + if (info.sensitive && profile!.autoSensitive) file.isSensitive = true; + if (info.sensitive && instance.setSensitiveFlagAutomatically) file.isSensitive = true; + if (url !== null) { file.src = url; diff --git a/packages/backend/test/get-file-info.ts b/packages/backend/test/get-file-info.ts index 7ce98db50..6ceeb352a 100644 --- a/packages/backend/test/get-file-info.ts +++ b/packages/backend/test/get-file-info.ts @@ -10,9 +10,10 @@ const _dirname = dirname(_filename); describe('Get file info', () => { it('Empty file', async (async () => { const path = `${_dirname}/resources/emptyfile`; - const info = await getFileInfo(path) as any; + const info = await getFileInfo(path, { skipSensitiveDetection: true }) as any; delete info.warnings; delete info.blurhash; + delete info.sensitive; assert.deepStrictEqual(info, { size: 0, md5: 'd41d8cd98f00b204e9800998ecf8427e', @@ -28,9 +29,10 @@ describe('Get file info', () => { it('Generic JPEG', async (async () => { const path = `${_dirname}/resources/Lenna.jpg`; - const info = await getFileInfo(path) as any; + const info = await getFileInfo(path, { skipSensitiveDetection: true }) as any; delete info.warnings; delete info.blurhash; + delete info.sensitive; assert.deepStrictEqual(info, { size: 25360, md5: '091b3f259662aa31e2ffef4519951168', @@ -46,9 +48,10 @@ describe('Get file info', () => { it('Generic APNG', async (async () => { const path = `${_dirname}/resources/anime.png`; - const info = await getFileInfo(path) as any; + const info = await getFileInfo(path, { skipSensitiveDetection: true }) as any; delete info.warnings; delete info.blurhash; + delete info.sensitive; assert.deepStrictEqual(info, { size: 1868, md5: '08189c607bea3b952704676bb3c979e0', @@ -64,9 +67,10 @@ describe('Get file info', () => { it('Generic AGIF', async (async () => { const path = `${_dirname}/resources/anime.gif`; - const info = await getFileInfo(path) as any; + const info = await getFileInfo(path, { skipSensitiveDetection: true }) as any; delete info.warnings; delete info.blurhash; + delete info.sensitive; assert.deepStrictEqual(info, { size: 2248, md5: '32c47a11555675d9267aee1a86571e7e', @@ -82,9 +86,10 @@ describe('Get file info', () => { it('PNG with alpha', async (async () => { const path = `${_dirname}/resources/with-alpha.png`; - const info = await getFileInfo(path) as any; + const info = await getFileInfo(path, { skipSensitiveDetection: true }) as any; delete info.warnings; delete info.blurhash; + delete info.sensitive; assert.deepStrictEqual(info, { size: 3772, md5: 'f73535c3e1e27508885b69b10cf6e991', @@ -100,9 +105,10 @@ describe('Get file info', () => { it('Generic SVG', async (async () => { const path = `${_dirname}/resources/image.svg`; - const info = await getFileInfo(path) as any; + const info = await getFileInfo(path, { skipSensitiveDetection: true }) as any; delete info.warnings; delete info.blurhash; + delete info.sensitive; assert.deepStrictEqual(info, { size: 505, md5: 'b6f52b4b021e7b92cdd04509c7267965', @@ -119,9 +125,10 @@ describe('Get file info', () => { it('SVG with XML definition', async (async () => { // https://github.com/misskey-dev/misskey/issues/4413 const path = `${_dirname}/resources/with-xml-def.svg`; - const info = await getFileInfo(path) as any; + const info = await getFileInfo(path, { skipSensitiveDetection: true }) as any; delete info.warnings; delete info.blurhash; + delete info.sensitive; assert.deepStrictEqual(info, { size: 544, md5: '4b7a346cde9ccbeb267e812567e33397', @@ -137,9 +144,10 @@ describe('Get file info', () => { it('Dimension limit', async (async () => { const path = `${_dirname}/resources/25000x25000.png`; - const info = await getFileInfo(path) as any; + const info = await getFileInfo(path, { skipSensitiveDetection: true }) as any; delete info.warnings; delete info.blurhash; + delete info.sensitive; assert.deepStrictEqual(info, { size: 75933, md5: '268c5dde99e17cf8fe09f1ab3f97df56', @@ -155,9 +163,10 @@ describe('Get file info', () => { it('Rotate JPEG', async (async () => { const path = `${_dirname}/resources/rotate.jpg`; - const info = await getFileInfo(path) as any; + const info = await getFileInfo(path, { skipSensitiveDetection: true }) as any; delete info.warnings; delete info.blurhash; + delete info.sensitive; assert.deepStrictEqual(info, { size: 12624, md5: '68d5b2d8d1d1acbbce99203e3ec3857e', diff --git a/packages/backend/yarn.lock b/packages/backend/yarn.lock index 32f6a402d..4fdbc8335 100644 --- a/packages/backend/yarn.lock +++ b/packages/backend/yarn.lock @@ -166,6 +166,21 @@ methods "^1.1.2" path-to-regexp "^6.1.0" +"@mapbox/node-pre-gyp@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.4.tgz#6c76e7a40138eac39e1a4dc869a083e43e236c00" + integrity sha512-M669Qo4nRT7iDmQEjQYC7RU8Z6dpz9UmSbkJ1OFEja3uevCdLKh7IZZki7L1TZj02kRyl82snXFY8QqkyfowrQ== + dependencies: + detect-libc "^1.0.3" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.1" + nopt "^5.0.0" + npmlog "^4.1.2" + rimraf "^3.0.2" + semver "^7.3.4" + tar "^6.1.0" + "@node-redis/bloom@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e" @@ -233,6 +248,26 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@nsfw-filter/gif-frames@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@nsfw-filter/gif-frames/-/gif-frames-1.0.2.tgz#a00731e56a944c7cfc8e65f26f6f2a6945432ea6" + integrity sha512-XZrbJWEN8YfVla5i+PD4Wj51rRlJ8OgnXiPjjOt/OsrbsCR9GZRD4jr953oNWcwiRaoIcOCFWQNMQukO7Yb1dA== + dependencies: + "@nsfw-filter/save-pixels" "^2.3.4" + get-pixels-frame-info-update "3.3.2" + multi-integer-range "3.0.0" + +"@nsfw-filter/save-pixels@^2.3.4": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@nsfw-filter/save-pixels/-/save-pixels-2.3.4.tgz#671d8b741d47030d8b18390e56ad7e912447265d" + integrity sha512-dRZXwrXadMvxwJYKChrDBqC6GNvxVqlmdkyvZJO5DV65qyBsHZw8bPg9CnX7EgpxGl6+4ba/MAdHDLxs2XoD0Q== + dependencies: + gif-encoder "0.4.1" + ndarray "1.0.18" + ndarray-ops "1.2.2" + pngjs-nozlib "1.0.0" + through "2.3.4" + "@peertube/http-signature@1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@peertube/http-signature/-/http-signature-1.6.0.tgz#22bef028384e6437e8dbd94052ba7b8bd7f7f1ae" @@ -322,6 +357,89 @@ dependencies: defer-to-connect "^2.0.1" +"@tensorflow/tfjs-backend-cpu@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.18.0.tgz#f0596911c14adf3dfa428e7d04305ef37c6f65e1" + integrity sha512-LcSqlylzGtpgngcMFIL3q9Q3eVaPRJ7ITZt7ivhzkCj4R5ZsnPa9qM3DCVihkQ77heAwSw4hPTo2jp5C4mJ4Cg== + dependencies: + "@types/seedrandom" "2.4.27" + seedrandom "2.4.3" + +"@tensorflow/tfjs-backend-webgl@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-3.18.0.tgz#56d806a43b4695b1af4ee04c01d6381b1973c2c7" + integrity sha512-3NknSzS1oX2BEBOrpjPMZl823S12RgshQthmIbG6QADHb4bCJA8aM4UjWpw+3bNQnRKbRDQdFbuvj10Un79s2A== + dependencies: + "@tensorflow/tfjs-backend-cpu" "3.18.0" + "@types/offscreencanvas" "~2019.3.0" + "@types/seedrandom" "2.4.27" + "@types/webgl-ext" "0.0.30" + "@types/webgl2" "0.0.6" + seedrandom "2.4.3" + +"@tensorflow/tfjs-converter@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-converter/-/tfjs-converter-3.18.0.tgz#f4b6d8812d133aa0b6eaa06f75abbde1dbb3550f" + integrity sha512-hpChA+zVNQOVwRnCfqDb1WI9jbEAKA6DuEm4m75Zb3dIlE6VVooDmAaHBhlc++z2q2G1sBzF9A4Bv48SUpN6vA== + +"@tensorflow/tfjs-core@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-3.18.0.tgz#c9eb420d1ae2852109fae640ae8a38041b82f9ec" + integrity sha512-gMxisZozqsr5sCKlphF/eVBLg91MjlBiN60tjX8hJAu0WlSn6Gi5k65GNIL+Pq6hrxpvImcfdCmTH/2XJVZ0Mg== + dependencies: + "@types/long" "^4.0.1" + "@types/offscreencanvas" "~2019.3.0" + "@types/seedrandom" "2.4.27" + "@types/webgl-ext" "0.0.30" + "@webgpu/types" "^0.1.16" + long "4.0.0" + node-fetch "~2.6.1" + seedrandom "2.4.3" + +"@tensorflow/tfjs-data@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-data/-/tfjs-data-3.18.0.tgz#c6edf3bfa05fe581eeebb6a6c08cd4815d96bbf9" + integrity sha512-s43vISJh8K/UN2E2zGRhtj/Kyn8dr4ll8EQkapwzm7fGO9afXCnMsTp6rkZq3fFXouCYA2k1B/j7JssIDr50+w== + dependencies: + "@types/node-fetch" "^2.1.2" + node-fetch "~2.6.1" + +"@tensorflow/tfjs-layers@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-layers/-/tfjs-layers-3.18.0.tgz#8b7d32030e797456e49fd5c26d6f169e0c59b9ca" + integrity sha512-AV7yDnPlH+RCcq8VPqkX1iyEchObE+e66m0XmJvLj+ncfKHYLa+39ZNroUA+OgB2/cMG6jgq77R4EhZbT6hwJA== + +"@tensorflow/tfjs-node@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-node/-/tfjs-node-3.18.0.tgz#bc6de241ba178f951db1d60df59e464b737eff78" + integrity sha512-jW6bFKO6hH4tGvlijvpcIbCRRa6vDZ2xIIbEO7qZ17s0QOMPBGjDLyQGUaSQ00uog0Rid/sdZNpiueDqB0ZGbA== + dependencies: + "@mapbox/node-pre-gyp" "1.0.4" + "@tensorflow/tfjs" "3.18.0" + adm-zip "^0.5.2" + google-protobuf "^3.9.2" + https-proxy-agent "^2.2.1" + progress "^2.0.0" + rimraf "^2.6.2" + tar "^4.4.6" + +"@tensorflow/tfjs@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs/-/tfjs-3.18.0.tgz#be59951d1981c887d2b786100e43abc4c2332164" + integrity sha512-mOzz4jJdgIpqFS7EHndVuxrQnLUDVIKGyTqOPTYps89fZwcOFfTVxi4BHemDNQpqlVE8IaGh9UUxVXpjgPY5+Q== + dependencies: + "@tensorflow/tfjs-backend-cpu" "3.18.0" + "@tensorflow/tfjs-backend-webgl" "3.18.0" + "@tensorflow/tfjs-converter" "3.18.0" + "@tensorflow/tfjs-core" "3.18.0" + "@tensorflow/tfjs-data" "3.18.0" + "@tensorflow/tfjs-layers" "3.18.0" + argparse "^1.0.10" + chalk "^4.1.0" + core-js "3" + regenerator-runtime "^0.13.5" + yargs "^16.0.3" + "@tokenizer/token@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" @@ -652,6 +770,11 @@ dependencies: "@types/koa" "*" +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + "@types/mime@*": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" @@ -669,6 +792,14 @@ dependencies: node-fetch "*" +"@types/node-fetch@^2.1.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*": version "16.6.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.2.tgz#331b7b9f8621c638284787c5559423822fdffc50" @@ -698,6 +829,11 @@ dependencies: "@types/node" "*" +"@types/offscreencanvas@~2019.3.0": + version "2019.3.0" + resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz#3336428ec7e9180cf4566dfea5da04eb586a6553" + integrity sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q== + "@types/parse5@*": version "5.0.3" resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" @@ -775,6 +911,11 @@ dependencies: htmlparser2 "^6.0.0" +"@types/seedrandom@2.4.27": + version "2.4.27" + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.27.tgz#9db563937dd86915f69092bc43259d2f48578e41" + integrity sha512-YvMLqFak/7rt//lPBtEHv3M4sRNA+HGxrhFZ+DQs9K2IkYJbNwVIb8avtJfhDiuaUBX/AW0jnjv48FV8h3u9bQ== + "@types/semver@7.3.10": version "7.3.10" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.10.tgz#5f19ee40cbeff87d916eedc8c2bfe2305d957f73" @@ -834,6 +975,16 @@ dependencies: "@types/node" "*" +"@types/webgl-ext@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/webgl-ext/-/webgl-ext-0.0.30.tgz#0ce498c16a41a23d15289e0b844d945b25f0fb9d" + integrity sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg== + +"@types/webgl2@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@types/webgl2/-/webgl2-0.0.6.tgz#1ea2db791362bd8521548d664dbd3c5311cdf4b6" + integrity sha512-50GQhDVTq/herLMiqSQkdtRu+d5q/cWHn4VvKJtrj4DJAjo1MNkWYa2MA41BaBO1q1HgsUjuQvEOk0QHvlnAaQ== + "@types/websocket@1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" @@ -933,6 +1084,11 @@ resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== +"@webgpu/types@^0.1.16": + version "0.1.20" + resolved "https://registry.yarnpkg.com/@webgpu/types/-/types-0.1.20.tgz#9263846b99052a35b9ad8b15adc60b9394d306b0" + integrity sha512-MFb5oyxX+A7PWQNjcY3kSCSG2FAHaBo7IJBWtxWFgsS20FtY3D9UY7lYqLZ6avS8fSkdSylIS4qiHzFlQUdXag== + abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -996,6 +1152,11 @@ acorn@^8.7.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== +adm-zip@^0.5.2: + version "0.5.9" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.5.9.tgz#b33691028333821c0cf95c31374c5462f2905a83" + integrity sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg== + agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -1003,6 +1164,13 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" +agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + agentkeepalive@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" @@ -1045,6 +1213,16 @@ ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -1175,6 +1353,13 @@ arg@^4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== +argparse@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -1274,6 +1459,16 @@ aws-sdk@2.1165.0: uuid "8.0.0" xml2js "0.4.19" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + axios@^0.24.0: version "0.24.0" resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" @@ -1595,6 +1790,11 @@ canonicalize@^1.0.1: resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.1.tgz#657b4f3fa38a6ecb97a9e5b7b26d7a19cc6e0da9" integrity sha512-N3cmB3QLhS5TJ5smKFf1w42rJXWe6C1qP01z4dxJiI5v269buii4fLHWETDyf7yEd0azGLNC63VxNMiPd2u0Cg== +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + cbor@*: version "7.0.5" resolved "https://registry.yarnpkg.com/cbor/-/cbor-7.0.5.tgz#ed54cdbc19fa7352bb328d00a5393aa7ce45a10f" @@ -1696,7 +1896,7 @@ cheerio@0.22.0: lodash.reject "^4.4.0" lodash.some "^4.4.0" -chokidar@3.5.3, chokidar@^3.3.1, chokidar@^3.5.3: +chokidar@3.3.1, chokidar@3.5.3, chokidar@^3.3.1, chokidar@^3.5.3: version "3.3.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== @@ -1711,7 +1911,7 @@ chokidar@3.5.3, chokidar@^3.3.1, chokidar@^3.5.3: optionalDependencies: fsevents "~2.1.2" -chownr@^1.1.1: +chownr@^1.1.1, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -1848,7 +2048,7 @@ colorette@^1.2.0: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -1959,6 +2159,11 @@ copy-to@^2.0.1: resolved "https://registry.yarnpkg.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" integrity sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU= +core-js@3: + version "3.23.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.3.tgz#3b977612b15da6da0c9cc4aec487e8d24f371112" + integrity sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2040,6 +2245,13 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +cwise-compiler@^1.0.0, cwise-compiler@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cwise-compiler/-/cwise-compiler-1.1.3.tgz#f4d667410e850d3a313a7d2db7b1e505bb034cc5" + integrity sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ== + dependencies: + uniq "^1.0.0" + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -2055,6 +2267,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-0.0.3.tgz#18ae979a6a0ca994b0625853916d2662bbae0b1a" + integrity sha512-Cp+jOa8QJef5nXS5hU7M1DWzXPEIoVR3kbV0dQuVGwROZg8bGf1DcCnkmajBTnvghTtSNMUdRrPjgaT6ZQucbw== + data-uri-to-buffer@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" @@ -2558,6 +2775,18 @@ es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" @@ -2814,6 +3043,11 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -2978,11 +3212,25 @@ follow-redirects@^1.14.4: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + form-data-encoder@1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -2992,6 +3240,15 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + formdata-polyfill@^4.0.10: version "4.0.10" resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" @@ -3018,6 +3275,13 @@ fs-extra@^8.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -3110,6 +3374,23 @@ get-paths@0.0.7: dependencies: pify "^4.0.1" +get-pixels-frame-info-update@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/get-pixels-frame-info-update/-/get-pixels-frame-info-update-3.3.2.tgz#8b549efcb570454094e5a9dc51d61cb9a62cdb4f" + integrity sha512-LzVij57X/gK4Y6LpcDdqj+R9WCpD6Sv3ZH85GMA+S3xgPGCz81mHql4GiSnF4GijRjk7TE0ja2sDr8FFYKLe2g== + dependencies: + data-uri-to-buffer "0.0.3" + jpeg-js "^0.3.2" + mime-types "^2.0.1" + ndarray "^1.0.13" + ndarray-pack "^1.1.1" + node-bitmap "0.0.1" + omggif "^1.0.5" + parse-data-uri "^0.2.0" + pngjs "^3.3.3" + request "^2.44.0" + through "^2.3.4" + get-port@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" @@ -3142,6 +3423,13 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +gif-encoder@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/gif-encoder/-/gif-encoder-0.4.1.tgz#0ec2192b35b91e50073258354b13d3e5165f106b" + integrity sha512-++rNGpDBgWQ9eXj9JfTBLHMUEd7lDOdzIvFyHQM9yL8ffxkcg4G6jWmsgu/r59Uq6nHc3wcVwtgy3geLnIWunQ== + dependencies: + readable-stream "~1.1.9" + github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" @@ -3227,6 +3515,11 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +google-protobuf@^3.9.2: + version "3.20.1" + resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.20.1.tgz#1b255c2b59bcda7c399df46c65206aa3c7a0ce8b" + integrity sha512-XMf1+O32FjYIV3CYu6Tuh5PNbfNEU5Xu22X+Xkdb/DUexFlCzhvv7d5Iirm4AOwn8lv4al1YvIhzGrg2j9Zfzw== + got@11.5.1: version "11.5.1" resolved "https://registry.yarnpkg.com/got/-/got-11.5.1.tgz#bf098a270fe80b3fb88ffd5a043a59ebb0a391db" @@ -3278,6 +3571,19 @@ graceful-fs@^4.2.6: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -3419,6 +3725,15 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + http2-wrapper@^1.0.0-beta.5.0: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" @@ -3442,6 +3757,14 @@ http_ece@1.1.0: dependencies: urlsafe-base64 "~1.0.0" +https-proxy-agent@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -3598,6 +3921,11 @@ ioredis@4.28.5, ioredis@^4.28.5: redis-parser "^3.0.0" standard-as-callback "^2.1.0" +iota-array@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087" + integrity sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA== + ip-address@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-7.1.0.tgz#4a9c699e75b51cbeb18b38de8ed216efa1a490c5" @@ -3656,7 +3984,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^1.1.5: +is-buffer@^1.0.2, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -3839,10 +4167,10 @@ is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typedarray@^1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" @@ -3876,6 +4204,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + jake@^10.8.5: version "10.8.5" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" @@ -3891,6 +4224,11 @@ jmespath@0.16.0: resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== +jpeg-js@^0.3.2: + version "0.3.7" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.7.tgz#471a89d06011640592d314158608690172b1028d" + integrity sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ== + jpeg-js@^0.4.1: version "0.4.4" resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.4.tgz#a9f1c6f1f9f0fa80cdb3484ed9635054d28936aa" @@ -3997,10 +4335,10 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@^5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5-loader@4.0.1: version "4.0.1" @@ -4437,6 +4775,11 @@ log-symbols@4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +long@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" @@ -4477,6 +4820,13 @@ mailcheck@^1.1.1: resolved "https://registry.yarnpkg.com/mailcheck/-/mailcheck-1.1.1.tgz#d87cf6ba0b64ba512199dbf93f1489f479591e34" integrity sha1-2Hz2ugtkulEhmdv5PxSJ9HlZHjQ= +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -4557,7 +4907,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@2.1.35: +mime-types@2.1.35, mime-types@^2.0.1, mime-types@~2.1.19: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -4649,6 +4999,14 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + minipass@^3.0.0, minipass@^3.1.1: version "3.1.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" @@ -4663,6 +5021,13 @@ minipass@^3.1.6: dependencies: yallist "^4.0.0" +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -4697,6 +5062,13 @@ mkdirp-classic@^0.5.3: dependencies: minimist "^1.2.5" +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -4784,6 +5156,11 @@ multer@1.4.4: type-is "^1.6.4" xtend "^4.0.0" +multi-integer-range@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multi-integer-range/-/multi-integer-range-3.0.0.tgz#d8ec2744d08758f2acf81653d2fe038a95cf7595" + integrity sha512-uQzynjVJ8F7x5wjaK0g4Ybhy2TvO/pk96+YHyS5g1W4GuUEV6HMebZ8HcRwWgKIRCUT2MLbM5uCKwYcAqkS+8Q== + mylas@^2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/mylas/-/mylas-2.1.9.tgz#8329626f95c0ce522ca7d3c192eca6221d172cdc" @@ -4828,6 +5205,37 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +ndarray-ops@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ndarray-ops/-/ndarray-ops-1.2.2.tgz#59e88d2c32a7eebcb1bc690fae141579557a614e" + integrity sha512-BppWAFRjMYF7N/r6Ie51q6D4fs0iiGmeXIACKY66fLpnwIui3Wc3CXiD/30mgLbDjPpSLrsqcp3Z62+IcHZsDw== + dependencies: + cwise-compiler "^1.0.0" + +ndarray-pack@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ndarray-pack/-/ndarray-pack-1.2.1.tgz#8caebeaaa24d5ecf70ff86020637977da8ee585a" + integrity sha512-51cECUJMT0rUZNQa09EoKsnFeDL4x2dHRT0VR5U2H5ZgEcm95ZDWcMA5JShroXjHOejmAD/fg8+H+OvUnVXz2g== + dependencies: + cwise-compiler "^1.1.2" + ndarray "^1.0.13" + +ndarray@1.0.18: + version "1.0.18" + resolved "https://registry.yarnpkg.com/ndarray/-/ndarray-1.0.18.tgz#b60d3a73224ec555d0faa79711e502448fd3f793" + integrity sha512-jUz6G+CIsEsqs2VlB1EvaQSAA0Jkf8YKm7eFBleKyhiQjYWzTxXqHzWEOm3jFoGCpxGh4DnPUYHB4ECWE+n9SQ== + dependencies: + iota-array "^1.0.0" + is-buffer "^1.0.2" + +ndarray@^1.0.13: + version "1.0.19" + resolved "https://registry.yarnpkg.com/ndarray/-/ndarray-1.0.19.tgz#6785b5f5dfa58b83e31ae5b2a058cfd1ab3f694e" + integrity sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ== + dependencies: + iota-array "^1.0.0" + is-buffer "^1.0.2" + needle@^2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/needle/-/needle-2.5.2.tgz#cf1a8fce382b5a280108bba90a14993c00e4010a" @@ -4874,6 +5282,11 @@ node-addon-api@^4.2.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== +node-bitmap@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/node-bitmap/-/node-bitmap-0.0.1.tgz#180eac7003e0c707618ef31368f62f84b2a69091" + integrity sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA== + node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" @@ -4897,7 +5310,7 @@ node-fetch@3.2.6, node-fetch@^3.2.2: fetch-blob "^3.1.4" formdata-polyfill "^4.0.10" -node-fetch@^2.6.1: +node-fetch@^2.6.1, node-fetch@~2.6.1: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -4984,7 +5397,7 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" -npmlog@^4.0.1: +npmlog@^4.0.1, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -5004,6 +5417,13 @@ npmlog@^6.0.0: gauge "^4.0.0" set-blocking "^2.0.0" +nsfwjs@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/nsfwjs/-/nsfwjs-2.4.1.tgz#406dff6e379f4fc1c5fd4d16b7a64e4ae4b355c1" + integrity sha512-8XPUPVeIIfkSeWjHEytDMedZNISR0SCjv67JYbS75SIYcmz8Y7GZqNfLupltjcwsqV0e4bwdc4l4bEOno58QdA== + dependencies: + "@nsfw-filter/gif-frames" "1.0.2" + nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -5021,6 +5441,11 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + oauth@0.9.15: version "0.9.15" resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1" @@ -5060,6 +5485,11 @@ object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +omggif@^1.0.5: + version "1.0.10" + resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + on-finished@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -5236,6 +5666,13 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-data-uri@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/parse-data-uri/-/parse-data-uri-0.2.0.tgz#bf04d851dd5c87b0ab238e5d01ace494b604b4c9" + integrity sha512-uOtts8NqDcaCt1rIsO3VFDRsAfgE4c6osG4d9z3l4dCBlxYFzni6Di/oNU270SDrjkfZuUvLZx1rxMyqh46Y9w== + dependencies: + data-uri-to-buffer "0.0.3" + parse-srcset@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1" @@ -5320,6 +5757,11 @@ peek-readable@^5.0.0-alpha.5: resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.0.0-alpha.5.tgz#ace5dfedf7bc33f17c9b5170b9d54f69a4fba79b" integrity sha512-pJohF/tDwV3ntnT5+EkUo4E700q/j/OCDuPxtM+5/kFGjyOai/sK4/We4Cy1MB2OiTQliWU5DxPvYIKQAdPqAA== +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + pg-connection-string@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" @@ -5403,7 +5845,12 @@ pluralize@^8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -pngjs@^3.3.1: +pngjs-nozlib@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pngjs-nozlib/-/pngjs-nozlib-1.0.0.tgz#9e64d602cfe9cce4d9d5997d0687429a73f0b7d7" + integrity sha512-N1PggqLp9xDqwAoKvGohmZ3m4/N9xpY0nDZivFqQLcpLHmliHnCp9BuNCsOeqHWMuEEgFjpEaq9dZq6RZyy0fA== + +pngjs@^3.3.1, pngjs@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== @@ -5511,6 +5958,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -5546,7 +5998,7 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.33: +psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== @@ -5701,6 +6153,11 @@ qs@^6.4.0, qs@^6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -5776,7 +6233,7 @@ re2@1.17.7: nan "^2.16.0" node-gyp "^9.0.0" -readable-stream@1.1.x: +readable-stream@1.1.x, readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= @@ -5879,6 +6336,11 @@ reflect-metadata@0.1.13, reflect-metadata@^0.1.13: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== +regenerator-runtime@^0.13.5: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" @@ -5891,6 +6353,32 @@ rename@1.0.4: dependencies: debug "^2.5.2" +request@^2.44.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-all@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/require-all/-/require-all-3.0.0.tgz#473d49704be310115ce124f77383b1ebd8671312" @@ -5968,7 +6456,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2: +rimraf@2, rimraf@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -6013,7 +6501,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1: +safe-buffer@5.2.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -6076,6 +6564,11 @@ seedrandom@2.4.2: resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.2.tgz#18d78c41287d13aff8eadb29e235938b248aa9ff" integrity sha1-GNeMQSh9E6/46tsp4jWTiySKqf8= +seedrandom@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" + integrity sha512-2CkZ9Wn2dS4mMUWQaXLsOAfGD+irMlLEeSP3cMxpGbgyOOzJGFa+MWCOMTOCMyZinHRPxyOj/S/C57li/1to6Q== + seedrandom@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" @@ -6093,6 +6586,11 @@ semver@^5.6.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + semver@^7.3.2, semver@^7.3.4: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" @@ -6269,6 +6767,11 @@ sprintf-js@1.1.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + sshpk@^1.14.1: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" @@ -6284,6 +6787,21 @@ sshpk@^1.14.1: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + ssri@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" @@ -6563,7 +7081,20 @@ tar-stream@^2.1.4, tar-stream@^2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar@^6.1.11, tar@^6.1.2: +tar@^4.4.6: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -6594,10 +7125,15 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -through@2: +through@2, through@^2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +through@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.4.tgz#495e40e8d8a8eaebc7c275ea88c2b8fc14c56455" + integrity sha512-DwbmSAcABsMazNkLOJJSLRC3gfh4cPxUxJCn9npmvbcI6undhgoJ2ShvEOgZrW8BH62Gyr9jKboGbfFcmY5VsQ== tinycolor2@1.4.2: version "1.4.2" @@ -6650,6 +7186,14 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tr46@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" @@ -6873,6 +7417,11 @@ undici@^5.2.0: resolved "https://registry.yarnpkg.com/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43" integrity sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw== +uniq@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -6960,6 +7509,11 @@ uuid@8.3.2, uuid@^8.3.0, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -7240,6 +7794,11 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^3.0.0, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yaml-ast-parser@0.0.43: version "0.0.43" resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" @@ -7273,7 +7832,7 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0, yargs@^16.0.0: +yargs@16.2.0, yargs@^16.0.0, yargs@^16.0.3: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== diff --git a/packages/client/src/pages/admin/security.vue b/packages/client/src/pages/admin/security.vue index 76fa9d21e..c4a4994bb 100644 --- a/packages/client/src/pages/admin/security.vue +++ b/packages/client/src/pages/admin/security.vue @@ -14,6 +14,49 @@ + + + + + + + + +
+ {{ i18n.ts._sensitiveMediaDetection.description }} + + + + + + + + + + + + + + + + + + + + + + + + + + {{ i18n.ts.save }} +
+
+ @@ -49,10 +92,11 @@ import { } from 'vue'; import XBotProtection from './bot-protection.vue'; import XHeader from './_header_.vue'; import FormFolder from '@/components/form/folder.vue'; +import FormRadios from '@/components/form/radios.vue'; import FormSwitch from '@/components/form/switch.vue'; import FormInfo from '@/components/ui/info.vue'; import FormSuspense from '@/components/form/suspense.vue'; -import FormSection from '@/components/form/section.vue'; +import FormRange from '@/components/form/range.vue'; import FormInput from '@/components/form/input.vue'; import FormButton from '@/components/ui/button.vue'; import * as os from '@/os'; @@ -63,6 +107,10 @@ import { definePageMetadata } from '@/scripts/page-metadata'; let summalyProxy: string = $ref(''); let enableHcaptcha: boolean = $ref(false); let enableRecaptcha: boolean = $ref(false); +let sensitiveMediaDetection: string = $ref('none'); +let sensitiveMediaDetectionSensitivity: number = $ref(0); +let setSensitiveFlagAutomatically: boolean = $ref(false); +let enableSensitiveMediaDetectionForVideos: boolean = $ref(false); let enableIpLogging: boolean = $ref(false); async function init() { @@ -70,12 +118,31 @@ async function init() { summalyProxy = meta.summalyProxy; enableHcaptcha = meta.enableHcaptcha; enableRecaptcha = meta.enableRecaptcha; + sensitiveMediaDetection = meta.sensitiveMediaDetection; + sensitiveMediaDetectionSensitivity = + meta.sensitiveMediaDetectionSensitivity === 'veryLow' ? 0 : + meta.sensitiveMediaDetectionSensitivity === 'low' ? 1 : + meta.sensitiveMediaDetectionSensitivity === 'medium' ? 2 : + meta.sensitiveMediaDetectionSensitivity === 'high' ? 3 : + meta.sensitiveMediaDetectionSensitivity === 'veryHigh' ? 4 : 0; + setSensitiveFlagAutomatically = meta.setSensitiveFlagAutomatically; + enableSensitiveMediaDetectionForVideos = meta.enableSensitiveMediaDetectionForVideos; enableIpLogging = meta.enableIpLogging; } function save() { os.apiWithDialog('admin/update-meta', { summalyProxy, + sensitiveMediaDetection, + sensitiveMediaDetectionSensitivity: + sensitiveMediaDetectionSensitivity === 0 ? 'veryLow' : + sensitiveMediaDetectionSensitivity === 1 ? 'low' : + sensitiveMediaDetectionSensitivity === 2 ? 'medium' : + sensitiveMediaDetectionSensitivity === 3 ? 'high' : + sensitiveMediaDetectionSensitivity === 4 ? 'veryHigh' : + 0, + setSensitiveFlagAutomatically, + enableSensitiveMediaDetectionForVideos, enableIpLogging, }).then(() => { fetchInstance(); diff --git a/packages/client/src/pages/settings/drive.vue b/packages/client/src/pages/settings/drive.vue index cec2dc4d5..c8c78f292 100644 --- a/packages/client/src/pages/settings/drive.vue +++ b/packages/client/src/pages/settings/drive.vue @@ -28,7 +28,17 @@ - {{ i18n.ts.keepOriginalUploading }} + + + + + + + + + + + @@ -47,11 +57,14 @@ import { defaultStore } from '@/store'; import MkChart from '@/components/chart.vue'; import { i18n } from '@/i18n'; import { definePageMetadata } from '@/scripts/page-metadata'; +import { $i } from '@/account'; const fetching = ref(true); const usage = ref(null); const capacity = ref(null); const uploadFolder = ref(null); +let alwaysMarkNsfw = $ref($i.alwaysMarkNsfw); +let autoSensitive = $ref($i.autoSensitive); const meterStyle = computed(() => { return { @@ -94,6 +107,13 @@ function chooseUploadFolder() { }); } +function saveProfile() { + os.api('i/update', { + alwaysMarkNsfw: !!alwaysMarkNsfw, + autoSensitive: !!autoSensitive, + }); +} + const headerActions = $computed(() => []); const headerTabs = $computed(() => []); diff --git a/packages/client/src/pages/settings/profile.vue b/packages/client/src/pages/settings/profile.vue index cbc732723..2a326fc2b 100644 --- a/packages/client/src/pages/settings/profile.vue +++ b/packages/client/src/pages/settings/profile.vue @@ -56,8 +56,6 @@ {{ i18n.ts.flagAsCat }} {{ i18n.ts.flagShowTimelineReplies }} {{ i18n.ts.flagAsBot }} - - {{ i18n.ts.alwaysMarkSensitive }} @@ -88,7 +86,6 @@ const profile = reactive({ isBot: $i.isBot, isCat: $i.isCat, showTimelineReplies: $i.showTimelineReplies, - alwaysMarkNsfw: $i.alwaysMarkNsfw, }); watch(() => profile, () => { @@ -126,7 +123,6 @@ function save() { isBot: !!profile.isBot, isCat: !!profile.isCat, showTimelineReplies: !!profile.showTimelineReplies, - alwaysMarkNsfw: !!profile.alwaysMarkNsfw, }); } diff --git a/packages/client/src/scripts/select-file.ts b/packages/client/src/scripts/select-file.ts index 461d613b4..17e31d96f 100644 --- a/packages/client/src/scripts/select-file.ts +++ b/packages/client/src/scripts/select-file.ts @@ -1,9 +1,9 @@ import { ref } from 'vue'; +import { DriveFile } from 'misskey-js/built/entities'; import * as os from '@/os'; import { stream } from '@/stream'; import { i18n } from '@/i18n'; import { defaultStore } from '@/store'; -import { DriveFile } from 'misskey-js/built/entities'; import { uploadFile } from '@/scripts/upload'; function select(src: any, label: string | null, multiple: boolean): Promise { @@ -20,10 +20,7 @@ function select(src: any, label: string | null, multiple: boolean): Promise { res(multiple ? driveFiles : driveFiles[0]); }).catch(err => { - os.alert({ - type: 'error', - text: err - }); + // アップロードのエラーは uploadFile 内でハンドリングされているためアラートダイアログを出したりはしてはいけない }); // 一応廃棄 @@ -47,7 +44,7 @@ function select(src: any, label: string | null, multiple: boolean): Promise { if (canceled) return; @@ -64,35 +61,35 @@ function select(src: any, label: string | null, multiple: boolean): Promise { if (xhr.status !== 200 || ev.target == null || ev.target.response == null) { - // TODO: 消すのではなくて再送できるようにしたい + // TODO: 消すのではなくて(ネットワーク的なエラーなら)再送できるようにしたい uploads.value = uploads.value.filter(x => x.id !== id); - alert({ - type: 'error', - title: 'Failed to upload', - text: `${JSON.stringify(ev.target?.response)}, ${JSON.stringify(xhr.response)}`, - }); + if (ev.target?.response) { + const res = JSON.parse(ev.target.response); + if (res.error?.id === 'bec5bd69-fba3-43c9-b4fb-2894b66ad5d2') { + alert({ + type: 'error', + title: i18n.ts.failedToUpload, + text: i18n.ts.cannotUploadBecauseInappropriate, + }); + } else if (res.error?.id === 'd08dbc37-a6a9-463a-8c47-96c32ab5f064') { + alert({ + type: 'error', + title: i18n.ts.failedToUpload, + text: i18n.ts.cannotUploadBecauseNoFreeSpace, + }); + } else { + alert({ + type: 'error', + title: i18n.ts.failedToUpload, + text: `${res.error?.message}\n${res.error?.code}\n${res.error?.id}`, + }); + } + } else { + alert({ + type: 'error', + title: 'Failed to upload', + text: `${JSON.stringify(ev.target?.response)}, ${JSON.stringify(xhr.response)}`, + }); + } reject(); return; diff --git a/packages/client/src/style.scss b/packages/client/src/style.scss index 6f569bba1..9b30e64a3 100644 --- a/packages/client/src/style.scss +++ b/packages/client/src/style.scss @@ -399,6 +399,16 @@ hr { } } +._beta { + margin-left: 0.7em; + font-size: 65%; + padding: 2px 3px; + color: var(--accent); + border: solid 1px var(--accent); + border-radius: 4px; + vertical-align: top; +} + ._table { > ._row { display: flex;