분류 전체보기 433

2021AI엔지니어 고급반 - YOLO with deep learning 교육 프로그램 참가 후기 2일차

교육 프로그램에 참가한지 2일차가 되었다. 1일차에 전반적인 개요와 방법에 대해 설명해보았다면 2일차에는 실제로 어떻게 진행되는지에 대해 알아보았다. 1일차와는 달리 어려움은 없었다. 그리고 실제로 어떻게 인식을 가능하게 하는지에 대해 알 수 있었다. 방법을 요약하면 간단하다. 우선 darknet이 있어야 한다. (깃허브에서 다운받으면 된다. yolo darknet을 치면 알렉세이라는 분의 깃허브가 바로 뜬다. ) 그리고 이미지에서 박스 치기 즉 라벨링을 하기 위한 마킹 툴이 있어야 하는데, Yolo_mark를 사용했다. (이 툴도 알렉세이라는 분의 깃허브에서 다운 받을 수 있다. 실행방법은 해당 디렉토리로 이동한 후에 linux_mark.sh파일을 실행시키면 된다. ) 해당 툴을 사용하여 (리눅스에서 ..

딥러닝은 과연 만능일까? 데싸노트

딥러닝은 과연 만능일까? 우선 결론은 딥러닝은 특화된 분야가 따로 있다. 자연어, 이미지, 비디오 데이터이다. 이런 데이터는 아무래도 변수가 굉장히 많기 때문이다. 딥러닝에 특화된 분야를 딥러닝이 아닌 다른 곳에 적용시키면 엄청난 시간이 걸릴 수 밖에 없다. 컴퓨팅파워가 받쳐주기 때문에 딥러닝이 진행되는거다. 뉴럴 네트워크가 이제 하드웨어의 지원으로 가능해졌기 때문이다. 트리모델에 비해서 딥러닝은 하나 하나의 연산은 사실 단순하다. 하지만 많은 양의 연산이 얽혀있다. CPU를 가지고 하면 굉장히 오래 걸리지만 GPU로 진행하면 빠르게 진행될 수 있다. Tabular데이터는? (엑셀같은 데이터 = 변수가 많지 않다. ) 굳이 딥러닝을 써야하나? 라는 의문 만약 GPU를 사용하지 않는다면 부스팅이 더 좋다...

개발 유튜버 2021.08.24

2021AI엔지니어 고급반 - YOLO with deep learning 교육 프로그램 참가 후기 1일차

서울과학기술대학교에서 진행하는 AI엔지니어 인공지능 고급과정에 참여하게 되었다. YOLO를 이용해서 이미지 인식을 하는 교육과정을 진행하게 되었다. YOLO는 YOU ONLY LOOK ONCE의 약자이다. Object detection에서 많이 사용하는 모델이고 실제로 현업에서도 많이 쓰고 있다고 한다. yolov3~4,5 등등 많은 버전이 나왔지만, 버전이 높아질수록 더 나은 버전인 것이 아니라 그저 장단점이 있을 뿐이다. 처음 yolo를 사용하는 사람은 아래 링크를 따라하면 간단하게 사용해볼 수 있다. https://pjreddie.com/darknet/yolo/ YOLO: Real-Time Object Detection YOLO: Real-Time Object Detection You only lo..

[라인개발실록] 백발 될 때까지 일하는 개발자가 되어보자

software is eating the world 테크회사가 돈을 많이 벌고 있다. 가장 중요한 것은 개발자이다. 다른 산업군과는 다르게 개발자만 있으면 시장도 창출하고 서비스를 만들 수 있는 산업이다. 즉 개발자가 많이 부족하다. 모든 업종에서 sw전문가가 필요하다. 소프트웨어 회사뿐만 아니라 전 산업에서 필요해졌다. 예전엔 혼자서 다 만들던 시절이 있었는데 이제는 그렇지 않다. 서버 개발자, 프론트, 클라우드, ios 등등 각 직군 별로 다양한 전문가가 필요하다. 즉 sw전문화로 더 다양한 직무가 필요해졌다. 개발자 수요는 계속 늘고 있는데, 그렇다면 개발자 공급을 늘리면 되지 않을까? 중간에 포기하는 사람이 많다. 즉 개발을 배우는 것이 쉽지가 않다. 성향이 갈리는 분야라고 생각한다. 또한 기업이..

개발 유튜버 2021.08.22

Smitha Kolan - Machine Learning Engineer

How I Learnt Machine Learning In 6 Steps (3 months) 가장 처음은 수학이다. 라이브러리가 있기에 상관은 없지만 어떻게 해결하는지는 알아야 한다. 수학전체를 끝내야겠다는 생각은 좋지 않다. 꾸준히 계속 수학을 공부하겠다는 생각을 하는게 맞다. 기본적인 머신러닝 알고리즘을 공부해라. 파이썬을 공부해라 머신러닝 라이브러리를 공부해라 -> 사이킷런을 공부해라 그리고 나서 딥러닝으로 이동해서 텐서플로우를 공부해라 이 둘을 아는 것이 중요하다 . 마지막은 계속해서 공부하고 반복하는 것이다. 캐글에 참여하거나 다른 사람들과 소통해라. 지루함을 참고 꾸준히 공부해라 쉬운길이 아니다. 누구나 얻을 수 있는 것이 아니다. 매일 모든 프로젝트를 해야 하는 것은 아니다. 공부를 해라. ..

개발 유튜버 2021.08.21

대한민국 대학원의 적나라한 현실 - 에스오디

돈이 없으면 우리나라에서는 대학원가서 일을 해야 한다. 근데 일을 하면 공부를 하기 어렵다. 대학원에 특별한 연줄이 없는 사람들은 교수한테 연락을 하는 우를 범한다. 이건 마케팅부서에 해당 회사 어떠냐고 물어보는 수준이다. 그 연구실의 석박학생들한테 물어보는게 훨씬 낫다. 좋은점은 딱 하나다. 연구할 수 있는 역량을 기를 수 있다. 기술을 가르쳐주거나 뭘 알려주는 곳이 아니라 스스로 새로운 이론을 만들고 증명하고 논문화할 수 있는 연구할 수 있는 기회를 주기때문에 이게 유일한 자산이다. 대학원의 역할이 뭐냐라고 했을 때 연구자들이 실패를 경험해볼 수 있는 마지막 공간이다. 단점은? 삶의 질이 낮아진다. 수입이 적고 그 나이 때의 사회적 지위보다 낮은 지위에서 살아간다. 주말에도 연구실 박혀서 커피만 마시..

개발 유튜버 2021.08.21

[Dev] GPGPU는 어디서 나온 말일까?

GPGPU는 아래와 같은 의미이다.  "GPGPU(General-Purpose computing on Graphics Processing Units, GPU 상의 범용 계산)는 일반적으로 컴퓨터 그래픽스를 위한 계산만 맡았던 그래픽 처리 장치(GPU)를, 전통적으로 중앙 처리 장치(CPU)가 맡았던 응용 프로그램들의 계산에 사용하는 기술이다. 이를 가능하게 한 것은 프로그램 가능한 층과 고정도 연산을 그래픽 파이프라인에 연결하는 것으로, 이를 통하여 소프트웨어 개발자들이 그래픽이 아닌 데이터에 스트림 프로세싱을 사용할 수 있게 된다."출처 : 위키백과 우선 위키백과에는 위와같이 나와있다.  즉 그저 gpu상에서 일반계산이라는 뜻으로 GPGPU라는 이름으로 부르고 있다.  요즘 딥러닝관련해서 간략히 소개해..

개발 정보 2021.08.21

[기술서적] 파이썬 알고리즘 인터뷰 - 박상길

이 책은 처음으로 완독한 알고리즘 관련도서이다. 처음 아무것도 모르는 시절에 알고리즘을 공부할때 doit시리즈 중에 "자료구조와 함께 배우는 알고리즘 입문 - 자바편"을 공부하다가 중간에 때려쳤던 기억이 있다. 꽤 오래전이었던 것 같은데, 최근에 다른 무엇보다 필요성을 절실히 느껴서 알고리즘 공부를 시작하게 되었다. 블로그를 탐방하면서 이곳저곳 돌아다니는 것을 좋아하는데, 몇몇 블로그에서 설명하는 글이 도저히 이해가 안되서 많은걸 느꼈던 것 같다. (이유는 알고리즘에 대한 지식이 부족해서였다.) 사실 어느정도 공부해야겠다는 생각을 하고 있었지만 여태 회피해오지 않았나라는 생각이 들었다. 서론이 길어졌고 미리 책에 대해 요약을 해주면 파이썬을 이용한 알고리즘을 제대로 가르쳐준다는 느낌이 들었다. 파이썬을 ..

[기술서적] 스프링 퀵 스타트 - 채규태

스프링을 처음 공부할 때 썼던 책인데 이제서야 리뷰를 진행한다. 이미 공부한지 1년이 지나서 스프링에 대한 기억이 가물가물하지만 책 자체에 대해서는 리뷰를 진행할 수 있을 것 같다. 설명전에 미리 요약하면 스프링 입문을 원하는 사람들에게 딱 알맞은 책이라고 할 수 있다. 우선 책은 루비페이퍼에서 발간되었다. it분야에서는 최근에 나온 책일수록 버전도 잘 맞고 실습하기에도 편리한 면이 있는데 이 책은 발간된지 시간이 꽤 흘렀음에도 실습하는데 불편함을 느끼지 못했다. (2016년에 출간되었다.) 그 이유를 생각해보았는데, 아마도 스프링의 핵심개념에 대해서만 간단명료하게 소개했기 때문이 아닐까 싶다. 버전에 추가되고 deprecate 되는 기능들이 있을 수도 있는데, 그런 개념들은 나오지 않고, 핵심만 간단하..

[김포프] 가상/증강 현실의 미래

vr은 대중성이 없다. 결과적으로 사람이 원하는건 그냥 편하게 사용하는거다. vr이 기술적으로 발전하긴했고, 분명히 용도가 있긴 하다. 군사훈련 좋다. 체험 좋다. 분명히 좋다. 문제는 그런데 이런 vr은 여태까지 있어왔다. 그런데 그때도 vr은 미래라고 얘기해왔다 지금도 똑같은 패턴이다. 왜 이러냐? 투자자들은 vr이 뭔지 잘 모른다. 근데 돈이 된다는건 안다. 문제는 게임도 이러했다. 게임이 영화산업을 대체한다고 말했다. 하지만 그렇게 못했다. 그래서 게임쪽이 침체됬고, 발전도 느려졌다. vr도 그런 길을 걸을거라고 생각한다. vr은 이미 예전에 있던거 다시 띄울려고 하는 것이다. vr보다는 ar이 미래다. ar은 실제 있는 세상을 조금 고치는 것이기에 ar은 모든 사람에게 유용성이 있다. 실제 bm..

개발 유튜버 2021.08.18

[Python3] Python에서의 False와 None은 같은 것인가?

특정 코드를 보던 중에 파라미터로 넘어온 값을 not 으로 if문에서 판별해주는 구문이 있었다. 해당 전달값이 False라면 if문을 실행하고, True라면 if문을 실행하지 말라는 뜻으로 해석했는데, 그런데 None이 들어오면 어떻게 되는거지? 라는 생각이 들었다. 물론 똑같이 None이 온다면 False일때와 같이 동작하는 것이 당연하다고 생각이 들었지만, 그렇다면 조건에서 False True 를 체크할때만 None은 False로 동작할 수 있는건가? 아니면 실제로 같이 취급되는 것인지에 대해 궁금해졌다. 따라서 간단한 코드 몇줄로 확인해볼 수 있었다. print(None == False) 우선 해당 코드는 False가 나온다. 즉 None은 False가 아니다. 아예 다른 존재다. 그렇다면 어떤 타..

[BOJ] 백준 16173 점프왕 쨀리 - 파이썬

쉬운 문제라고 생각했는데, 마지막에 가서 꽤나 고생을 한 문제이다. 어떻게 해결해야할지 전부 떠올렸고 코드까지 모두 작성했지만 사소한 실수때문에 문제가 풀리지 않았다. # 0338 import sys sys.setrecursionlimit(10**7) N = int(input()) graph = [] for i in range(N): graph.append(list(map(int, input().split()))) visited = [[False] * N for _ in range(N)] def dfs(x, y): if x= N or y= N: return False value = graph[x][y] if value == -1: print("HaruHaru") exit(0) if visited[x][y..

GIL과 Python의 미래, 성능 개선과 버전업, Python의 뒤를 이을 새로운 후보인 Go, Rust와 Julia 이어서 최후의 프로그래밍 언어

(제목에 파이썬의 뒤를 이을 언어라고 해서 파이썬이 사라지고 그 자리를 차지할 언어처럼 들릴 수 있지만 오해를 피하기 위해 정정하자면 파이썬이 근 몇년동안 보여준 성과처럼 급상승세를 거쳐 주류언어에 뛰어들 수 있는 언어라고 제목을 바꾸는 편이 낫겠지만 제목이 너무 길어져서 본문에 적었습니다.) 예전에 파이썬을 공부하면서 global interpreter lock 이라는 개념을 접한 적이 있다. 처음 이 단어를 접했을때는 파이썬만의 고유한 기능인줄 알았다. 그래서 그 당시에는 그냥 그런 개념이 있나보구나하고 넘어갔었다. 그리고 이후에 블로그들을 돌아다니면서 GIL이 자주 언급되는 것을 보고 찾아보았다. 간략히 설명하자면 Global Interpreter Lock의 약어로 파이썬 인터프리터가 한 스레드만 하..

기술 에세이 2021.08.13

[BOJ] 백준 1058 친구 - 파이썬

https://www.acmicpc.net/problem/1058 1058번: 친구 지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람 www.acmicpc.net 백준 1058문제이다. 처음에는 이 문제가 Y의 영역 중에서 가장 큰 영역을 구하라는 것으로 착각하여 dfs로 풀었다가 오답처리되었다. 문제를 깊게 읽어보지 않은 탓이다. 문제를 조금 만 더 깊게 읽어보면 답을 구할 수 있다. 문제를 잘 읽어보면 친구와의 관계에 대해 나온다. 즉 A와 친구이고, B와 친구인 C가 존재해야 한다. 라는 구문이 존재한다. 즉 한다리 건너뛰어서 친구인 사람이 있어야 된다는..

[BOJ] 백준 1012 문제 - 유기농 배추 - 파이썬

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 백준 유기농배추 문제 이다. sys.setrecurtionlimie()을 써주지 않았을때는 에러가 발생했다. RecursionError인데, 재귀말고 반목문으로 작성해봐야겠다. 만약 시간이 없어서 반복문으로 작성하지 못하였을 경우엔 sys.setrecurtionlimie()에 백만정도로 값을 세팅해주면 문제없이 돌아간다. # 0823 ~ 0858 # 백준 1012 import sys from collectio..

[Python3] 파이썬 패키지 설치 완료 후에 import 에러 발생할 경우 + could not be resolved Pylance

파이썬에서 원하는 패키지를 pip install을 통해 정상적으로 설치하였고, 성공적으로 설치하였다는 메시지도 확인했는데도 import 가 되지 않는 경우가 있다. 혹시 잘못됬나 싶어서 패키지를 지워도 보고, 다시 import문을 적어봐도 이런 경우에는 소용이 없다. 보통 pip를 해도 안되는 경우는 크게 pip버전이 안맞아서 pip를 upgrade해줘야 하는 경우, 아예 패키지명이 잘못된 경우 등이 있는데, 이 경우는 성공적으로 설치했음에도 import가 되지 않는 경우를 소개한다. 위 사진처럼 이미 잘 설치되어있음에도 from import 구문이 작동하지 않는 것이다. 바로 아래 처럼 말이다. heapdict라이브러리를 사용하기 위해 from절에 적어주었는데 노란 밑줄이 있는 것을 볼 수 있다. 살펴..

위상 정렬 (Topological Sort)의 사이클 존재 판별

위상 정렬을 공부하는 와중에 이해가 가지 않는 부분이 있는데, 긴가민가해서 정확히 눈으로 확인해보고 싶어 직접 그림으로 풀어보았다. 이해가 가지 않는 부분은 다음과 같다. 모든 원소를 방문하기 전에 큐가 빈다면 사이클이 존재한다고 판단할 수 있습니다. -> 사이클에 포함된 원소 중에서 어떠한 원소도 큐에 들어가지 못합니다. 왜 사이클에 포함된 원소는 어떤 것도 큐에 들어가지 못할까? 라는 생각이 들었는데, 머릿속으로 큐에 집어넣었다가 빼면서 하려니 중간에 실수를 할 수도 있을 것 같아서 바로 그림으로 그려보았다. 다음과 같이 사전에 준비된 그래프가 존재한다. 그리고 보면 알겠지만 (B -> D -> C -> B) 로의 사이클이 존재한다. 그럼 이제 A를 큐에 집어넣고, 간선을 삭제하면 다음과 같이 진행된..

[Dev] 데스크톱 창 관리자 GPU점유율 치솟을때 해결방법

몇달 전부터 노트북을 사용하는데, 갑자기 순간적으로 버벅이는 현상이 발견되었다. 그냥 사용중인 프로세스가 많아서 그러겠거니 라고 생각했는데, 별다른 동작을 하고 있지 않을때도 갑자기 GPU가 치솟을때가 있었다.  그래서 검색해보니 window10의 문제라고 한다. 해결법이 아주 자세하게 나와있는 링크가 있어서 아주 많은 도움을 받았다.  아래 블로그에 제시된 해결방법 중 사용한 방법을 소개하자면 다음과 같다.  https://answers.microsoft.com/ko-kr/windows/forum/all/%EA%B2%8C%EC%9E%84-%EB%98%90%EB%8A%94/a40ee4fc-13e2-4ae3-9d4c-1a366e3f2a77 게임 또는 데스크톱 창 관리자 의 그래픽(GPU) 점유율이 너무 높..

개발 정보 2021.08.03

Java vs Python3 vs C++ for coding test

아래 두 코드는 같은 문제를 자바와 파이썬으로 각각 풀어낸 것이다. (오랜만에 풀어봤다.) 이분탐색문제였는데, 이 문제 뿐만 아니라 다른 문제들도 마찬가지로 작성해야할 코드의 양에 있어서 상당한 차이를 보였다. 자신이 가장 편한 언어를 선택하라고 해서 사실 c++과 파이썬, java중 어느 것을 선택하더라도 별 반 차이가 없는 상태에서 시작했었다. 당시에는 숙련도가 모두 비슷했었다. (c++ stl의 사용법을 100프로 알고있던 상태는 아니어서 c++의 경우 숙련도가 조금은 떨어지긴 했다.) 주로 사용하는 언어가 자바여서 자바로 주로 풀이하였는데, 한 문제를 풀면서 python으로도 똑같이 풀어보는 방식으로 진행했다. 한문제를 여러언어로 바꿔서 풀어본적이 대부분이었는데, 여지껏 문제를 풀면서 느낀 점이 ..

[Java] Java의 Throwable에 대해서

1. Error클래스를 상속하는 예외 클래스 개발자가 해결할 수 없는 심각한 오류를 의미한다. 하드디스크에 물리적 오류가 생기거나, 혹은 가상머신이 오류가 발생했을 경우가 해당된다. 2. RuntimeException 클래스를 상속하는 예외 클래스 우리가 자주보는 예외클래스들이다. NPE라거나, ArrayIndexOutOfBoundsException같은 것들이 속한다. 3. Exception클래스만 상속하는 예외 클래스 가장 많은 것이 이곳에 속한다. 반드시 try catch로 잡아줘야 한다. 추가 팁: 직접정의하는 예외클래스는 모두 Exception클래스를 상속받아야만 한다.

Java 2021.07.24

[Java] Java의 가변인자? 함수에 파라미터 여러개 전달하기

파이썬에서 가변인자를 사용해서 정말 편했었는데 자바에도 이 기능이 있는지 오늘 처음알았다. 쓸일이 없어서인지 모르겠는데, 여타 다른 블로그들을 돌아다니면서도 가변인자를 쓰는 것을 한번도 못봤는데, 왜인지 모르겠다. 안쓰는 이유가 있는건지 아니면 내가 아직 많은 코드를 보지 못해서인지. 그래서 이제서야 알게된 자바 가변인자는 아주 간단하다. ... 을 사용하면 바로 사용가능하다. 바로 이런 식으로 타입뒤에 ...을 적어주면 내부에서 포이치구문으로도 처리할 수 있고, 배열처럼 사용할 수 있다. (기본적으로 배열로 처리된다고 한다. ) 생각보다 재밌는 기능들이 많네.

Java 2021.07.24
반응형