CPU에서 yolov5 실행(자세한 단계 + 시작하기에 적합)

목차

1. 새로운 환경 만들기

2. Pytorch 라이브러리 가져오기

3. 신규 프로젝트

4. 테스트

5. 데이터세트 준비

여섯, 구성 파일 수정

7. 훈련

여덟, 예제 테스트

9. 결론


기본적으로 모든 사람은 Anaconda와 Pycharm이 설치되어 있으며 기본 작업을 알고 있습니다.

1. 새로운 환경 만들기

cmd 창을 열고 conda create -n yolov5 python=3.7을 입력하고 Enter 키를 누릅니다.

잠시 기다렸다가 y를 입력하고 Enter 키를 누릅니다.

잠시 후 새 환경이 성공적으로 생성되었음을 나타내는 done이 나타납니다!

이름은 마음대로 고를 수 있지만 저와 같은 이름을 선택하는 것이 좋습니다.모든 후속 작업은 나와 일치하여 누구나 처음 시작할 수 있도록 권장합니다. Python 인터프리터 버전은 3.7을 선택해야 합니다. , 3.10을 선택하기 전에 알 수 없는 문제가 발생했기 때문에

2. Pytorch 라이브러리 가져오기

내 컴퓨터는 R7-5800H의 Thinkbook14p이고, 독립 디스플레이가 없기 때문에 PyTorch의 CPU 버전을 사용합니다.

먼저 cmd 창에 conda activate yolov5를 입력하고 Enter 키를 누르고 방금 만든 새 환경을 활성화합니다.

경로 앞에 (yolov5)가 나타나면 활성화가 성공한 것입니다!

그런 다음 PyTorch 공식 웹 사이트 PyTorch 를 입력 하고 다음 구성을 선택합니다.

코드의 마지막 줄을 cmd 창에 복사하고 Enter 키를 누릅니다.

잠시 기다렸다가 y를 입력하고 Enter를 누르고 잠시 기다리면 Pytorch 라이브러리를 성공적으로 가져왔음을 나타내는 done이 나타납니다!

3. 신규 프로젝트

먼저 이 웹사이트에서 yolov5 설치 패키지 mirrors/ultralytics/yolov5 GitCode 를 다운로드합니다.

다운로드가 완료되면 압축을 풀고 압축이 풀린 폴더를 마우스 오른쪽 버튼으로 클릭하고 Pycharm 프로젝트로 열기를 선택합니다.

열린 Pycharm 인터페이스는 다음과 같습니다.

우측 하단의 <통역사 없음> 클릭 후 통역사 추가 선택

팝업 인터페이스 왼쪽의 Conda 환경 클릭, 기존 환경 클릭, 이전에 생성한 새 환경에서 python 실행 파일 선택 후 확인 클릭

Pycharm 인터페이스의 오른쪽 하단 모서리가 Python3.7(yolov5)이 된 것을 볼 수 있습니다.

4. 테스트

yolov5를 실행하는 데 필요한 다양한 패키지가 포함된 requirements.txt 파일을 엽니다. 터미널에서 실행할 명령의 첫 번째 줄을 복사합니다.

이 과정은 네트워크 속도에 따라 빠르거나 느릴 수 있으니 조용히 기다리세요~ 여러 패키지 설치에 문제가 있을 수 있습니다. 상관없습니다. CSDN에서 오류 정보를 검색하여 해결책을 찾을 수 있습니다!

모든 것이 설치되면 왼쪽에있는 detect.py 파일을 실행하십시오.

작업 후 오류가 없고 왼쪽의 run\detect\exp 디렉터리에 다음 두 개의 처리된 그림이 나타나면 이전 작업에 문제가 없음을 의미합니다. 축하합니다! 준비는 끝났다

5. 데이터세트 준비

후속 관리를 용이하게 하기 위해 yolov5-master 경로 아래에 다음 빈 폴더를 생성하려면 내 방법을 따르십시오.

이 기사 Zhihu - Zhihu 에서 블로거가 제공한 훈련 데이터 고양이 및 개 인식 데이터 세트를 다운로드 했는데 압축 해제 후 사진이 25000장 있는데 모두 사용하는 것은 분명히 불가능합니다. 처음 121장의 고양이 사진을 선택하여 훈련 세트로 yolov5-master\own_datas\images\train 폴더에 복사했습니다.

그런 다음 Pycharm 터미널에 pip install pyqt5 labelme를 입력하고 Enter 키를 누릅니다. 이 두 라이브러리는 데이터 세트에 레이블을 지정하는 데 사용됩니다.

설치가 완료되면 터미널에 labelme를 입력하고 Enter 키를 누릅니다.

창이 팝업되고 이 창에 훈련 세트가 표시됩니다.

왼쪽 상단 모서리에 있는 Open Dir을 클릭하고 yolov5-master\own_datas\images\train 폴더를 선택하면 훈련 세트의 이미지가 나타납니다. 마우스 오른쪽 버튼을 클릭하고 사각형 만들기를 선택하여 그림의 고양이 프레임을 지정합니다.

상자 선택이 완료되면 태그 이름 고양이를 입력하고 확인을 클릭하면 태그가 저장됩니다. 고양이가 여러 개인 경우 계속 선택하십시오.

전체 액자를 선택한 후 왼쪽의 Next Image를 클릭하고 프롬프트에 따라 yolov5-master\own_datas\labels\json 경로에 레이블 파일을 저장하며 파일 형식은 .json

약 30분 후...

모든 사진이 표시되면 yolov5-master\own_datas\labels\json 폴더 의 training set에서 같은 수의 사진에 해당하는 121개의 .json 파일 을 볼 수 있습니다.

yolov5는 .txt 형식의 태그만 인식할 수 있고 .json 파일을 .txt 파일로 변환해야 하기 때문에 아직 끝나지 않았습니다.

yolov5-master 폴더에 새로운 json2txt.py 파일 생성

다음 코드를 복사하십시오.

import json
import os

name2id = {'cat': 0}  # 标签名称


def convert(img_size, box):
    dw = 1. / (img_size[0])
    dh = 1. / (img_size[1])
    x = (box[0] + box[2]) / 2.0 - 1
    y = (box[1] + box[3]) / 2.0 - 1
    w = box[2] - box[0]
    h = box[3] - box[1]
    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
    return (x, y, w, h)


def decode_json(json_floder_path, json_name):
    txt_name = 'C:/Users/xieji/Downloads/yolov5-master/own_datas/labels/txt/' + json_name[0:-5] + '.txt'
    # txt文件夹的绝对路径
    txt_file = open(txt_name, 'w')

    json_path = os.path.join(json_floder_path, json_name)
    data = json.load(open(json_path, 'r', encoding='gb2312', errors='ignore'))

    img_w = data['imageWidth']
    img_h = data['imageHeight']

    for i in data['shapes']:

        label_name = i['label']
        if (i['shape_type'] == 'rectangle'):
            x1 = int(i['points'][0][0])
            y1 = int(i['points'][0][1])
            x2 = int(i['points'][1][0])
            y2 = int(i['points'][1][1])

            bb = (x1, y1, x2, y2)
            bbox = convert((img_w, img_h), bb)
            txt_file.write(str(name2id[label_name]) + " " + " ".join([str(a) for a in bbox]) + '\n')


if __name__ == "__main__":

    json_floder_path = 'C:/Users/xieji/Downloads/yolov5-master/own_datas/labels/json/'
    # json文件夹的绝对路径
    json_names = os.listdir(json_floder_path)
    for json_name in json_names:
        decode_json(json_floder_path, json_name)

주석이 달린 세 곳은 조정이 필요할 수 있는 곳입니다. 모두가 똑같은 방식으로 나를 따랐다면 C:/Users/xieji/Downloads/를 자신의 경로로 바꾸십시오.

json2txt.py를 실행하면 종료 후 yolov5-master\own_datas\labels\txt 폴더에 해당 121개의 .txt 파일을 볼 수 있습니다.

마지막 단계는 txt 폴더의 모든 파일을 yolov5-master\own_datas\labels\train 폴더에 복사하는 것입니다. 이 단계를 잊지 마세요! 그렇지 않으면 훈련 중에 오류가 보고되고 레이블을 찾을 수 없습니다.

여섯, 구성 파일 수정

먼저 두 파일을 복사합니다.

yolov5-master\data 경로에서 coco128.yaml 파일을 찾아 yolov5-master\own_datas 경로에 복사하고 이름을 cat.yaml로 바꿉니다.

coco128 데이터 세트를 사용하지 않고 자체 cat 데이터 세트를 사용하기 때문입니다. 사실 바꾸지 않아도 괜찮지만 이해하기 쉽게 바꿔서

yolov5-master\models 경로에서 yolov5s.yaml 파일을 찾아 yolov5-master\own_datas 경로에도 복사합니다. yolov5s를 선택한 이유는 yolov5s 가 그다지 효과적이지는 않지만 빠르기 때문입니다 .

cat.yaml 파일을 엽니다. 가장 먼저 수정해야 할 것은 다음 세 줄입니다.

# path: ../datasets/coco128  # dataset root dir
train: own_datas/images/train  # train images (relative to 'path') 128 images
val: own_datas/images/train  # val images (relative to 'path') 128 images

첫 번째 줄을 주석 처리

두 번째와 세 번째 줄의 상대 경로가 똑같이 따라오면 그냥 따라와

그런 다음 다음 두 줄을 수정합니다.

nc: 1  # number of classes
names: ['cat']  # class names

nc는 범주의 수이고 이름은 범주 이름입니다. 똑같이 따라하면 그냥 따라와

coco128 데이터 세트를 사용하지 않기 때문에 마지막으로 이 줄을 주석 처리합니다. 댓글 안달아도 상관없어 그냥 강박장애일뿐

# download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip

yolov5s.yaml 파일을 열고 다음 줄을 수정해야 합니다.

nc: 1  # number of classes

7. 훈련

train.py 파일을 엽니다.

먼저 다음 행의 기본값을 수정합니다.

    parser.add_argument('--weights', type=str, default='yolov5s.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default='own_datas/yolov5s.yaml', help='model.yaml path')
    parser.add_argument('--data', type=str, default='own_datas/cat.yaml', help='dataset.yaml path')

똑같이 따라하면 그냥 따라와

그런 다음 이 줄의 기본값을 수정합니다.

    parser.add_argument('--epochs', type=int, default=150)

기본값은 300인데 훈련시간이 길어질 것 같아서 여기서 150으로 변경했습니다.

마지막으로 수정할 것은 이 줄의 기본값입니다.

parser.add_argument('--workers', type=int, default=0, help='maximum number of dataloader workers')

제 CPU는 8코어 16쓰레드라서 처음에는 기본값인 8을 사용했는데 이 값을 내 컴퓨터의 CPU코어 개수로 설정하면 트레이닝 속도는 가장 빠르지만 에러가 나는 것을 다른 곳에서 봤습니다 훈련 중에 보고됩니다. 아마도 메모리 버스트를 의미하고, 그런 다음 0으로 변경했습니다.

좋아, 훈련 시작!

train.py를 실행하고 기다리십시오...팬이 쉬지 않고 윙윙거릴 것입니다...

3시간 훈련 했는데 .. CPU 사용이 정말 느리네요... 지난 에포크 이후 [email protected]는 0.995에서 멈췄고, [email protected]:0.95는 0.904에서 멈췄습니다.

yolov5-master\runs\train\exp 폴더에서 훈련 관련 정보를 볼 수 있습니다.

weights 폴더의 best.pt 파일은 훈련된 모델이며 나중에 테스트에서 사용됩니다.

여덟, 예제 테스트

모델을 훈련시키는 데 3시간이 걸렸습니다. 어떻게 작동하는지 봅시다!

테스트용으로 찍은 고양이 영상을 이용했어요 사진 뿐만 아니라 직접 사용하셔도 됩니다

테스트 파일을 yolov5-master\own_datas\images\test 폴더에 넣습니다.

detect.py 파일을 엽니다.

다음 두 줄의 기본값을 수정합니다.

    parser.add_argument('--weights', nargs='+', type=str, default='runs/train/exp/weights/best.pt', help='model path(s)')
    parser.add_argument('--source', type=str, default='own_datas/images/test', help='file/dir/URL/glob, 0 for webcam')

첫 번째 기본값은 앞에서 언급한 훈련된 모델 파일의 상대 경로입니다.

두 번째 기본값은 테스트 파일이 저장된 폴더의 상대 경로입니다.

똑같이 따라하면 그냥 따라와

detect.py를 실행하고 잠시만 기다리세요...

종료 후 yolov5-master\runs\detect\exp2 폴더에서 결과를 볼 수 있습니다.

동영상을 직접 업로드할 수 없어 동영상에서 몇 장의 사진을 찍어서 보여 드리겠습니다.

효과는 괜찮고 만족스럽지 않습니다. 결국 100개 이상의 사진만 훈련되었고 상대적으로 열악한 yolov5s 네트워크가 사용되었습니다.

9. 결론

저는 딥 러닝에 막 입문한 초보자입니다. 이 프로젝트를 며칠 동안 진행하면서 많은 지식을 얻었습니다.

드래프트를 작성한 후 이전에 했던 모든 작업을 삭제하고 작성한 단계에 따라 다시 실행했는데 원활하고 문제가 없었습니다!

내 과정에 따르면 하루 만에 완료 할 수 있습니다 (더 나은 독립 디스플레이가 있으면 GPU로 실행하는 것이 더 빠릅니다)

문제가 발생하면 CSDN에서 검색한 다음 자신의 지혜를 결합하면 해결될 수 있다고 믿습니다!

주로 이 블로그를 참고하세요, 감사합니다!

[욜로브5] 1. 6000단어 욜로브5 유모 수준의 튜토리얼, 80세 할머니도 이해할 수 있도록 진지하게 요약

рекомендация

отblog.csdn.net/weixin_54721509/article/details/122983561