Commit Graph

407 Commits (72e20a88543a4764780803a66a87d3f4897bc944)

Author SHA1 Message Date
Andrew Lau 49b062e365
CodeCamp #139 [Feature] Support REFUGE dataset. (#2554)
## Motivation 
Add REFUGE datasets
Old PR: https://github.com/open-mmlab/mmsegmentation/pull/2420

---------

Co-authored-by: MengzhangLI <mcmong@pku.edu.cn>
2023-02-03 16:02:19 +08:00
谢昕辰 7ac0888d9f
Bump v1.0.0rc5 (#2549)
as title
2023-02-01 20:34:20 +08:00
zccjjj ce63ccf7ab
Rename typing.py to typing_utils.py (#2548)
## Motivation

Fix the bug in running ```collect_evn.py```. #2547 

## Modification

Rename typing.py to typing_utils.py
2023-02-01 19:11:38 +08:00
谢昕辰 124b87ce90
[Refactor] Refactor fileio (#2543)
## Motivation

Use the new fileio from mmengine
https://github.com/open-mmlab/mmengine/pull/533

## Modification

1. Use `mmengine.fileio` to repalce FileClient  in mmseg/datasets
2. Use `mmengine.fileio` to repalce FileClient in
mmseg/datasets/transforms
3. Use `mmengine.fileio` to repalce FileClient in mmseg/visualization

## BC-breaking (Optional)

we modify all the dataset configurations, so please use the latest config file.
2023-02-01 17:53:22 +08:00
Siddharth Ancha 698dee9525
Backward merge #2535 from `1.x` into `dev-1.x` (#2546)
## Motivation

This is essentially #2535 that I had intended to submit to the `dev-1.x`
branch but accidentally submitted it directly to the `1.x` branch
(apologies!). This also got approved possibly because the core devs also
didn't realize this.

The problem is that now `1.x` and `dev-1.x` are out of sync -- the
changes introduced by #2535 will never be reflected in `dev-1.x`.

## Modification

I'm proposing this "backward-merge" so that `1.x` and `dev-1.x` can be
in sync again. If you look at "files changed", they are exactly the
changes introduced by #2535.

Co-authored-by: MeowZheng <meowzheng@outlook.com>
2023-02-01 10:26:44 +08:00
谢昕辰 18ee41eb7a
Bump v1.0.0rc4 (#2529) 2023-01-30 17:53:07 +08:00
Siddharth Ancha d1c0a3efd4
[Fix] Unfinished label conversion from `-1` to `255` in 1.x (#2516)
## Motivation

This is motivated by a previously unfinished PR (#2332). In that PR, the
label -1 was changed to 255 in `BaseSegDataset`, which is correct.
However, it was changed at only one location. There is another location
in `mmseg/datasets/basesegdataset.py` where -1 was still being used that
was not converted to 255. I have now converted it to 255.

This is exactly same as a similar fix to the `master` branch via #2515 .

## Modification

I've simply converted the snipped

```python
if new_id != -1:
    new_palette.append(palette[old_id])
```
to 
```python
if new_id != 255:
    new_palette.append(palette[old_id])
```

## Checklist

- [x] Pre-commit or other linting tools are used to fix the potential
lint issues.
  - _I've fixed all linting/pre-commit errors._
- [x] The modification is covered by complete unit tests. If not, please
add more unit test to ensure the correctness.
  - _No unit tests need to be added or were affected.
- [x] If the modification has potential influence on downstream
projects, this PR should be tested with downstream projects, like MMDet
or MMDet3D.
  - _I don't think this change affects MMDet or MMDet3D._
- [x] The documentation has been modified accordingly, like docstring or
example tutorials.
- _This change fixes an existing bug and doesn't require modifying any
documentation/docstring._
2023-01-30 12:35:55 +08:00
Siddharth Ancha 74e8b89b17
[Fix] Switch order of `reduce_zero_label` and applying `label_map` in 1.x (#2517)
This is an almost exact duplicate of #2500 (that was made to the
`master` branch) now applied to the `1.x` branch.

---

## Motivation

I want to fix a bug through this PR. The bug occurs when two options --
`reduce_zero_label=True`, and custom classes are used.
`reduce_zero_label` remaps the GT seg labels by remapping the zero-class
to 255 which is ignored. Conceptually, this should occur *before* the
`label_map` is applied, which maps *already reduced labels*. However,
currently, the `label_map` is applied before the zero label is reduced.

## Modification

The modification is simple:
- I've just interchanged the order of the two operations by moving a few
lines from bottom to top.
- I've added a test that passes when the fix is introduced, and fails on
the original `master` branch.

## BC-breaking (Optional)

I do not anticipate this change braking any backward-compatibility.

## Checklist

- [x] Pre-commit or other linting tools are used to fix the potential
lint issues.
  - _I've fixed all linting/pre-commit errors._
- [x] The modification is covered by complete unit tests. If not, please
add more unit test to ensure the correctness.
  - _I've added a unit test._ 
- [x] If the modification has potential influence on downstream
projects, this PR should be tested with downstream projects, like MMDet
or MMDet3D.
  - _I don't think this change affects MMDet or MMDet3D._
- [x] The documentation has been modified accordingly, like docstring or
example tutorials.
- _This change fixes an existing bug and doesn't require modifying any
documentation/docstring._
2023-01-30 12:17:15 +08:00
谢昕辰 37af545f6b
[Fix] Fix inference api and support setting palette to SegLocalVisualizer (#2475)
as title

Co-authored-by: MengzhangLI <mcmong@pku.edu.cn>
2023-01-20 21:40:13 +08:00
Leeinsn 7fc8ca0312
CodeCamp #141 [Feature] Add BioMedical3DRandomFlip. (#2404)
## Motivation

Support for biomedical 3d images augmentation.

## Modification

Add BioMedical3DRandomFlip in mmseg/datasets/transforms/transforms.py.

Co-authored-by: MeowZheng <meowzheng@outlook.com>
2023-01-20 15:34:11 +08:00
Vladimir Loginov 6d8ba3b5a0
Update basesegdataset.py (#2492)
## Motivation

Makes docstring to be consistent with actual argument name.

## Modification

Minor fix

## BC-breaking (Optional)

No
2023-01-17 20:18:46 +08:00
Wencheng Wu 8dae9465a6
[Feature] Add `gt_edge_map` field. (#2466)
## Motivation

The motivation of this PR is to add `gt_edge_map` field to support
boundary loss.

## Modification

- GenerateEdge
Modify `gt_edge` field to `gt_edge_map`.

- PackSegInputs
Add `gt_edge_map` to data_sample.

- stack_batch
Pad `gt_edge_map` to max_shape.

## BC-breaking (Optional)

No

## Use cases (Optional)

Reference `GenerateEdge`.
2023-01-11 11:51:29 +08:00
谢昕辰 f90f7a56d4
[Fix] Fix incorrect `img_shape` value assignment in RandomCrop (#2469)
## Motivation

Fix incorrect `img_shape` value assignment.

## Modification

- mmseg/datasets/transforms/transforms.py
2023-01-10 18:03:43 +08:00
王永韬 2d67e51db3
CodeCamp #140 [New] [Feature] Add synapse dataset and data augmentation in dev-1.x. (#2432)
## Motivation

Add Synapse dataset in MMSegmentation.
Old PR: https://github.com/open-mmlab/mmsegmentation/pull/2372.
2023-01-06 16:14:54 +08:00
legendchilli 6af2b8eab9
[Feature] Add BioMedical3DPad (#2383)
## Motivation
Add the 3d pad transform for biomedical images, which follows the design
of the nnUNet.
2023-01-03 13:37:48 +08:00
Fivethousand 3ca690bad3
[Feature] Add BioMedicalRandomGamma (#2406)
Add the random gamma correction transform for biomedical images, which
follows the design of the nnUNet.
2023-01-02 21:29:03 +08:00
Haoyu Wang 26f3df7a45
[Feature] nnUNet-style Gaussian Noise and Blur (#2373)
## Motivation

implement nnUNet-style Gaussian Noise and Blur
2023-01-02 20:43:15 +08:00
Miao Zheng 6eb1a95a48
Bump 1.0.0rc3 (#2446)
## Motivation

To release 1.0.0rc3  

## Modification

1. Modify mmseg version 
2. Add change log
3. Modify README
4. Modify faq 
5. Revise docker file
2022-12-31 18:15:56 +08:00
Miao Zheng d88f393ffa
[Fix] Remove dependcy mmdet when do not use `MaskFormerHead` and `MMDET_Mask2FormerHead` (#2448)
## Motivation

Calling `mmseg.utils.register_all_modules` will import `MaskFormerHead`
and `Mask2FormerHead`, it will crash if mmdet is not installed as `None`
cannot be initialized.

## Modification

- Modify `MMDET_MaskFormerHead=BaseModule` and `MMDET_Mask2FormerHead =
BaseModule` when cannot import from mmdet
2022-12-31 01:02:58 +08:00
谢昕辰 da4125587e [Refactor] Support TTA (#2184)
* tta init

* use mmcv transform

* test city

* add multiscale

* fix merge

* add softmax to post process

* add ut

* add tta pipeline to other datasets

* remove softmax

* add encoder_decoder_tta ut

* add encoder_decoder_tta ut

* rename

* rename file

* rename config

* rm aug_test

* move flip to post process

* fix channel
2022-12-30 22:52:07 +08:00
Jin Ye 79e8578bfc [Feature] Add Biomedical 3D array random crop transform (#2378)
* [Feature] Add Biomedical 3D array random crop transform

* fix lint

* fix gen crop bbox

* fix gen crop bbox

* docstring

* typo

Co-authored-by: MeowZheng <meowzheng@outlook.com>
2022-12-30 22:52:07 +08:00
Miao Zheng 750bb4f180
Bump 1.0.0rc2 (#2384)
* Bump 1.0.0rc2

* typo
2022-12-06 16:32:52 +08:00
nulam 3bac6ef5a4
Fix typo in warning on binary classification (#2382) 2022-12-06 11:29:11 +08:00
Miao Zheng f3db8d779d
[Fix]Add input argument for datasets (#2379) 2022-12-05 22:27:04 +08:00
谢昕辰 163277bfe0
[Feature] Support Mask2former in MMSeg 1.x (#2255)
* init commits

* fix crop size

* add seg_data2instance_data method

* add ut and update requirement

* update configs and readme

* add model-indel

* update optional requirements

* fix results

* fix lint error

* update results

* update results

* remove mmdet from requirements/optional.txt

* use try import and update README

* add docstring to overwrtied method

* minor change

Co-authored-by: MengzhangLI <mcmong@pku.edu.cn>
2022-12-05 18:34:24 +08:00
MengzhangLI 933e4d3cb6
[Feature] Support MaskFormer(NeurIPS'2021) in MMSeg 1.x (#2215)
* [Feature] Support MaskFormer(NeurIPS'2021) in MMSeg 1.x

* add mmdet try except logic

* refactor config files

* add readme

* fix config

* update models & logs

* add MMDET installation and fix info

* fix comments

* fix

* fix config norm optimizer setting

* update models & logs & unittest

* add docstring of MaskFormerHead

* wait for mmdet 3.0.0rc4

* replace seg_mask with seg_logits & add docstring for batch_input_shape

* use mmdet3.0.0rc4

* fix readme and modify config comments

* add mmdet installation in pr_stage_test.yml

* update mmcv version in pr_stage_test.yml

* add mmdet in build_cpu of pr_stage_test.yml

* modify mmdet& mmcv installation in merge_stage_test.yml

* fix typo

* update test.yml

* update test.yml
2022-12-01 19:03:10 +08:00
谢昕辰 925faea5bf
[Fix] Fix the problem of post-processing not removing padding (#2367)
* add img_padding_size

* minor change

* add pad_shape to data_samples
2022-12-01 16:35:39 +08:00
Miao Zheng 0cdab7297e
Merge pull request #2339 from xiexinch/resize-shortest-edge
[Feature] Add ResizeShortestEdge transform
2022-12-01 16:06:23 +08:00
xiexinch 3b731edbd3 update copyright 2022-12-01 13:58:17 +08:00
xiexinch 5a62b0335f fix h,w order 2022-12-01 11:25:00 +08:00
MengzhangLI e98231ba5f [Enhance] Make scipy as a default dependency in runtime 1.x 2022-11-30 20:11:14 +08:00
xiexinch 721afaec31 add docstring 2022-11-24 16:22:07 +08:00
xiexinch 1910dffd6c minor change 2022-11-24 15:02:50 +08:00
xiexinch 68e3b25560 use mmcv.RandomChoiceResize as entry 2022-11-24 14:55:25 +08:00
xiexinch 721f4d01f3 add ut 2022-11-23 15:15:38 +08:00
MengzhangLI 8b61820751 add comment 2022-11-22 22:42:11 +08:00
xiexinch 056edc8e1a init 2022-11-22 19:51:38 +08:00
MengzhangLI 58e73c3fab [Fix] Fix KNet IterativeDecodeHead bug in dev-1.x branch 2022-11-22 12:46:24 +08:00
MengzhangLI cfab5b39c0 [Fix] Fix ignore class id from -1 to 255 in BaseSegDataset in 1.x 2022-11-22 00:52:36 +08:00
Miao Zheng c56a299571
Merge pull request #2290 from xiexinch/fix_gt_padding
[Enhancement] Support padding in testing
2022-11-19 18:24:59 +08:00
xiexinch 4e12bcd053 fix data sample is None 2022-11-19 18:08:19 +08:00
xiexinch f915df4b0c remove gt padding 2022-11-19 17:38:10 +08:00
MengzhangLI 2d4b113b5d [Fix] Fix typo of BaseSegDataset docstring 2022-11-18 17:20:03 +08:00
xiexinch 26e9729a84 fix swin load statedict 2022-11-15 16:55:49 +08:00
xiexinch d33af5215a fix ut 2022-11-10 18:42:18 +08:00
xiexinch d0b35cdacd fix get gt data 2022-11-10 14:28:20 +08:00
xiexinch 70daaaad59 support padding in test and fix remove gt padding at post_process 2022-11-10 14:21:05 +08:00
MeowZheng 85455100d5 Bump 1.0.0rc1 2022-11-02 16:48:28 +08:00
谢昕辰 2eaf7ee8b3 [Doc] Update inference doc (#2052)
* refactor inference doc

* introduce segdatasample

* add vis example

* fix

* Update docs/en/user_guides/3_inference.md

* update link

Co-authored-by: Miao Zheng <76149310+MeowZheng@users.noreply.github.com>
2022-11-01 21:37:29 +08:00
Miao Zheng b21df463d4
[Feature] LIP dataset (#2187)
* [WIP] LIP dataset

* wip

* keep473

* lip dataset prepare

* add ut and test data
2022-10-31 20:47:52 +08:00
MengzhangLI a1f011dc0b
[Doc] Add Data Structures and Elements (#2070)
* [WIP][Doc] Add Data Structures and Elements

* fix

* add

* fix

* add chinses doc

* refactor

* fix

* fix typo

* fix

* fix

* fix typo

* Update docs/en/advanced_guides/structures.md

* Update docs/en/advanced_guides/structures.md

Co-authored-by: Miao Zheng <76149310+MeowZheng@users.noreply.github.com>
2022-10-28 22:22:44 +08:00
Miao Zheng 3d8fd35e26
[Feature]Add Decathlon dataset (#2227)
* [Feature]Add Decathlon dataset

* fix test data

* add file

* remove order

* revise default value for prefix

* modify example

* revise based on  comments

* add comments for ut
2022-10-26 20:10:42 +08:00
Miao Zheng ac9ee8c355
[Feature]Generate Edge for dataset (#2210)
* [WIP]Generate Edge for dataset

* add ut

* add repr

* add inti
2022-10-20 16:45:31 +08:00
Miao Zheng 20c7dc689c
[Feature] Add BioMedical data loading (#2176)
* [WIP] Add BioMedical data loading

* add depends nibabel

* fix bug

* fix ut

* fix

* add test data

* xyz2zyx zyx2xyz

* format

* remove ignore empty

* remove ignore empty

* remove with seg in LoadBiomedicalAnnotation

* float32

* docstring

* toxyz

* docstring
2022-10-18 16:30:08 +08:00
MengzhangLI f3cd44bebf
[Fix] Fix ResizeToMultiple transform in MMSeg 1.x (#2185) 2022-10-14 15:37:35 +08:00
谢昕辰 84e76492b9
mmengine requirement (#2186) 2022-10-13 20:43:44 +08:00
谢昕辰 8b392946bb
[Doc] Add evaluation doc (#2077)
* introduction

* add evaluator doc and fix typo

* fix ut

* add test dataflow

* add runner reference

* add dataloader config

* fix typo

* minor change
2022-10-13 14:55:04 +08:00
Miao Zheng b732fae265
Upgrade pre commit hooks (#2154)
* Upgrade pre commit hooks

* fix lint
2022-10-08 12:04:24 +08:00
Miao Zheng f87c05308b
[Fix] Fix MMSegmentation colab demo (#2089)
* [WIP] Fix MMSegmentation colab demo

* wip

* fix

* revise config

* seg branch

* colab link

* engine install

* demo image

* remove inference

* fix inference pipeline

* typo
2022-09-30 14:15:39 +08:00
谢昕辰 b3b7629d38
[Fix] Fix binary segmentation (#2101)
* add out_channels

* fix forward

* add decode_head ut

* add segmentor ut

* refine postprocess

* fix
2022-09-27 16:49:38 +08:00
Miao Zheng 2a183283f5
[Enhancement]Add `out_file` in add_datasample to directly save image (#2090)
* [Enhancement]Add `out_file` in add_datasample to for save vis image directly

* comments

* ut
2022-09-20 15:23:13 +08:00
谢昕辰 230246f557
[Refactor] Add pyupgrade pre-commit hook (#2078)
* add pyupgrade hook

* run pyupgrade precommit hook
2022-09-19 14:06:29 +08:00
MengzhangLI bff8a98d81
[Doc] Update Data Preparation and Visualization doc (#2054)
* [Doc] Update Data Preparation and Visualization doc

* upload visualization figure example

* fix

* fix

* delete demo image

* remove segvisualizer

* fix

* fix

* fix
2022-09-14 22:27:12 +08:00
Miao Zheng fffb9e2588
[Del] Remove ops (#2063) 2022-09-13 15:47:42 +08:00
Miao Zheng 211584ffa2
[Fix] Revise MMEngine mim version (#2008) 2022-08-31 22:09:48 +08:00
Miao Zheng 8ba80176a5
[Enhancement] version check codebase from openmmlab (#2006) 2022-08-31 18:46:43 +08:00
Miao Zheng 2724d47f71
[Fix] Add out-file in demo and show_result_pyplot (#2004) 2022-08-31 17:44:41 +08:00
MengzhangLI ee7f340dff
[Feature] Support Tversky Loss in dev-1.x branch (#2000) 2022-08-31 10:58:21 +08:00
Miao Zheng ef2152fd54
[Fix] Fix inputs dtype convert in data preprocessor (#1975) 2022-08-26 17:25:48 +08:00
Miao Zheng 8de0050f25
[Refactor] data flow (#1956)
* [WIP] Refactor data flow

* model return

* [WIP] Refactor data flow

* support data_samples is optional

* fix benchmark

* fix base

* minors

* rebase

* fix api

* ut

* fix api inference

* comments

* docstring

* docstring

* docstring

* fix bug of slide inference

* add assert c > 1
2022-08-26 15:54:23 +08:00
Miao Zheng 50546da85c
[Fix]Remove modules from mmcv.runner and mmcv.utils (#1966)
* [WIP] mmcv-clean

* [WIP]Remove modules from mmcv.runner and mmcv.utils

* wip

* fix import mmengine

* remove ut

* loadcheckpoint in mae
2022-08-25 15:15:21 +08:00
谢昕辰 3d98c25052 fix base dataset (#1926) 2022-08-19 20:50:03 +08:00
Miao Zheng e0499d5a77 [Fix] Fix repo based on refactoring standard (#1869)
* [Fix] Fix repo based on refactory standard

* fix ut
2022-08-19 20:50:02 +08:00
谢昕辰 bfe0fbe04d support load v1/v2 ckpt (#1868) 2022-08-19 20:50:02 +08:00
谢昕辰 167f94a70b rename data to structures (#1854) 2022-08-19 20:50:02 +08:00
MengzhangLI ecab73a892 [Feature] Add P1 DataTransform (#1843)
* [Feature] Add P1 DataTransform

* fix unit test error

* fix @cache_randomness location
2022-08-19 20:50:01 +08:00
Miao Zheng 76c5ce1396
[Fix] Fix after iter `SegVisualizationHook` (#1908)
* [Fix] Fix after iter `SegVisualizationHook`

* ut
2022-08-10 21:02:09 +08:00
Miao Zheng d265778b6f
[Fix] Import Sequential from mmengine (#1899) 2022-08-09 21:41:03 +08:00
MengzhangLI e4b9d72a11
[Fix] 2.0 Fix mDice metric for medical datasets (#1864) 2022-08-04 18:32:52 +08:00
Miao Zheng e2f26e3fde
[Fix] Import BaseModule from mmengien (#1862) 2022-08-04 09:35:05 +08:00
MengzhangLI 7369d50049
[Fix] Fix SegLocalVisualizer gt_sem_seg cuda tensor error (#1845)
* [Fix] Fix SegLocalVisualizer gt_sem_seg cuda tensor error

* fix ut error and add config visualizer dict

* fix ut error
2022-08-01 15:03:01 +08:00
谢昕辰 5d9650838e
[Fix] Fix demo scripts (#1815)
* [Feature] Add SegVisualizer

* change name to visualizer_example

* fix inference api

* fix video demo and refine inference api

* fix

* mmseg compose

* set default device to cuda:0

* fix import

* update dir

* rm engine/visualizer ut

* refine inference api and docs

* rename

Co-authored-by: MengzhangLI <mcmong@pku.edu.cn>
2022-07-29 18:37:20 +08:00
MengzhangLI 6873f9ece8
[Feature] Add SegVisualizer (#1792)
* [Feature] Add SegVisualizer

* change name to visualizer_example

* fix typo

* refactor folder structure
2022-07-27 16:28:09 +08:00
MengzhangLI 4079d6dfed
[Fix] Use MMEngine BaseModule (#1829)
* [Fix] Use MMEngine BaseModule

* delete auto_fp16
2022-07-27 15:35:12 +08:00
MengzhangLI 3cf2bbda2a
[Fix] Change CustomDataset to BaseSegDataset (#1791) 2022-07-26 12:01:40 +08:00
谢昕辰 ba4d1d62aa
[Feature] Add LoadImageFromNdArray pipeline (#1810)
* add load image from ndarray pipeline

* fix import
2022-07-22 19:40:00 +08:00
Miao Zheng 4de57b49c5
[Fix] Fix register_all_modules and imports (#1793)
* [Fix] Fix register_all_modules and imports

* fix transforms import
2022-07-21 22:44:42 +08:00
谢昕辰 b61347e246
update mmcv version (#1801) 2022-07-21 10:31:44 +08:00
zhengmiao 4b76f277a6 [Refactory] MMSegmentation Content 2022-07-15 15:47:29 +00:00
zhengmiao e324e8f3d4 Merge branch 'xiexinchen/rename_apis' into 'refactor_dev'
[Refactor] Rename APIs

See merge request openmmlab-enterprise/openmmlab-ce/mmsegmentation!63
2022-07-14 01:53:01 +00:00
zhengmiao ed4bb5b211 Merge branch 'xiexinchen/fix_stdcnet' into 'refactor_dev'
[Refactor] Fix STDCNet custom loss

See merge request openmmlab-enterprise/openmmlab-ce/mmsegmentation!61
2022-07-12 10:20:42 +00:00
xiexinchen.vendor 1b3a4876a1 [Refactor] Fix STDCNet custom loss 2022-07-12 10:20:41 +00:00
xiexinch c1c870af31 rename init/inference_segmentor to init/inference_model 2022-07-12 16:19:59 +08:00
xiexinchen.vendor d74dc89214 [Refactor] Fix load annotations by file 2022-07-11 11:31:38 +00:00
xiexinchen.vendor 3e8594d2dc [Refactor] Move tensor2list operation to EncoderDecoder 2022-07-08 10:34:03 +00:00
xiexinch 55b0c3aef5 fix cgnet configs and encnet forward error 2022-07-07 14:18:17 +08:00
xiexinch 761e1a9983 minor change 2022-07-05 20:43:33 +08:00
zhengmiao 89d6f89dfc Merge branch 'linfangjian/refactor_citysmetric' into 'refactor_dev'
[Refactor] Refactor cityscapes metrics

See merge request openmmlab-enterprise/openmmlab-ce/mmsegmentation!46
2022-06-28 03:21:33 +00:00
linfangjian.vendor 6053345b3d [Refactor] Refactor cityscapes metrics 2022-06-28 03:21:33 +00:00
limengzhang.vendor f2bac79f03 [Refactor] Refactor DatasetWrapper 2022-06-27 14:36:18 +00:00