cloud
python3
module
docker
support:community
bug
has_pr
affects_2.9

docker_network with multiple subnets always changes

<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->
When using `docker_network` to create a network with multiple subnets, the task will delete/create the network even if it already exists with the correct subnets. Ansible fails to judge if the existing subnets are correct, probably because of the way the arrays of subnets are compared in python.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
docker_network

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.2
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/gunix/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.0 (default, Oct 23 2019, 18:51:26) [GCC 9.2.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
ANSIBLE_PIPELINING(/etc/ansible/ansible.cfg) = True
DEFAULT_LOG_PATH(/etc/ansible/ansible.cfg) = /var/log/ansible/ansible.log
HOST_KEY_CHECKING(/etc/ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/etc/ansible/ansible.cfg) = /usr/bin/python3
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Both systems are running ArchLinux.

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
- name: "deploy network namespace that can hold all IPs"
  docker_network:
    name: "macvlan1"
    driver: "macvlan"
    internal: false
    driver_options:
      parent: "{{ ansible_default_ipv4.alias }}"
    ipam_config: "{{ macvlan_subnets }}"
```
also vars:
```
macvlan_subnets:
- gateway: 10.162.208.1
  subnet: 10.162.208.0/24
- gateway: 10.162.223.1
  subnet: 10.162.223.0/24
- gateway: 10.162.210.1
  subnet: 10.162.210.0/24
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
I was expecting to run the play 10 times and get Changed only on the first run and OK on the other 9 runs.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
The docker network ALWAYS changes, even if the subnets are correct on the server, causing all docker containers on the network to disconnect. This will cause downtime for all the services that run on the node.

<!--- Paste verbatim command output between quotes -->
```paste below
TASK [gen4 : deploy network namespace that can hold all IPs] ****************************************************************
--- before
+++ after
@@ -1,19 +1,19 @@
 {
-    "connected.10.162.208.129": false,
-    "connected.10.162.210.161": false,
-    "connected.10.162.210.169": false,
-    "connected.10.162.210.170": false,
-    "connected.10.162.210.171": false,
-    "connected.10.162.210.172": false,
-    "connected.10.162.210.173": false,
-    "connected.10.162.223.72": false,
-    "connected.10.162.223.73": false,
-    "connected.10.162.223.74": false,
-    "connected.10.162.223.75": false,
-    "connected.10.162.223.76": false,
+    "connected.10.162.208.129": true,
+    "connected.10.162.210.161": true,
+    "connected.10.162.210.169": true,
+    "connected.10.162.210.170": true,
+    "connected.10.162.210.171": true,
+    "connected.10.162.210.172": true,
+    "connected.10.162.210.173": true,
+    "connected.10.162.223.72": true,
+    "connected.10.162.223.73": true,
+    "connected.10.162.223.74": true,
+    "connected.10.162.223.75": true,
+    "connected.10.162.223.76": true,
     "exists": true,
-    "ipam_config[0].gateway": "10.162.210.1",
-    "ipam_config[0].subnet": "10.162.210.0/24",
-    "ipam_config[1].gateway": "10.162.210.1",
-    "ipam_config[1].subnet": "10.162.210.0/24"
+    "ipam_config[0].gateway": "10.162.208.1",
+    "ipam_config[0].subnet": "10.162.208.0/24",
+    "ipam_config[1].gateway": "10.162.223.1",
+    "ipam_config[1].subnet": "10.162.223.0/24"
 }

changed: [server1337.gun1x]
```

{'base_commit': 'ff5253fa0efacf5192b6d0f8b41b27a3033d7897', 'files': [{'path': 'lib/ansible/modules/cloud/docker/docker_network.py', 'status': 'modified', 'Loc': {'(None, None, None)': {'add': [367]}, "('DockerNetworkManager', '__init__', 370)": {'add': [390]}, "('DockerNetworkManager', 'has_different_config', 408)": {'add': [451], 'mod': [454, 455, 456, 457, 458, 459, 460, 467, 468, 469, 470, 471, 472, 475]}, "(None, 'get_ip_version', 338)": {'mod': [338, 339]}, "(None, 'normalize_ipam_config_key', 354)": {'mod': [355]}}}, {'path': 'test/integration/targets/docker_network/tasks/tests/ipam.yml', 'status': 'modified', 'Loc': {'(None, None, None)': {'mod': [14, 101, 172, 233, 282]}}}, {'path': 'test/units/modules/cloud/docker/test_docker_network.py', 'status': 'modified', 'Loc': {'(None, None, None)': {'mod': [8]}, "(None, 'test_get_ip_version_positives', 18)": {'mod': [18, 19]}, "(None, 'test_get_ip_version_negatives', 28)": {'mod': [28, 30]}}}]}


support:core
docs
docsite
affects_2.12
docs_only
hackathon

Docs: Use code-block elements to format code examples: Community Guide

### Summary

**Problem**:
Throughout the Ansible docs, there are instances where example code is preceded with a lead-in sentence ending in `::`.

**Solution:**
Enclose code in a `.. code-block:: <lexer>` element, so that translation processes know to skip this content.
For a list of allowed values for _`<lexer>`_ , refer to [Syntax highlighting - Pygments](https://docs.ansible.com/ansible/latest/dev_guide/style_guide/index.html#syntax-highlighting-pygments).

**Scope:**
In the Community Guide, there is 1 instance of a lead-in sentence ending with `::`. Use the following `grep` command to identify the files and line numbers:
```
$ grep -rn --include "*.rst" "^[[:blank:]]*[^[:blank:]\.\.].*::$" . `
```

**Example:**

Before:
```
* If the file has a unique title, use that for the main page anchor::

   .. _unique_page::

```

After:
```
*  If the file has a unique title, use that for the main page anchor.

  .. code-block:: rst

    .. _unique_page::

```

### Issue Type

Documentation Report

### Component Name

docs/docsite/rst/dev_guide

### Ansible Version

```console
n/a
```

### Configuration

```console
n/a
```

### OS / Environment

n/a

### Additional Information

When example code is enclosed within a `code-block` element, translation programs do not attempt to translate the code.

### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct

{'base_commit': '9de4f24d7ac3a205cdc723402f78d03a1fc961f8', 'files': [{'path': 'docs/docsite/rst/community/communication.rst', 'status': 'modified', 'Loc': {'(None, None, None)': {'mod': [74]}}}, {'path': 'docs/docsite/rst/community/development_process.rst', 'status': 'modified', 'Loc': {'(None, None, None)': {'mod': [316, 323, 331]}}}]}


Windows FAQ should mention possible SSL protocol issue

<!--- Verify first that your improvement is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below, add suggestions to wording or structure -->
TLS 1.0 is by default the maximum TLS supported version on Windows 7. However, Linux distributions (at least Debian) begin to disable it to allow TLS 1.2 as a minimum. Thus by default connection fails with this message:

`ntlm: HTTPSConnectionPool(host='my-host', port=5986): Max retries exceeded with url: /wsman (Caused by SSLError(SSLError(1, '[SSL: UNSUPPORTED_PROTOCOL] unsupported protocol (_ssl.c:1056)')))
`
Could you explain this issue on https://docs.ansible.com/ansible/latest/user_guide/windows_faq.html and add the possible workarounds (enable TLS 1.2 on Windows 7 target / temporary re-enable TLS 1.0 on controller) that are well described on the original discussion on https://groups.google.com/forum/#!msg/ansible-project/CCjQTWSAt4I/mHsdpJGUAwAJ ?

<!--- HINT: Did you know the documentation has an "Edit on GitHub" link on every page ? -->

##### ISSUE TYPE
- Documentation Report

##### COMPONENT NAME
<!--- Write the short name of the rst file, module, plugin, task or feature below, use your best guess if unsure -->
windows_faq.rst

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below

```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below

```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. OS version, browser, etc. -->
Debian testing with openssl 1.1.1a-1.

##### ADDITIONAL INFORMATION
<!--- Describe how this improves the documentation, e.g. before/after situation or screenshots -->

Windows 7 is probably still a common target, and Debian Buster (next stable probably available in the summer) will probably be a common controller, so this issue should be briefly explained in the documentation.

Regards,
Yvan

<!--- HINT: You can paste gist.github.com links for larger files -->


easyfix
support:core
has_pr
docs
affects_2.13

scp_if_ssh not working as intended with OpenSSH since version 9.0

### Summary

The option `scp_if_ssh = true` is used to force Ansible to use scp instead of sftp on targets, that don't support sftp. However since OpenSSH 9.0 (8.8 on Arch Linux it seems) even the scp utility defaults to using sftp. The old behavior can be enabled by additionally setting `scp_extra_args = "-O"` to force scp to use the old protocol.

I recognize that this is not an Ansible bug, but it may break documented and expected behavior.

OpenSSH Changelog: https://www.openssh.com/txt/release-9.0
> This release switches scp(1) from using the legacy scp/rcp protocol to using the SFTP protocol by default.

### Issue Type

~Bug Report~
Documentation Report

### Component Name

connection, ssh, scp

### Ansible Version

```console
ansible [core 2.13.2]
  config file = None
  configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.9/dist-packages/ansible
  ansible collection location = /home/ansible/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
  jinja version = 3.1.2
  libyaml = True
```

### Configuration

```console
CONNECTION:
==========

ssh:
___
scp_extra_args(env: ANSIBLE_SCP_EXTRA_ARGS) = -O
scp_if_ssh(env: ANSIBLE_SCP_IF_SSH) = true
```

### OS / Environment

Debian Sid

### Steps to Reproduce

configure sshd to not offer sftp. (eg. delete `Subsystem       sftp    /usr/lib/ssh/sftp-server` from `/etc/ssh/sshd_config` and restart)

create a small example playbook, contents are irrelevant
<!--- Paste example playbooks or commands between quotes below -->
```yaml
- hosts: localhost
  gather_facts: true
  remote_user: root
  tasks:
    - name: install a nonexistant package
      package:
        name:
          - less-is-more
```

execute wit Ansible configuration or environment setting to use scp:
```
export ANSIBLE_SCP_IF_SSH=false
ansible-playbook -c ssh playbook.yml
```

### Expected Results

```
ansible@instance:~$ ansible-playbook -c ssh playbook.yml

PLAY [localhost] ***************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************
ok: [localhost]

TASK [install a nonexistant package] *******************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "No package matching 'less-is-more' is available"}

PLAY RECAP *********************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
```

### Actual Results

```console
with only `scp_if_ssh`:

ansible@instance:~$ ansible-playbook -c ssh playbook.yml

PLAY [localhost] ***************************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************
fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via scp: scp: Connection closed\r\n", "unreachable": true}

PLAY RECAP *********************************************************************************************************************************************
localhost                  : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0
```

with additional setting to acc `-O`to scp (working correctly):
```
ansible@instance:~$ export ANSIBLE_SCP_EXTRA_ARGS="-O"
ansible@instance:~$ ansible-playbook -c ssh playbook.yml

PLAY [localhost] ***************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************
ok: [localhost]

TASK [install a nonexistant package] *******************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "No package matching 'less-is-more' is available"}

PLAY RECAP *********************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
```
```

### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct

{'base_commit': 'a6d4c3ff7cf43c24be6622102cee834fc5096496', 'files': [{'path': 'lib/ansible/plugins/connection/ssh.py', 'status': 'modified', 'Loc': {'(None, None, None)': {'add': [294, 312]}}}]}


Jinja filters output trailing whitespace breaking idempotency

<!---
Verify first that your issue/request is not already reported on GitHub.
Also test if the latest release, and master branch are affected too.
-->

##### ISSUE TYPE
<!--- Pick one below and delete the rest: -->
 - Bug Report

##### COMPONENT NAME
`lib/ansible/parsing/yaml/dumper.py:AnsibleDumper`

##### ANSIBLE VERSION
<!--- Paste verbatim output from “ansible --version” between quotes below -->
```
ansible 2.4.0 (devel 6c101087ac) last updated 2017/03/29 16:09:54 (GMT +200)
  config file =
  configured module search path = [u'/home/user/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  python version = 2.7.9 (default, Jun 29 2016, 13:08:31) [GCC 4.9.2]

[and]
ansible 2.2.2.0 (stable-2.2 2273800f7c) last updated 2017/03/29 10:54:33 (GMT +200)
  lib/ansible/modules/core: (detached HEAD 31a1f19cd8) last updated 2017/03/29 16:07:02 (GMT +200)
  lib/ansible/modules/extras: (detached HEAD 921bc0d464) last updated 2017/03/29 14:42:48 (GMT +200)
```

##### CONFIGURATION
Ansible default. No changes.

##### OS / ENVIRONMENT
Isolated Debian Jessie VM on Qubes OS setup only for testing with Ansible devel.

##### SUMMARY
The `to_nice_json` filter and others like `indent` output trailing whitespace. That is not in itself a problem (although bad style). But in the case of `to_nice_json` it becomes a problem because it is potentially not idempotent which breaks CI which test for this property (e.g. DebOps).

Also note that the task itself outputs trailing whitespace (select the task output below).

##### STEPS TO REPRODUCE
<!---
For bugs, show exactly how to reproduce the problem, using a minimal test-case.
For new features, show how the feature would be used.
-->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
---

- hosts: localhost
  vars:
    input:
      - test: True
        test2:
          - 23
      - test: True

  tasks:

    - name: Jinja2 templating outputting trailing spaces which change depending
      debug:
        msg: "{{ (input | to_nice_json).split('\n') }}"

    # Workaround is part of https://github.com/debops/debops-playbooks/blob/master/templates/debops__tpl_macros.j2
    - name: Clean Jinja2 templating using workaround
      debug:
        msg: "{{ (input | to_nice_json | regex_replace(\"[ \\t\\r\\f\\v]+(\\n|$)\", \"\\1\")).split('\n') }}"
```

<!--- You can also paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- What did you expect to happen when running the steps above? -->

```
TASK [Clean Jinja2 templating using workaround]
ok: [localhost] => {
    "changed": false,
    "msg": [
        "[",
        "    {",
        "        \"test\": true,",
        "        \"test2\": [",
        "            23",
        "        ]",
        "    },",
        "    {",
        "        \"test\": true",
        "    }",
        "]"
    ]
}
```

Example role in CI: https://travis-ci.org/debops/ansible-apt/builds/216374820

##### ACTUAL RESULTS
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes below -->
```
TASK [Jinja2 template outputting trailing spaces which change depending on next element]
ok: [localhost] => {
    "changed": false,
    "msg": [
        "[",
        "    {",
        "        \"test\": true, ",
        "        \"test2\": [",
        "            23",
        "        ]",
        "    }, ",
        "    {",
        "        \"test\": true",
        "    }",
        "]"
    ]
}
```

Example role in CI: https://travis-ci.org/debops/ansible-apt/builds/216355310#L824-L825

{'base_commit': '4c5a6d9d44f81d88cca2a9f13966af326bed4b64', 'files': [{'path': 'lib/ansible/plugins/filter/core.py', 'status': 'modified', 'Loc': {"(None, 'to_nice_json', 87)": {'mod': [90]}}}]}


Can't train in DDP mode after recent update

## 🐛 Bug

When I pull the latest code, I found that DDP training would get stuck in the first few epochs.
I ran some tests to see which commit caused this bug and I found commit `a3ecf0fd640465f9a7c009e81bcc5ecabf381004` on Mar 3 worked well.
But when I `git checkout` commit `e931b9da33f45551928059b8d61bddd50e401e48` on Mar 4, the bug appeared.
And the bug still exists in the latest commit.

## To Reproduce (REQUIRED)
`python3 -m torch.distributed.launch --nproc_per_node 4 train.py`

The training process would get stuck forever unless you terminate it manually.
And it still occupied the GPU memory unless killing the process by `kill -9 xxxxx`

![stuck](https://user-images.githubusercontent.com/5948604/110415966-daa79980-80cd-11eb-8e8d-f7f56c2c9cd5.png)

## Expected behavior
Roll back to the older code, and get the expected behavior.
```bash
$ git checkout a3ecf0fd640465f9a7c009e81bcc5ecabf381004
$ python3 -m torch.distributed.launch --nproc_per_node 4 train.py
```
![worked well](https://user-images.githubusercontent.com/5948604/110415987-e004e400-80cd-11eb-8fea-b00a5305459e.png)

## Environment
If applicable, add screenshots to help explain your problem.

 - OS: Ubuntu 20.04
 - GPU: 1080 Ti * 4
 - Python: 3.8
 - pytorch: 1.7.1
 - CUDA: 11.1
 - Driver:  455.32

## Additional
It seems like the latest commit working fine on 2 * 3090, I'm not sure yet, I will do some further tests on 3090 or other GPU.


Enable AdamW Optimizer

### Search before asking

- [X] I have searched the YOLOv5 [issues](https://github.com/ultralytics/yolov5/issues) and found no similar feature requests.

### Description

When we use Adam, we have to tune learning rate along with the batch size.
It is cumbersome; with [AdamW](https://pytorch.org/docs/stable/generated/torch.optim.AdamW.html), we don't have to re-tune learning rate even if we change batch size.
So, it is nice to be able to use this option.

I have created PR to enable AdamW optimizer. Please check it out.
#6152

### Use case

_No response_

### Additional

_No response_

### Are you willing to submit a PR?

- [X] Yes I'd like to help by submitting a PR!


Promote a new activation function recently developed by Kuangshi technology!!!!

## 🚀 Feature

ReLU and PReLU are extended to 2D activation functions by adding negligible space condition overhead.

## Motivation

Can a visual task specific activation function be designed?

## Pitch

I would like to suggest a branch, but because the work is too busy, directly paste the code. It can be used directly.

## Alternatives

None.

## Additional context

```python3
import torch
import torch.nn as nn
import torch.nn.functional as F

class FReLU(nn.Module):
    r""" Applies the FReLU function element-wise.

    `"Funnel Activation for Visual Recognition" <https://arxiv.org/pdf/2007.11824.pdf>`_

    Examples:
        >>> channels = 64
        >>> frelu = FReLU(channels)
        >>> input = torch.randn(1, channels, 64, 64)
        >>> output = frelu(input)
    """

    def __init__(self, channels):
        super().__init__()
        self.FReLU = nn.Sequential(
            nn.Conv2d(channels, channels, kernel_size=3, stride=1, padding=1, groups=channels, bias=False),
            nn.BatchNorm2d(channels)
        )

    def forward(self, input: Tensor):
        out = self.FReLU(input)
        return torch.max(input, out)
```
Thank you very much for your long-term promotion of Yolo technology. I will submit some code after a while. Good luck to you!


Class filtering does not work in segmentation code

### Search before asking

- [X] I have searched the YOLOv5 [issues](https://github.com/ultralytics/yolov5/issues) and found no similar bug report.

### YOLOv5 Component

Training

### Bug

I tried to filter classes that I train with as explained [here](https://github.com/ultralytics/yolov5/issues/1978). I found out that it works with `train.py` but not with `segment/train.py`.

I expect that if I change the following line:

```python
include_class = [1]  # filter labels to include only these classes (optional)
```

in `utils/dataloaders.py` line `533`, then in `train.py` and `segment/train.py`
- the code does not crash
- the code trains with only class `1` (if such class exists in the `.yaml` file)

What I get:
- `train.py` -> works as expected
- `segment/train.py` -> crashes:

```
Traceback (most recent call last):
  File "segment/train.py", line 664, in <module>
    main(opt)
  File "segment/train.py", line 555, in main
    train(opt.hyp, opt, device, callbacks)
  File "segment/train.py", line 180, in train
    train_loader, dataset = create_dataloader(
  File "yolov5/utils/segment/dataloaders.py", line 46, in create_dataloader
    dataset = LoadImagesAndLabelsAndMasks(
  File "yolov5/utils/segment/dataloaders.py", line 102, in __init__
    super().__init__(path, img_size, batch_size, augment, hyp, rect, image_weights, cache_images, single_cls,
  File "yolov5/utils/dataloaders.py", line 540, in __init__
    self.segments[i] = segment[j]
TypeError: only integer scalar arrays can be converted to a scalar index
```

### Environment

- YOLO: yolov5 `3e55763d45f9c5f8217e4dad5ba1e6c1f42e3bf8`
- OS: Ubuntu 20.04
- Python 3.8

### Minimal Reproducible Example

- clone yolov5 repo
- install dependencies with pip
- edit the lines as explained in the `Bug` section

```
python3 segment/train.py
```

### Additional

There will be a PR showing the fix for this

### Are you willing to submit a PR?

- [X] Yes I'd like to help by submitting a PR!


premature end of JPEG images

## ❔Question
`Epoch   gpu_mem      GIoU       obj       cls     total   targets  img_size
      1/99     2.87G   0.05456   0.04197         0   0.09652        10       640: 100% 157/157 [00:52<00:00,  2.98it/s]
               Class      Images     Targets           P           R      mAP@.5  mAP@.5:.95:   0% 0/157 [00:00<?, ?it/s]Premature end of JPEG file
               Class      Images     Targets           P           R      mAP@.5  mAP@.5:.95: 100% 157/157 [00:19<00:00,  8.21it/s]
                 all     2.5e+03       1e+04       0.362       0.777       0.684       0.338`

It shows premature end of JPEG images during validation, what leads to this?

## Additional context


Error caused by emoji in comments in yolov5/data/hyps/*.yaml file

Before submitting a bug report, please be aware that your issue **must be reproducible** with all of the following,
otherwise it is non-actionable, and we can not help you:

- **Current repo**: run `git fetch && git status -uno` to check and `git pull` to update repo
- **Common dataset**: coco.yaml or coco128.yaml
- **Common environment**: Colab, Google Cloud, or Docker image. See https://github.com/ultralytics/yolov5#environments

If this is a custom dataset/training question you **must include** your `train*.jpg`, `val*.jpg` and `results.png`
figures, or we can not help you. You can generate these with `utils.plot_results()`.

## 🐛 Bug

Decode error occurs when executing the command suggested for input after git clone in Windows environment

## To Reproduce (REQUIRED)

Input:

```
(env38) PS C:\Users\Username\PycharmProjects\yolov5> python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
```

Output:

```
Downloading https://ultralytics.com/assets/Arial.ttf to C:\Users\Username\AppData\Roaming\Ultralytics\Arial.ttf...
train: weights=yolov5s.pt, cfg=, data=coco128.yaml, hyp=data\hyps\hyp.scratch.yaml, epochs=3, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, adam=False, sync_bn=False, workers=8, entity=None, project=runs\train, name=exp, exist_ok=False, quad=False, linear_lr=False, label_smoothing=0.0, upload_dataset=False, bbox_interval=-1, save_period=-1, artifact_alias=latest, local_rank=-1, freeze=0, patience=100
github: up to date with https://github.com/ultralytics/yolov5
YOLOv5  v5.0-493-g1922dde torch 1.8.0+cu111 CUDA:0 (GeForce RTX 3090, 24576.0MB)

Traceback (most recent call last):
  File "train.py", line 615, in <module>
    main(opt)
  File "train.py", line 512, in main
    train(opt.hyp, opt, device, callbacks)
  File "train.py", line 76, in train
    hyp = yaml.safe_load(f)  # load hyps dict
  File "C:\Users\Username\miniconda3\envs\env38\lib\site-packages\yaml\__init__.py", line 162, in safe_load
    return load(stream, SafeLoader)
  File "C:\Users\Username\miniconda3\envs\env38\lib\site-packages\yaml\__init__.py", line 112, in load
    loader = Loader(stream)
  File "C:\Users\Username\miniconda3\envs\env38\lib\site-packages\yaml\loader.py", line 34, in __init__
    Reader.__init__(self, stream)
  File "C:\Users\Username\miniconda3\envs\env38\lib\site-packages\yaml\reader.py", line 85, in __init__
    self.determine_encoding()
  File "C:\Users\Username\miniconda3\envs\env38\lib\site-packages\yaml\reader.py", line 124, in determine_encoding
    self.update_raw()
  File "C:\Users\Username\miniconda3\envs\env38\lib\site-packages\yaml\reader.py", line 178, in update_raw
    data = self.stream.read(size)
UnicodeDecodeError: 'cp949' codec can't decode byte 0xf0 in position 9: illegal multibyte sequence
```

## Expected behavior

A clear and concise description of what you expected to happen.

## Environment

If applicable, add screenshots to help explain your problem.

- OS: Windows 10
- GPU : RTX3090

## Additional context

This error occurs because of the rocket-shaped emoji (🚀) in the yolov5/data/hyps/*.yaml file. You can fix the error by editing the yaml file or specifying the decoding method in detail.