본문 바로가기

전체 글418

결국 picasso로... Glide 사용 중에 문제가 발생되서 결국에는 해결 방법을 못찾고 picasso를 사용하기로 결정.. 기존 Glide 라이브러리와 설정을 다 걷어내고, picasso를 적용했다. 아래와 같이 gradle 추가. dependencies { .... compile 'com.squareup.picasso:picasso:2.5.2'} ProGuard 추가 -dontwarn com.squareup.okhttp.** 사용법은 Glide 만큼이나 간단하다. Picasso.with(getContext()).load("image url"). error(R.mipmap.no_photo). resize(400, 400). centerInside(). into(imageView); 기존에 Glide에서 구현했었던 Circle.. 2016. 6. 23.
Glide custom cache 적용 Glide로 이미지 로딩을 잘 해나가고 있는 도중에, 간헐적으로 아래 그림과 같은 문제점이 발생했다. 스크롤을 할 경우 간헐적으로 위의 그림 처럼 이미지를 못 가져오는 것이다!! cache를 적용하고 있지 않았는데(default 캐시가 적용되고 있다고 어디서 들은 기억이 남) glide에 custom으로 캐시를 적용해 보기로 했다.MyGlideModule.java 파일을 만들어서 프로젝트에 추가했다. public class MyGlideModule implements GlideModule { private final int maxMemory = (int)(Runtime.getRuntime().maxMemory() / 1024); private final int cacheSize = maxMemory / .. 2016. 6. 21.
Facebook으로 로그인하기 이번에 개발하는 앱은 Facebook 로그인 기능을 넣어보기로 했다. Facebook 로그인 기능을 넣음으로써 사용자 분석도 해보고 싶은 욕망이 예전부터 꿈틀댔었기에... 각설하고, Facebook sdk를 어떻게 사용해서 로그인 하는지를 살펴보자. 우선 Facebook sdk를 사용하려면 Facebook 개발자 센터에 가서 등록을 해주어야 한다. Facebook 개발자 센터 우선 Facebook sdk를 사용하려면 Facebook 개발자 센터에 가서 등록을 해주어야 한다. 해당 사이트 들어가면 오른쪽 상단에 메뉴가 있고 해당 메뉴 안에 앱 추가라는 항목이 존재한다. 해당 항목을 클릭해서 추가하려는 앱 정보를 기입하면 된다. 해당 항목을 완료하면 AppID가 생성되고 이렇게 생성된 AppID를 코드에 작.. 2016. 6. 14.
Glide 사용하기 기존에는 웹 상에 있는 이미지를 가져오기 위해서 Volley의 ImageLoader를 사용했었는데 이번에는 Glide를 사용해 보기로 하였다. (하도 좋다 좋다 그래서) 아래와 같이 gradle에 glide 주소를 추가해 준다. dependencies { .... compile 'com.github.bumptech.glide:glide:3.7.0' ....} 위와 같이 작성해주고 아래 처럼 사용하면 된다. 참 간단하다. Glide.with(this).load('imageurl').into('imageview'); Glide 해당 github에 들어가보면 proguard를 설정해주는 항목도 볼 수가 있는데 이 부분도 설정 해주면 좋다.proguard-rules.pro 파일을 열고 아래와 같이 기입해주자. .. 2016. 6. 13.
[Python] pillow로 이미지 처리하기 Deep learning에서 CNN은 학습하거나 TEST 하려는 이미지의 크기가 모두 동일해야 한다. 그래서 기존 crawling한 이미지들의 크기 규격을 맞춰줘야 할 필요가 있다. 이게 단순히 crop을 하면 이미지 개체 인식에 side-effect가 발생할 여지가 있고, 또 무작정 해당 사이즈로 resizing을 하기엔 이미지 비율이 깨지는 문제가 발생했다. 이를 해결하기 위해서는 해당 비율에 맞게 해당 크기로 resizing하는 기술이 필요하다. 이를 위해 pillow라는 python package를 사용해 보기로 했다. 설치는 아래와 같이 간단하다. $> pip install pillow pillow의 설치가 완료되었으면 이제 import 해서 이미지 처리 작업을 해보자. 내가 하고자 하는 방법은.. 2016. 5. 30.
[TENSORFLOW] 텐서플로우에서의 쓰레드 TENSORFLOW는 파이썬 기반 언어라고 생각해서 그런지 멀티 쓰레드가 지원 안되는지 알았는데, 다행히도 멀티 쓰레드가 가능한 것 같다. TENSORFLOW에서의 멀티쓰레드는 동일한 Session 객체를 사용할 수 있게 해주고 병령로 ops를 동작하게 해준다. TENSORFLOW에서는 보다 원할한 멀티쓰레드 동작을 위해 두 개의 class를 제공하는데 tf.Coordinator와 tf.QueueRunner이다. 두 개의 클래스는 함께 사용되도록 디자인 되었다. Coordinator는 멀티쓰레드가 함께 종료될 수 있도록 도와주고, 예외처리를 할 수 있도록 제공하고 있다. QueueRunner는 동일한 큐안에서 tensor가 동작할 수 있도록 쓰레드를 생성하는데 도움을 준다. Coordinator - sh.. 2016. 5. 20.
[TENSORFLOW] TensorFlow Mechanics 101 지난 번에 레이어 없는 MNIST를 구현 하였다면 이번에는 Hidden Layer가 있는 MNIST를 구현해 보는 코스이다. 소스는 아래와 같다. 코드가 지난 번 보다는 복잡하다. 우선 MNIST 데이터를 가져오기 위한 input_data.py는 /root/work/deep/code/01_mnist_beginning에 있다고 가정하고 위와 같이 sys.path.append를 정의해 주었다. 실행 순서대로 코드를 분석해 보자면, 우선 run_training을 통해 실제 mnist 데이터를 training하고 test를 진행해 볼수 있다. run_training 함수를 살펴보자. data_sets = input_data.read_data_sets("MNIST_data/", False) 위의 함수를 통해 mn.. 2016. 5. 3.
[TENSORFLOW] 버전 확인 및 업데이트 하기 Tensor Flow의 MNIST 튜토리얼 진행 중 막히는 부분이 있어 찾아보는 도중 tensorflow update를 진행하라는 게시글을 목격했다. '내가 깐 Tensor Flow 버전이 머지?' 라는 생각이 갑자기 들며, -v 옵션을 주거나, help를 쳐봐도 버전 정보를 보는 어떤 방법도 없길래 주변 지인에게 물어봤더니, 그냥 freeze로 확인하면 된다고 한다. (-_-) $> pip freeze 이렇게 하면 pip로 깔린 모든 패키지의 버전 리스트가 나타나고, 당연히 tensorflow의 버전도 확인이 가능하다. 내친김에 업데이트도 진행하기로 결심! $> pip uninstall tensorflow$> pip install --upgrade https://storage.googleapis.com.. 2016. 4. 28.
맥에서 docker daemon start stop 하기 맥에서는 docker를 각각의 virtual machine으로 띄우고 있다. 그래서 docker daemon이란 개념보다는 docker virtual machine이라는 개념이 더 명확하다. 맥에서 docker를 재시작 하고 싶다면 해당하는 virtual machine을 재시작 하면 된다. docker virtual machine 리스트 확인하기 $> docker-machine ls docker stop 하기 $> docker-machine stop [machine-name] docker start 하기 $> docker-machine start [machine-name] 2016. 4. 27.