MapleStory Finger Point

개발중 62

Python os rename 함수 (파일명 변경)

os 라이브러리의 rename 함수는 파일명의 이름을 변경할 때 사용한다. 기본적인 형태는 아래와 같다. import os os.rename('원본 파일명', '변경할 파일명') 변경할 파일은 Python 코드와 같은 경로에 있어야 한다. 물론 전체 경로를 다 적어주면 다른 경로라도 상관 없음. 하지만 파일 하나만 변경할 때 이처럼 코드짜며 돌리는게 더 귀찮으므로, 어느 경로 내부에 있는 여러 파일명을 변경할 때는 이렇게 하면된다. import os import sys image_path = 'labels' # images 라는 이름의 폴더 image_list = os.listdir(image_path) # images 폴더 내부 파일 목록으로 list를 만듦 count = 0 for i in image..

Development/팁 2023.08.08

Anaconda 가상환경에서 만든 Python 코드 바로 실행

Anaconda Prompt 켜고 .. 가상환경 activate 하고.. 경로 들어가서 python ~~.py ... 이 작업이 귀찮으므로 bat 파일을 만들어서 바로 실행되도록 만든다. 먼저 실행하고자 하는 Python 파일이 있는 경로에 텍스트 파일을 하나 만들어, 확장명을 배치 파일인 bat으로 변경한다. 그 다음에 .bat 파일을 마우스 우클릭 후 위에서 두 번째에 있는 편집을 누른다. 그러면 메모장이 열릴 텐데, 아래의 구문을 입력하면 된다. 그 전에 Anaconda가 설치된 경로를 알아야 하는데, C드라이브에 설치하였다는 기준하에 C:/Users/User/AppData/Local/anaconda3 이다. 그런데 가끔 C:/Users/User/anaconda3 이렇게 있는 경우도 있어서 잘 확인..

Development/팁 2023.08.04

AI-HUB 데이터셋 Python으로 직접 출력하여 확인하기

사람 얼굴을 탐지하는 모델을 만들기 위해 여러 데이터셋들을 찾고 있었는데, 거의 대부분 서양인으로 기반으로 한 데이터셋들이 많았다. 게다가 한국인을 대상으로 한 데이터셋들은 개인 정보다 뭐다 해서 거의 찾아볼 수가 없었다. 우연히 AI HUB라는 국내 사이트를 찾게 되었는데, 생각보다 유용한 데이터셋들이 엄청 많았다. 구글에 ai-허브라고 치면 성인인증이 뜬다 모두 국내에서 주관한 데이터셋이기 때문에 한국인, 국내 장소 등등 구하기 쉽지 않은 데이터셋들이다. 물론 AI-HUB에 있는 모든 데이터셋들은 인공지능 학습모델의 학습용으로만 사용할 수 있으며, 다른 행위에 대해서는 일절 허락되지 않음. https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMen..

Development 2023.07.25

Grid Layout 위젯 드래그&드롭 이벤트 생성하기

PyQt 또는 PySide로 GUI를 만들 때 거의 필수적으로 Layout을 사용한다. 안 쓰면 크기가 고정되어 버리기 때문에 GUI 크기 조절 시 불편한 점이 한두 가지가 아니라 무조건 쓰는 편이다. 주로 나는 Grid Layout을 자주 쓰는데 문득 Layout 안에 있는 위젯들의 위치를 바꾸고 싶어서 한번 찾아보았다. 그러다 stackoverflow 찾게 되었다. import warnings warnings.filterwarnings('ignore', category=DeprecationWarning) import sys from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QVBoxLayout, QApplication from PySide6.Q..

Development/GUI 2023.07.12

YOLO cfg 파일에 대한 정보

YOLO 모델 학습을 진행할 때, cfg 파일을 사용하는데 문득 어떤 용도로 사용하는지 궁금해져서 찾아보았다. YOLO의 설정 파일인 cfg(config) 파일은 모델의 아키텍처, 하이퍼 파라미터, 데이터 경로 및 훈련 관련 설정 정보를 담고 있다. anchors: 객체의 크기와 위치를 예측하기 위해 사용되는 bounding box, 즉 기본 박스 형태의 좌표를 의미한다. 중심 좌표 (x, y)와 width, height를 포함하며, 이를 사용해 다양한 크기와 비율의 물체를 탐지할 수 있다. anchors:# yolov7.yaml - [12,16, 19,36, 40,28] # P3/8 - [36,75, 76,55, 72,146] # P4/16 - [142,110, 192,243, 459,401] # P5..

Development/YOLO 2023.06.19

YOLO 객체 인식 모자이크 적용 [1?]

* 이 글은 YOLOv7 기준으로 작성하였음 이전에 YOLO 모자이크에 관련한 글을 작성했었는데, 더 간단하게 정리함 GitHub - WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors - GitHub - WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of... git..

Development/YOLO 2023.05.24

Invalid SOS parameters for sequential JPEG 에러 [Python OpenCV]

Invalid SOS parameters for sequential JPEG OpenCV 기반 코드 실행 도중에 SOS 관련 에러가 발생하였다면, 해당 이미지에 대한 속성 문제이다. 아마도 이미지 속성을 들여다 보면 Exif 속성들(카메라 제조업체, 카메라 모델 등등) 이 있을 텐데, 이걸 삭제해야한다. 구글링해보니 카메라 제조업체에 삼성 핸드폰이라고 나오면 해당 에러가 발생한다고 카더라. 따라서 PhotoScape X(무료 사진 편집 프로그램)를 다운받은 뒤, 사진 뷰어 - 모든 사진 드래그 후 우클릭 포맷 바꾸기 - 메타데이터 정보를 보존합니다 클릭 해제 후 저장 저장된 사진들을 붙여넣기하면 끝. 그러면 더이상 Exif 정보들이 모두 삭제되어 SOS 에러가 발생하지 않는다. 만약 이미지 속성 정보들을..

[1] 가상 번호판을 만들어보자

요즘 YOLOv7 기반으로 번호판 인식 모델을 만들고 있는 중이다. 모델을 만들려면 학습할 이미지 데이터가 있어야 하는데 검색해 보면 죄다 외국 번호판 데이터밖에 없다. 개인적인 생각으로 외국 번호판이랑 우리나라 번호판이랑 약간 다르게 생겨서 외국 번호판을 기반으로 학습해도 인식이 잘 될지 미지수였다. 그래서 생각해낸 것이 바로, 외국 번호판 이미지 데이터셋을 보면 이미지 파일과 어노테이션을 진행하여 번호판 좌표가 들어있는 텍스트 파일 또는 json 파일 같은 게 같이 들어있다. 여기 좌표에 대한민국 번호판을 집어여면 되지 않을까 라는 생각이었다. GitHub - Oh-JongJin/Virtual_Number_Plate: 가상 번호판 만들기 가상 번호판 만들기. Contribute to Oh-JongJi..

QSettings 로그인 알고리즘

이 내용은 이전 글과 연관되어 있습니다. 간단한 로그인 알고리즘 중 일정 횟수 비밀번호 에러가 발생하면 해당 계정의 로그인을 일시적으로(필자는 1분으로 설정하였음) 차단하는 기능을 구현해보겠습니다. 우선 크게 필요한 것은 첫 번째로 비밀번호 에러가 발생한 시간, 두 번째는 비밀번호 에러 횟수입니다. 현재 시간과 에러 발생 시간을 비교하여 로그인 성공 유무를 선택하는 알고리즘입니다. 자세한 것은 코드에 주석 처리 해놓았습니다. #!/usr/bin/env python3 # # Authors: # 5jx2oh@gmail.com import sys import time from datetime import datetime from PySide6.QtCore import QSettings from PySide6...

Development/GUI 2023.02.21